Skip to content

Commit 8da3a32

Browse files
committed
[issue-547] rdf parser: use licenseID from extracted licensing info URIRef if no licenseId node is provided
Signed-off-by: Meret Behrens <[email protected]>
1 parent bde2774 commit 8da3a32

File tree

6 files changed

+4225
-11
lines changed

6 files changed

+4225
-11
lines changed

src/spdx/parser/rdf/extracted_licensing_info_parser.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,18 @@
1010
from spdx.rdfschema.namespace import SPDX_NAMESPACE
1111

1212

13-
def parse_extracted_licensing_info(extracted_licensing_info_node: URIRef, graph: Graph) -> ExtractedLicensingInfo:
13+
def parse_extracted_licensing_info(
14+
extracted_licensing_info_node: URIRef, graph: Graph, doc_namespace: str
15+
) -> ExtractedLicensingInfo:
1416
logger = Logger()
1517
license_id = parse_literal(logger, graph, extracted_licensing_info_node, SPDX_NAMESPACE.licenseId)
18+
if not license_id:
19+
license_id = (
20+
extracted_licensing_info_node.fragment
21+
if extracted_licensing_info_node.startswith(f"{doc_namespace}#")
22+
else extracted_licensing_info_node.toPython()
23+
)
24+
1625
extracted_text = parse_literal(logger, graph, extracted_licensing_info_node, SPDX_NAMESPACE.extractedText)
1726
comment = parse_literal(logger, graph, extracted_licensing_info_node, RDFS.comment)
1827
license_name = parse_literal_or_no_assertion_or_none(

src/spdx/parser/rdf/rdf_parser.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ def translate_graph_to_document(graph: Graph) -> Document:
6565
extracted_licensing_infos = []
6666
for _, _, extracted_licensing_info_node in graph.triples((None, SPDX_NAMESPACE.hasExtractedLicensingInfo, None)):
6767
try:
68-
extracted_licensing_infos.append(parse_extracted_licensing_info(extracted_licensing_info_node, graph))
68+
extracted_licensing_infos.append(
69+
parse_extracted_licensing_info(extracted_licensing_info_node, graph, creation_info.document_namespace)
70+
)
6971
except SPDXParsingError as err:
7072
logger.extend(err.get_messages())
7173
parsed_fields["extracted_licensing_info"] = extracted_licensing_infos

0 commit comments

Comments
 (0)