4
4
from typing import Optional
5
5
6
6
from rdflib import DOAP , RDFS , Graph , URIRef
7
+ from rdflib .term import BNode
7
8
8
9
from spdx .datetime_conversions import datetime_from_str
9
10
from spdx .model .package import (
18
19
from spdx .parser .parsing_functions import construct_or_raise_parsing_error , raise_parsing_error_if_logger_has_messages
19
20
from spdx .parser .rdf .checksum_parser import parse_checksum
20
21
from spdx .parser .rdf .graph_parsing_functions import (
22
+ get_correctly_typed_triples ,
21
23
get_correctly_typed_value ,
24
+ get_value_from_graph ,
22
25
parse_enum_value ,
23
26
parse_literal ,
24
27
parse_literal_or_no_assertion_or_none ,
@@ -36,7 +39,7 @@ def parse_package(package_node: URIRef, graph: Graph, doc_namespace: str) -> Pac
36
39
logger , graph , package_node , SPDX_NAMESPACE .downloadLocation
37
40
)
38
41
checksums = []
39
- for _ , _ , checksum_node in graph . triples (( package_node , SPDX_NAMESPACE .checksum , None ) ):
42
+ for _ , _ , checksum_node in get_correctly_typed_triples ( logger , graph , package_node , SPDX_NAMESPACE .checksum ):
40
43
checksums .append (parse_checksum (checksum_node , graph ))
41
44
42
45
version_info = parse_literal (logger , graph , package_node , SPDX_NAMESPACE .versionInfo )
@@ -57,28 +60,34 @@ def parse_package(package_node: URIRef, graph: Graph, doc_namespace: str) -> Pac
57
60
)
58
61
59
62
external_package_refs = []
60
- for _ , _ , external_package_ref_node in graph .triples ((package_node , SPDX_NAMESPACE .externalRef , None )):
63
+ for _ , _ , external_package_ref_node in get_correctly_typed_triples (
64
+ logger , graph , package_node , SPDX_NAMESPACE .externalRef
65
+ ):
61
66
external_package_refs .append (parse_external_package_ref (external_package_ref_node , graph , doc_namespace ))
62
- files_analyzed = bool (graph .value (package_node , SPDX_NAMESPACE .filesAnalyzed , default = True ))
67
+ files_analyzed = bool (
68
+ get_value_from_graph (logger , graph , package_node , SPDX_NAMESPACE .filesAnalyzed , default = True )
69
+ )
63
70
license_concluded = parse_literal_or_no_assertion_or_none (
64
71
logger ,
65
72
graph ,
66
73
package_node ,
67
74
SPDX_NAMESPACE .licenseConcluded ,
68
- parsing_method = lambda x : parse_license_expression (x , graph , doc_namespace ),
75
+ parsing_method = lambda x : parse_license_expression (x , graph , doc_namespace , logger ),
69
76
)
70
77
license_declared = parse_literal_or_no_assertion_or_none (
71
78
logger ,
72
79
graph ,
73
80
package_node ,
74
81
SPDX_NAMESPACE .licenseDeclared ,
75
- parsing_method = lambda x : parse_license_expression (x , graph , doc_namespace ),
82
+ parsing_method = lambda x : parse_license_expression (x , graph , doc_namespace , logger ),
76
83
)
77
84
license_info_from_files = []
78
85
for _ , _ , license_info_from_files_node in graph .triples ((package_node , SPDX_NAMESPACE .licenseInfoFromFiles , None )):
79
86
license_info_from_files .append (
80
87
get_correctly_typed_value (
81
- logger , license_info_from_files_node , lambda x : parse_license_expression (x , graph , doc_namespace )
88
+ logger ,
89
+ license_info_from_files_node ,
90
+ lambda x : parse_license_expression (x , graph , doc_namespace , logger ),
82
91
)
83
92
)
84
93
license_comment = parse_literal (logger , graph , package_node , SPDX_NAMESPACE .licenseComments )
@@ -161,7 +170,7 @@ def parse_package_verification_code(
161
170
return package_verification_code
162
171
163
172
164
- def parse_external_package_ref (external_package_ref_node : URIRef , graph : Graph , doc_namespace ) -> ExternalPackageRef :
173
+ def parse_external_package_ref (external_package_ref_node : BNode , graph : Graph , doc_namespace ) -> ExternalPackageRef :
165
174
logger = Logger ()
166
175
ref_locator = parse_literal (logger , graph , external_package_ref_node , SPDX_NAMESPACE .referenceLocator )
167
176
ref_category = parse_literal (
0 commit comments