aboutsummaryrefslogtreecommitdiff
path: root/rdfloader/parser2v2/parse_relationship.go
diff options
context:
space:
mode:
Diffstat (limited to 'rdfloader/parser2v2/parse_relationship.go')
-rw-r--r--rdfloader/parser2v2/parse_relationship.go26
1 files changed, 16 insertions, 10 deletions
diff --git a/rdfloader/parser2v2/parse_relationship.go b/rdfloader/parser2v2/parse_relationship.go
index b51105b..b4c4704 100644
--- a/rdfloader/parser2v2/parse_relationship.go
+++ b/rdfloader/parser2v2/parse_relationship.go
@@ -26,7 +26,7 @@ func (parser *rdfParser2_2) parseRelationship(triple *gordfParser.Triple) (err e
switch subTriple.Predicate.ID {
case SPDX_RELATIONSHIP_TYPE:
// cardinality: exactly 1
- reln.Relationship, err = getRelationshipType(subTriple.Object.ID)
+ reln.Relationship, err = getRelationshipTypeFromURI(subTriple.Object.ID)
case RDF_TYPE:
// cardinality: exactly 1
continue
@@ -57,6 +57,9 @@ func (parser *rdfParser2_2) parseRelationship(triple *gordfParser.Triple) (err e
default:
return fmt.Errorf("unexpected predicate id: %s", subTriple.Predicate.ID)
}
+ if err != nil {
+ return err
+ }
}
parser.doc.Relationships = append(parser.doc.Relationships, &reln)
return nil
@@ -102,6 +105,8 @@ func (parser *rdfParser2_2) parseRelatedElementFromTriple(reln spdx.Relationship
return nil
}
+
+// references like RefA and RefB of any relationship
func getReferenceFromURI(uri string) (spdx.DocElementID, error) {
fragment := getLastPartOfURI(uri)
switch strings.ToLower(strings.TrimSpace(fragment)) {
@@ -114,18 +119,19 @@ func getReferenceFromURI(uri string) (spdx.DocElementID, error) {
return ExtractDocElementID(fragment)
}
-func getRelationshipType(relnType string) (string, error) {
- relnType = strings.TrimSpace(relnType)
- if !strings.HasPrefix(relnType, PREFIX_RELATIONSHIP_TYPE) {
- return "", fmt.Errorf("relationshipType must start with %s. found %s", PREFIX_RELATIONSHIP_TYPE, relnType)
+func getRelationshipTypeFromURI(relnTypeURI string) (string, error) {
+ relnTypeURI = strings.TrimSpace(relnTypeURI)
+ lastPart := getLastPartOfURI(relnTypeURI)
+ if !strings.HasPrefix(lastPart, PREFIX_RELATIONSHIP_TYPE) {
+ return "", fmt.Errorf("relationshipType must start with %s. found %s", PREFIX_RELATIONSHIP_TYPE, lastPart)
}
- relnType = strings.TrimPrefix(relnType, PREFIX_RELATIONSHIP_TYPE)
+ lastPart = strings.TrimPrefix(lastPart, PREFIX_RELATIONSHIP_TYPE)
- relnType = strings.TrimSpace(relnType)
+ lastPart = strings.TrimSpace(lastPart)
for _, validRelationshipType := range AllRelationshipTypes() {
- if relnType == validRelationshipType {
- return relnType, nil
+ if lastPart == validRelationshipType {
+ return lastPart, nil
}
}
- return "", fmt.Errorf("unknown relationshipType: %s", relnType)
+ return "", fmt.Errorf("unknown relationshipType: '%s'", lastPart)
}