spdx_tools.spdx.writer.rdf.creation_info_writer

 1# SPDX-FileCopyrightText: 2023 spdx contributors
 2#
 3# SPDX-License-Identifier: Apache-2.0
 4from rdflib import RDF, RDFS, BNode, Graph, Literal, URIRef
 5
 6from spdx_tools.spdx.datetime_conversions import datetime_to_iso_string
 7from spdx_tools.spdx.model import CreationInfo
 8from spdx_tools.spdx.rdfschema.namespace import LICENSE_NAMESPACE, SPDX_NAMESPACE
 9from spdx_tools.spdx.writer.rdf.external_document_ref_writer import add_external_document_ref_to_graph
10from spdx_tools.spdx.writer.rdf.writer_utils import add_optional_literal
11
12
13def add_creation_info_to_graph(creation_info: CreationInfo, graph: Graph):
14    doc_node = URIRef(f"{creation_info.document_namespace}#{creation_info.spdx_id}")
15    graph.add((doc_node, RDF.type, SPDX_NAMESPACE.SpdxDocument))
16    graph.add((doc_node, SPDX_NAMESPACE.specVersion, Literal(creation_info.spdx_version)))
17    graph.add((doc_node, SPDX_NAMESPACE.dataLicense, LICENSE_NAMESPACE[creation_info.data_license]))
18    graph.add((doc_node, SPDX_NAMESPACE.name, Literal(creation_info.name)))
19    add_optional_literal(creation_info.document_comment, graph, doc_node, RDFS.comment)
20
21    creation_info_node = BNode()
22    graph.add((creation_info_node, RDF.type, SPDX_NAMESPACE.CreationInfo))
23
24    graph.add((creation_info_node, SPDX_NAMESPACE.created, Literal(datetime_to_iso_string(creation_info.created))))
25
26    for creator in creation_info.creators:
27        graph.add((creation_info_node, SPDX_NAMESPACE.creator, Literal(creator.to_serialized_string())))
28
29    add_optional_literal(
30        creation_info.license_list_version, graph, creation_info_node, SPDX_NAMESPACE.licenseListVersion
31    )
32    add_optional_literal(creation_info.creator_comment, graph, creation_info_node, RDFS.comment)
33
34    graph.add((doc_node, SPDX_NAMESPACE.creationInfo, creation_info_node))
35
36    for external_document_ref in creation_info.external_document_refs:
37        add_external_document_ref_to_graph(external_document_ref, graph, doc_node, creation_info.document_namespace)
38
39    return doc_node
def add_creation_info_to_graph( creation_info: spdx_tools.spdx.model.document.CreationInfo, graph: rdflib.graph.Graph):
14def add_creation_info_to_graph(creation_info: CreationInfo, graph: Graph):
15    doc_node = URIRef(f"{creation_info.document_namespace}#{creation_info.spdx_id}")
16    graph.add((doc_node, RDF.type, SPDX_NAMESPACE.SpdxDocument))
17    graph.add((doc_node, SPDX_NAMESPACE.specVersion, Literal(creation_info.spdx_version)))
18    graph.add((doc_node, SPDX_NAMESPACE.dataLicense, LICENSE_NAMESPACE[creation_info.data_license]))
19    graph.add((doc_node, SPDX_NAMESPACE.name, Literal(creation_info.name)))
20    add_optional_literal(creation_info.document_comment, graph, doc_node, RDFS.comment)
21
22    creation_info_node = BNode()
23    graph.add((creation_info_node, RDF.type, SPDX_NAMESPACE.CreationInfo))
24
25    graph.add((creation_info_node, SPDX_NAMESPACE.created, Literal(datetime_to_iso_string(creation_info.created))))
26
27    for creator in creation_info.creators:
28        graph.add((creation_info_node, SPDX_NAMESPACE.creator, Literal(creator.to_serialized_string())))
29
30    add_optional_literal(
31        creation_info.license_list_version, graph, creation_info_node, SPDX_NAMESPACE.licenseListVersion
32    )
33    add_optional_literal(creation_info.creator_comment, graph, creation_info_node, RDFS.comment)
34
35    graph.add((doc_node, SPDX_NAMESPACE.creationInfo, creation_info_node))
36
37    for external_document_ref in creation_info.external_document_refs:
38        add_external_document_ref_to_graph(external_document_ref, graph, doc_node, creation_info.document_namespace)
39
40    return doc_node