spdx_tools.spdx.writer.rdf.annotation_writer
1# SPDX-FileCopyrightText: 2023 spdx contributors 2# 3# SPDX-License-Identifier: Apache-2.0 4from beartype.typing import Dict 5from rdflib import RDF, RDFS, BNode, Graph, Literal, URIRef 6 7from spdx_tools.spdx.casing_tools import snake_case_to_camel_case 8from spdx_tools.spdx.datetime_conversions import datetime_to_iso_string 9from spdx_tools.spdx.model import Annotation 10from spdx_tools.spdx.rdfschema.namespace import SPDX_NAMESPACE 11from spdx_tools.spdx.writer.rdf.writer_utils import add_namespace_to_spdx_id 12 13 14def add_annotation_to_graph( 15 annotation: Annotation, graph: Graph, doc_namespace: str, external_doc_ref_to_namespace: Dict[str, str] 16): 17 annotation_resource = URIRef( 18 add_namespace_to_spdx_id(annotation.spdx_id, doc_namespace, external_doc_ref_to_namespace) 19 ) 20 annotation_node = BNode() 21 graph.add((annotation_node, RDF.type, SPDX_NAMESPACE.Annotation)) 22 graph.add( 23 ( 24 annotation_node, 25 SPDX_NAMESPACE.annotationType, 26 SPDX_NAMESPACE[f"annotationType_{snake_case_to_camel_case(annotation.annotation_type.name)}"], 27 ) 28 ) 29 graph.add((annotation_node, SPDX_NAMESPACE.annotator, Literal(annotation.annotator.to_serialized_string()))) 30 graph.add( 31 (annotation_node, SPDX_NAMESPACE.annotationDate, Literal(datetime_to_iso_string(annotation.annotation_date))) 32 ) 33 graph.add((annotation_node, RDFS.comment, Literal(annotation.annotation_comment))) 34 35 graph.add((annotation_resource, SPDX_NAMESPACE.annotation, annotation_node))
def
add_annotation_to_graph( annotation: spdx_tools.spdx.model.annotation.Annotation, graph: rdflib.graph.Graph, doc_namespace: str, external_doc_ref_to_namespace: dict[str, str]):
15def add_annotation_to_graph( 16 annotation: Annotation, graph: Graph, doc_namespace: str, external_doc_ref_to_namespace: Dict[str, str] 17): 18 annotation_resource = URIRef( 19 add_namespace_to_spdx_id(annotation.spdx_id, doc_namespace, external_doc_ref_to_namespace) 20 ) 21 annotation_node = BNode() 22 graph.add((annotation_node, RDF.type, SPDX_NAMESPACE.Annotation)) 23 graph.add( 24 ( 25 annotation_node, 26 SPDX_NAMESPACE.annotationType, 27 SPDX_NAMESPACE[f"annotationType_{snake_case_to_camel_case(annotation.annotation_type.name)}"], 28 ) 29 ) 30 graph.add((annotation_node, SPDX_NAMESPACE.annotator, Literal(annotation.annotator.to_serialized_string()))) 31 graph.add( 32 (annotation_node, SPDX_NAMESPACE.annotationDate, Literal(datetime_to_iso_string(annotation.annotation_date))) 33 ) 34 graph.add((annotation_node, RDFS.comment, Literal(annotation.annotation_comment))) 35 36 graph.add((annotation_resource, SPDX_NAMESPACE.annotation, annotation_node))