spdx_tools.spdx.parser.rdf.annotation_parser
1# SPDX-FileCopyrightText: 2023 spdx contributors 2# 3# SPDX-License-Identifier: Apache-2.0 4from rdflib import RDFS, BNode, Graph, URIRef 5 6from spdx_tools.spdx.datetime_conversions import datetime_from_str 7from spdx_tools.spdx.model import Annotation, AnnotationType 8from spdx_tools.spdx.parser.actor_parser import ActorParser 9from spdx_tools.spdx.parser.logger import Logger 10from spdx_tools.spdx.parser.parsing_functions import ( 11 construct_or_raise_parsing_error, 12 raise_parsing_error_if_logger_has_messages, 13) 14from spdx_tools.spdx.parser.rdf.graph_parsing_functions import parse_enum_value, parse_literal, parse_spdx_id 15from spdx_tools.spdx.rdfschema.namespace import SPDX_NAMESPACE 16 17 18def parse_annotation(annotation_node: BNode, graph: Graph, parent_node: URIRef, doc_namespace: str) -> Annotation: 19 logger = Logger() 20 spdx_id = parse_spdx_id(parent_node, doc_namespace, graph) 21 annotator = parse_literal( 22 logger, graph, annotation_node, SPDX_NAMESPACE.annotator, parsing_method=ActorParser.parse_actor 23 ) 24 annotation_type = parse_literal( 25 logger, 26 graph, 27 annotation_node, 28 SPDX_NAMESPACE.annotationType, 29 parsing_method=lambda x: parse_enum_value(x, AnnotationType, SPDX_NAMESPACE.annotationType_), 30 ) 31 annotation_date = parse_literal( 32 logger, graph, annotation_node, SPDX_NAMESPACE.annotationDate, parsing_method=datetime_from_str 33 ) 34 annotation_comment = parse_literal(logger, graph, annotation_node, RDFS.comment) 35 36 raise_parsing_error_if_logger_has_messages(logger, "Annotation") 37 annotation = construct_or_raise_parsing_error( 38 Annotation, 39 dict( 40 spdx_id=spdx_id, 41 annotation_type=annotation_type, 42 annotator=annotator, 43 annotation_date=annotation_date, 44 annotation_comment=annotation_comment, 45 ), 46 ) 47 48 return annotation
def
parse_annotation( annotation_node: rdflib.term.BNode, graph: rdflib.graph.Graph, parent_node: rdflib.term.URIRef, doc_namespace: str) -> spdx_tools.spdx.model.annotation.Annotation:
19def parse_annotation(annotation_node: BNode, graph: Graph, parent_node: URIRef, doc_namespace: str) -> Annotation: 20 logger = Logger() 21 spdx_id = parse_spdx_id(parent_node, doc_namespace, graph) 22 annotator = parse_literal( 23 logger, graph, annotation_node, SPDX_NAMESPACE.annotator, parsing_method=ActorParser.parse_actor 24 ) 25 annotation_type = parse_literal( 26 logger, 27 graph, 28 annotation_node, 29 SPDX_NAMESPACE.annotationType, 30 parsing_method=lambda x: parse_enum_value(x, AnnotationType, SPDX_NAMESPACE.annotationType_), 31 ) 32 annotation_date = parse_literal( 33 logger, graph, annotation_node, SPDX_NAMESPACE.annotationDate, parsing_method=datetime_from_str 34 ) 35 annotation_comment = parse_literal(logger, graph, annotation_node, RDFS.comment) 36 37 raise_parsing_error_if_logger_has_messages(logger, "Annotation") 38 annotation = construct_or_raise_parsing_error( 39 Annotation, 40 dict( 41 spdx_id=spdx_id, 42 annotation_type=annotation_type, 43 annotator=annotator, 44 annotation_date=annotation_date, 45 annotation_comment=annotation_comment, 46 ), 47 ) 48 49 return annotation