owlcollab / owltools

OWLTools
BSD 3-Clause "New" or "Revised" License
108 stars 33 forks source link

Add prefix definition #228

Open stuppie opened 6 years ago

stuppie commented 6 years ago

Is there a way (preferably on the command line) to add a prefix definition to an ontology?

To give my specific usage, I am trying to merge some triples into an existing ontology however if there is a prefix defined in the triples that doesn't exist in the base file, the full URI is used. How can I add the prefix definition?

cmungall commented 6 years ago
$ owltools MYFILE.owl -o -h
-o [-f FORMAT] [--prefix PREFIX URI]* FILE         writes source ontology.

e.g.

owltools MYFILE.owl -o -f ofn --prefix FOO http://example.org/foo MYFILE-out.ofn

should work with any owlapi prefix-enabled format

(note prefix definitions are a purely syntactic feature and semantically invisible to the owlapi)

Also for many basic ontology release operations the recommendation is to use robot.

stuppie commented 6 years ago

Thanks for the quick response!!

It still didn't work however. Example:

owltools doid-edit.owl --merge tmp.ttl -o -f ofn --prefix skos "http://www.w3.org/2004/02/skos/core#" doid-edit.owl

where doid-edit.owl is: https://github.com/DiseaseOntology/HumanDiseaseOntology/blob/master/src/ontology/doid-edit.owl and tmp.ttl contains:

@prefix obo:   <http://purl.obolibrary.org/obo/> .
@prefix skos:   <http://www.w3.org/2004/02/skos/core#> .    
obo:DOID_7880  skos:broadMatch  "XXX"^^xsd:string .

I get the following lines in the output file:

Declaration(AnnotationProperty(<http://www.w3.org/2004/02/skos/core#broadMatch>))
AnnotationAssertion(<http://www.w3.org/2004/02/skos/core#broadMatch> obo:DOID_7880 "XXX"^^xsd:string)

where I'm expecting

Prefix(skos:=<http://www.w3.org/2004/02/skos/core#>)
Declaration(AnnotationProperty(skos:broadMatch))
AnnotationAssertion(skos:broadMatch obo:DOID_7880 "XXX"^^xsd:string)

I know they're equivalent, but.. just for git reasons, I'd like it to be the curie