Skip to content

robot outputs invalid turtle syntax #1129

@balhoff

Description

@balhoff

This may be a problem in OWL API, but just tracking here for now. Run these commands on the latest MONDO release:

curl -L -O 'http://purl.obolibrary.org/obo/mondo/releases/2023-07-03/mondo.owl'
riot --validate mondo.owl
# outputs some warnings about URN format in SWRL variables, but not fatal
robot convert -i mondo.owl -o mondo.ttl
riot --validate mondo.ttl
# 15:17:40 ERROR riot            :: [line: 212732, col: 100] Unrecognized (expected an RDF Term): [SEMICOLON]

The problem section of the file looks like this:

###  http://purl.obolibrary.org/obo/MONDO_0000290
obo:MONDO_0000290 rdf:type owl:Class ;
                  owl:equivalentClass [ owl:intersectionOf ( obo:MONDO_0005550
                                                             _:genid24281 rdf:type owl:Restriction ;
                                                                          owl:onProperty obo:RO_0014001 ;
                                                                          owl:someValuesFrom obo:NCBITaxon_5763
                                                           ) ;
                                      rdf:type owl:Class
                                      ] ;
rdfs:subClassOf obo:MONDO_0002428 ,
                obo:MONDO_0020067 ,
                _:genid24281 ;
obo:IAO_0000115 "A infectious disease involving the Naegleria fowleri." ;
terms:conformsTo <http://purl.obolibrary.org/obo/mondo/patterns/infectious_disease_by_agent.yaml> ;
oboInOwl:hasDbXref "DOID:0050242" ,
                   "GARD:0009554" ,
                   "MESH:C535275" ,
                   "SCTID:721816008" ,
                   "UMLS:C0300934" ,
                   "UMLS:C4303098" ;
oboInOwl:hasExactSynonym "Naegleria fowleri infection" ;
oboInOwl:hasRelatedSynonym "infections, Naegleria fowleri" ;
oboInOwl:id "MONDO:0000290" ;
oboInOwl:inSubset mondo:mondo_rare ,
                  mondo:rare ;
rdfs:label "primary amebic meningoencephalitis" ;
skos:exactMatch <http://identifiers.org/mesh/C535275> ,
                <http://identifiers.org/snomedct/721816008> ,
                <http://linkedlifedata.com/resource/umls/id/C0300934> ,
                <http://linkedlifedata.com/resource/umls/id/C4303098> ,
                obo:DOID_0050242 .

_:genid24281 rdf:type owl:Restriction ;
              owl:onProperty obo:RO_0014001 ;
              owl:someValuesFrom obo:NCBITaxon_5763 .

In the intersection list you would expect the existential restriction to be enclosed in [ ], but instead there is a blank node ID _:genid24281 followed by invalid inline properties. The blank node ID is reused twice below, which it should not be (OWL is supposed to use fresh blank nodes for reference to a class expression). That's fine in turtle, but might suggest the source of the error.

Based on the type of expression, it's possible this is somehow related to robot relax.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions