Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Making prefix mapping less strict, fixes #702 #761

Merged
merged 10 commits into from
Jun 5, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/oaklib/interfaces/basic_ontology_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ def converter(self) -> curies.Converter:
:return: A converter
"""
if self._converter is None:
self._converter = curies.Converter.from_prefix_map(self.prefix_map())
self._converter = curies.Converter.from_prefix_map(self.prefix_map(), strict=False)
return self._converter

def set_metamodel_mappings(self, mappings: Union[str, Path, List[Mapping]]) -> None:
Expand Down
17 changes: 17 additions & 0 deletions tests/input/metadata-map-prefixes-test.obo
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
format-version: 1.2
ontology: test.obo
idspace: dc http://purl.org/dc/elements/1.1/
idspace: oboInOwl http://www.geneontology.org/formats/oboInOwl#
idspace: owl http://www.w3.org/2002/07/owl#
idspace: rdf http://www.w3.org/1999/02/22-rdf-syntax-ns#
idspace: rdfs http://www.w3.org/2000/01/rdf-schema#
idspace: terms http://purl.org/dc/terms/
idspace: xml http://www.w3.org/XML/1998/namespace
idspace: xsd http://www.w3.org/2001/XMLSchema#
idspace: HP http://purl.obolibrary.org/obo/HP_

[Term]
id: HP:0000001
name: All
def: "." [PMID:1]

61 changes: 61 additions & 0 deletions tests/input/obo-compliance.obo
Original file line number Diff line number Diff line change
Expand Up @@ -565,6 +565,53 @@ idspace: Y http://example.org/Y/
id: X:1
created_by: Y:1

!! name: prefixes-conflict-oio
!! description: tests conflicting prefixes/contractions for oboInOwl namespace, where oio might be built-in
!! unstable: true
!! seeAlso: https://github.com/INCATools/ontology-access-kit/issues/760
idspace: oboInOwl http://www.geneontology.org/formats/oboInOwl#

[Term]
id: X:1
name: X:1
def: "." []

!! name: prefixes-conflict-skos
!! description: tests conflicting prefixes for the SKOS namespace
!! unstable: true
!! seeAlso: https://github.com/INCATools/ontology-access-kit/issues/760
idspace: skos http://example.org/not-skos/

[Term]
id: X:1
property_value: skos:exactMatch Y:1

[Typedef]
id: skos:exactMatch
is_metadata_tag: true

!! name: prefixes-conflict-main-idspace
!! description: tests conflicting prefixes for the main ID space
!! invalid: true
!! seeAlso: https://github.com/INCATools/ontology-access-kit/issues/760
idspace: X http://example.org/X/
idspace: FAKEX http://example.org/X/

[Term]
id: X:1
name: X:1

!! name: expansion-conflict-main-idspace
!! description: tests conflicting expansions for the main ID space
!! invalid: true
!! seeAlso: https://github.com/INCATools/ontology-access-kit/issues/760
idspace: X http://example.org/X/
idspace: X http://example.org/FAKEX/

[Term]
id: X:1
name: X:1

!! # #########
!! # Headers
!! # #########
Expand Down Expand Up @@ -658,6 +705,20 @@ subset: S {source="PMID:123464"}
id: X:1
disjoint_from: X:2 {source="PMID:123465"}

!! name: gci-relation
!! description: General Class Inclusion relation

[Term]
id: X:1
relationship: R:1 X:2 {gci_predicate="R:2", gci_filler="X:3"}

!! name: gci-is-a
!! description: General Class Inclusion is_a

[Term]
id: X:1
is_a: X:2 {gci_predicate="R:2", gci_filler="X:3"}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn’t that be gci_relation instead of gci_predicate? I don’t think I have ever seen that gci_predicate qualifier, and the OBO spec does not mention it at all.


!! name: created_by-annotated
!! description: Metadata for creator with annotation

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
name: expansion-conflict-main-idspace
name: expansion-conflict-main-idspace
description: tests conflicting expansions for the main ID space
invalid: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
format-version: 1.4
ontology: expansion-conflict-main-idspace
idspace: X http://example.org/X/
idspace: X http://example.org/FAKEX/

[Term]
id: X:1
name: X:1


31 changes: 31 additions & 0 deletions tests/input/obo-compliance/gci-is-a/gci-is-a.expected.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"graphs" : [ {
"id" : "http://purl.obolibrary.org/obo/gci-is-a.owl",
"meta" : {
"basicPropertyValues" : [ {
"pred" : "http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion",
"val" : "1.4"
} ]
},
"nodes" : [ {
"id" : "http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion",
"lbl" : "has_obo_format_version",
"type" : "PROPERTY"
}, {
"id" : "http://www.geneontology.org/formats/oboInOwl#id",
"lbl" : "id",
"type" : "PROPERTY"
} ],
"edges" : [ {
"sub" : "http://purl.obolibrary.org/obo/X_1",
"pred" : "is_a",
"obj" : "http://purl.obolibrary.org/obo/X_2",
"meta" : {
"basicPropertyValues" : [ {
"pred" : "http://www.geneontology.org/formats/oboInOwl#gci_predicate",
"val" : "R:2"
} ]
}
} ]
} ]
}
7 changes: 7 additions & 0 deletions tests/input/obo-compliance/gci-is-a/gci-is-a.expected.obo
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
format-version: 1.2
ontology: gci-is-a

[Term]
id: X:1
is_a: X:2 {gci_predicate="R:2"}

41 changes: 41 additions & 0 deletions tests/input/obo-compliance/gci-is-a/gci-is-a.expected.ofn
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
Prefix(:=<http://purl.obolibrary.org/obo/gci-is-a.owl#>)
Prefix(owl:=<http://www.w3.org/2002/07/owl#>)
Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)
Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)
Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)


Ontology(<http://purl.obolibrary.org/obo/gci-is-a.owl>
Annotation(<http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion> "1.4")

Declaration(Class(<http://purl.obolibrary.org/obo/X_1>))
Declaration(Class(<http://purl.obolibrary.org/obo/X_2>))
Declaration(AnnotationProperty(<http://www.geneontology.org/formats/oboInOwl#gci_predicate>))
Declaration(AnnotationProperty(<http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion>))
Declaration(AnnotationProperty(<http://www.geneontology.org/formats/oboInOwl#id>))
############################
# Annotation Properties
############################

# Annotation Property: <http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion> (has_obo_format_version)

AnnotationAssertion(rdfs:label <http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion> "has_obo_format_version")

# Annotation Property: <http://www.geneontology.org/formats/oboInOwl#id> (id)

AnnotationAssertion(rdfs:label <http://www.geneontology.org/formats/oboInOwl#id> "id")



############################
# Classes
############################

# Class: <http://purl.obolibrary.org/obo/X_1> (<http://purl.obolibrary.org/obo/X_1>)

AnnotationAssertion(<http://www.geneontology.org/formats/oboInOwl#id> <http://purl.obolibrary.org/obo/X_1> "X:1")
SubClassOf(Annotation(<http://www.geneontology.org/formats/oboInOwl#gci_predicate> "R:2") <http://purl.obolibrary.org/obo/X_1> <http://purl.obolibrary.org/obo/X_2>)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this expected? Should it be R:2 some X:2 subClassOf X:1?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is because the input file is using the wrong qualifier (see my other comment below).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch.

The main issue with this suite (as I mentioned here #751) is that it's self-bootstrapping there is a one-off TestByGuru run where both inputs and outputs need carefully checked against the spec.



)
83 changes: 83 additions & 0 deletions tests/input/obo-compliance/gci-is-a/gci-is-a.expected.owl
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<?xml version="1.0"?>
<rdf:RDF xmlns="http://purl.obolibrary.org/obo/gci-is-a.owl#"
xml:base="http://purl.obolibrary.org/obo/gci-is-a.owl"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:oboInOwl="http://www.geneontology.org/formats/oboInOwl#">
<owl:Ontology rdf:about="http://purl.obolibrary.org/obo/gci-is-a.owl">
<oboInOwl:hasOBOFormatVersion>1.4</oboInOwl:hasOBOFormatVersion>
</owl:Ontology>



<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Annotation properties
//
///////////////////////////////////////////////////////////////////////////////////////
-->




<!-- http://www.geneontology.org/formats/oboInOwl#gci_predicate -->

<owl:AnnotationProperty rdf:about="http://www.geneontology.org/formats/oboInOwl#gci_predicate"/>



<!-- http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion -->

<owl:AnnotationProperty rdf:about="http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion">
<rdfs:label>has_obo_format_version</rdfs:label>
</owl:AnnotationProperty>



<!-- http://www.geneontology.org/formats/oboInOwl#id -->

<owl:AnnotationProperty rdf:about="http://www.geneontology.org/formats/oboInOwl#id">
<rdfs:label>id</rdfs:label>
</owl:AnnotationProperty>



<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Classes
//
///////////////////////////////////////////////////////////////////////////////////////
-->




<!-- http://purl.obolibrary.org/obo/X_1 -->

<owl:Class rdf:about="http://purl.obolibrary.org/obo/X_1">
<rdfs:subClassOf rdf:resource="http://purl.obolibrary.org/obo/X_2"/>
<oboInOwl:id>X:1</oboInOwl:id>
</owl:Class>
<owl:Axiom>
<owl:annotatedSource rdf:resource="http://purl.obolibrary.org/obo/X_1"/>
<owl:annotatedProperty rdf:resource="http://www.w3.org/2000/01/rdf-schema#subClassOf"/>
<owl:annotatedTarget rdf:resource="http://purl.obolibrary.org/obo/X_2"/>
<oboInOwl:gci_predicate>R:2</oboInOwl:gci_predicate>
</owl:Axiom>



<!-- http://purl.obolibrary.org/obo/X_2 -->

<owl:Class rdf:about="http://purl.obolibrary.org/obo/X_2"/>
</rdf:RDF>



<!-- Generated by the OWL API (version 4.5.26) https://github.com/owlcs/owlapi -->

3 changes: 3 additions & 0 deletions tests/input/obo-compliance/gci-is-a/gci-is-a.meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
name: gci-is-a
name: gci-is-a
description: General Class Inclusion is_a
7 changes: 7 additions & 0 deletions tests/input/obo-compliance/gci-is-a/gci-is-a.obo
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
format-version: 1.4
ontology: gci-is-a

[Term]
id: X:1
is_a: X:2 {gci_predicate="R:2", gci_filler="X:3"}

31 changes: 31 additions & 0 deletions tests/input/obo-compliance/gci-relation/gci-relation.expected.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"graphs" : [ {
"id" : "http://purl.obolibrary.org/obo/gci-relation.owl",
"meta" : {
"basicPropertyValues" : [ {
"pred" : "http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion",
"val" : "1.4"
} ]
},
"nodes" : [ {
"id" : "http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion",
"lbl" : "has_obo_format_version",
"type" : "PROPERTY"
}, {
"id" : "http://www.geneontology.org/formats/oboInOwl#id",
"lbl" : "id",
"type" : "PROPERTY"
} ],
"edges" : [ {
"sub" : "http://purl.obolibrary.org/obo/X_1",
"pred" : "http://purl.obolibrary.org/obo/R_1",
"obj" : "http://purl.obolibrary.org/obo/X_2",
"meta" : {
"basicPropertyValues" : [ {
"pred" : "http://www.geneontology.org/formats/oboInOwl#gci_predicate",
"val" : "R:2"
} ]
}
} ]
} ]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
format-version: 1.2
ontology: gci-relation

[Term]
id: X:1
relationship: R:1 X:2 {gci_predicate="R:2"}

43 changes: 43 additions & 0 deletions tests/input/obo-compliance/gci-relation/gci-relation.expected.ofn
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
Prefix(:=<http://purl.obolibrary.org/obo/gci-relation.owl#>)
Prefix(owl:=<http://www.w3.org/2002/07/owl#>)
Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)
Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)
Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)


Ontology(<http://purl.obolibrary.org/obo/gci-relation.owl>
Annotation(<http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion> "1.4")

Declaration(Class(<http://purl.obolibrary.org/obo/X_1>))
Declaration(Class(<http://purl.obolibrary.org/obo/X_2>))
Declaration(ObjectProperty(<http://purl.obolibrary.org/obo/R_1>))
Declaration(AnnotationProperty(<http://www.geneontology.org/formats/oboInOwl#gci_predicate>))
Declaration(AnnotationProperty(<http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion>))
Declaration(AnnotationProperty(<http://www.geneontology.org/formats/oboInOwl#id>))
############################
# Annotation Properties
############################

# Annotation Property: <http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion> (has_obo_format_version)

AnnotationAssertion(rdfs:label <http://www.geneontology.org/formats/oboInOwl#hasOBOFormatVersion> "has_obo_format_version")

# Annotation Property: <http://www.geneontology.org/formats/oboInOwl#id> (id)

AnnotationAssertion(rdfs:label <http://www.geneontology.org/formats/oboInOwl#id> "id")




############################
# Classes
############################

# Class: <http://purl.obolibrary.org/obo/X_1> (<http://purl.obolibrary.org/obo/X_1>)

AnnotationAssertion(<http://www.geneontology.org/formats/oboInOwl#id> <http://purl.obolibrary.org/obo/X_1> "X:1")
SubClassOf(Annotation(<http://www.geneontology.org/formats/oboInOwl#gci_predicate> "R:2") <http://purl.obolibrary.org/obo/X_1> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/R_1> <http://purl.obolibrary.org/obo/X_2>))


)
Loading
Loading