spdx_tools.spdx.parser.rdf.relationship_parser
1# SPDX-FileCopyrightText: 2023 spdx contributors 2# 3# SPDX-License-Identifier: Apache-2.0 4from rdflib import RDFS, Graph, URIRef 5from rdflib.term import Node 6 7from spdx_tools.spdx.model import Relationship, RelationshipType 8from spdx_tools.spdx.parser.logger import Logger 9from spdx_tools.spdx.parser.parsing_functions import ( 10 construct_or_raise_parsing_error, 11 raise_parsing_error_if_logger_has_messages, 12) 13from spdx_tools.spdx.parser.rdf.graph_parsing_functions import ( 14 parse_enum_value, 15 parse_literal, 16 parse_literal_or_no_assertion_or_none, 17 parse_spdx_id, 18) 19from spdx_tools.spdx.rdfschema.namespace import SPDX_NAMESPACE 20 21 22def parse_relationship(relationship_node: Node, graph: Graph, parent_node: URIRef, doc_namespace: str) -> Relationship: 23 logger = Logger() 24 spdx_element_id = parse_spdx_id(parent_node, doc_namespace, graph) 25 26 relationship_type = parse_literal( 27 logger, 28 graph, 29 relationship_node, 30 SPDX_NAMESPACE.relationshipType, 31 parsing_method=lambda x: parse_enum_value(x, RelationshipType, SPDX_NAMESPACE.relationshipType_), 32 ) 33 related_spdx_element = parse_literal_or_no_assertion_or_none( 34 logger, 35 graph, 36 relationship_node, 37 SPDX_NAMESPACE.relatedSpdxElement, 38 parsing_method=lambda x: parse_spdx_id(x, doc_namespace, graph), 39 ) 40 41 comment = parse_literal(logger, graph, relationship_node, RDFS.comment) 42 raise_parsing_error_if_logger_has_messages(logger, "Relationship") 43 relationship = construct_or_raise_parsing_error( 44 Relationship, 45 dict( 46 spdx_element_id=spdx_element_id, 47 relationship_type=relationship_type, 48 related_spdx_element_id=related_spdx_element, 49 comment=comment, 50 ), 51 ) 52 53 return relationship 54 55 56def parse_implicit_relationship( 57 spdx_element_node: URIRef, 58 relationship_type: RelationshipType, 59 related_spdx_element_node: URIRef, 60 graph: Graph, 61 doc_namespace: str, 62) -> Relationship: 63 spdx_element_id = parse_spdx_id(spdx_element_node, doc_namespace, graph) 64 related_spdx_element_id = parse_spdx_id(related_spdx_element_node, doc_namespace, graph) 65 relationship = construct_or_raise_parsing_error( 66 Relationship, 67 dict( 68 spdx_element_id=spdx_element_id, 69 relationship_type=relationship_type, 70 related_spdx_element_id=related_spdx_element_id, 71 ), 72 ) 73 return relationship
def
parse_relationship( relationship_node: rdflib.term.Node, graph: rdflib.graph.Graph, parent_node: rdflib.term.URIRef, doc_namespace: str) -> spdx_tools.spdx.model.relationship.Relationship:
23def parse_relationship(relationship_node: Node, graph: Graph, parent_node: URIRef, doc_namespace: str) -> Relationship: 24 logger = Logger() 25 spdx_element_id = parse_spdx_id(parent_node, doc_namespace, graph) 26 27 relationship_type = parse_literal( 28 logger, 29 graph, 30 relationship_node, 31 SPDX_NAMESPACE.relationshipType, 32 parsing_method=lambda x: parse_enum_value(x, RelationshipType, SPDX_NAMESPACE.relationshipType_), 33 ) 34 related_spdx_element = parse_literal_or_no_assertion_or_none( 35 logger, 36 graph, 37 relationship_node, 38 SPDX_NAMESPACE.relatedSpdxElement, 39 parsing_method=lambda x: parse_spdx_id(x, doc_namespace, graph), 40 ) 41 42 comment = parse_literal(logger, graph, relationship_node, RDFS.comment) 43 raise_parsing_error_if_logger_has_messages(logger, "Relationship") 44 relationship = construct_or_raise_parsing_error( 45 Relationship, 46 dict( 47 spdx_element_id=spdx_element_id, 48 relationship_type=relationship_type, 49 related_spdx_element_id=related_spdx_element, 50 comment=comment, 51 ), 52 ) 53 54 return relationship
def
parse_implicit_relationship( spdx_element_node: rdflib.term.URIRef, relationship_type: spdx_tools.spdx.model.relationship.RelationshipType, related_spdx_element_node: rdflib.term.URIRef, graph: rdflib.graph.Graph, doc_namespace: str) -> spdx_tools.spdx.model.relationship.Relationship:
57def parse_implicit_relationship( 58 spdx_element_node: URIRef, 59 relationship_type: RelationshipType, 60 related_spdx_element_node: URIRef, 61 graph: Graph, 62 doc_namespace: str, 63) -> Relationship: 64 spdx_element_id = parse_spdx_id(spdx_element_node, doc_namespace, graph) 65 related_spdx_element_id = parse_spdx_id(related_spdx_element_node, doc_namespace, graph) 66 relationship = construct_or_raise_parsing_error( 67 Relationship, 68 dict( 69 spdx_element_id=spdx_element_id, 70 relationship_type=relationship_type, 71 related_spdx_element_id=related_spdx_element_id, 72 ), 73 ) 74 return relationship