Reputation: 105
I am learning how to use OWL API, I found this API is not the same as the API I used before. I am trying to figure out some simple concepts.I can't understand "Annotation". I get these from wiki:
The OWL abstract syntax presents an ontology as a sequence of annotations, axioms and facts. Annotations carry machine and human oriented meta-data.
If you are familiar with the owl, can you give me an example? What does "machine and human oriented meta-data" mean? Thanks a lot.
Update:
Thanks for answering me. I also want to write a example:
<http://data.doremus.org/performance/4db95574-8497-3f30-ad1e-f6f65ed6c896>
a mus:M42_Performed_Expression_Creation ;
ecrm:P3_has_note "Créée par Teodoro Anzellotti, son commanditaire, en novembre 1995 à Rotterdam" ;
ecrm:P4_has_time-span <http://data.doremus.org/performance/4db95574-8497-3f30-ad1e-f6f65ed6c896/time> ;
ecrm:P9_consists_of [ a mus:M28_Individual_Performance ;
ecrm:P14_carried_out_by "Teodoro Anzellotti"
] ;
ecrm:P9_consists_of [ a mus:M28_Individual_Performance ;
ecrm:P14_carried_out_by "à Rotterdam"
] ;
efrbroo:R17_created <http://data.doremus.org/expression/2fdd40f3-f67c-30a0-bb03-f27e69b9f07f> ;
efrbroo:R19_created_a_realisation_of
<http://data.doremus.org/work/907de583-5247-346a-9c19-e184823c9fd6> ;
efrbroo:R25_performed <http://data.doremus.org/expression/b4bb1588-dd83-3915-ab55-b8b70b0131b5> .
I think there is annotation in this example, the object of "ecrm:P9_consists_of" is not annotation. If I want to add annotation to ecrm:P3_has_not, how to do that? Thanks a lot.
Upvotes: 1
Views: 1078
Reputation: 835
the simplest example of owl-annotation is a annotation assertion, e.g:
_:x rdfs:comment "this is a comment"@en
where predicate rdfs:comment - is a builtin annotation property, and there are 8 such builtin properties. you can also provide your own annotation properties. you can also make annotation of annotations and build a tree of annotations. The example of сomplex nested annotations (turtle):
[ a owl:Annotation ;
rdfs:comment "indi-comment" ;
owl:annotatedProperty rdfs:comment ;
owl:annotatedSource [ a owl:Axiom ;
rdfs:comment "INDI-ANN" ;
owl:annotatedProperty rdf:type ;
owl:annotatedSource :Indi ;
owl:annotatedTarget :SomeClass1
] ;
owl:annotatedTarget "INDI-ANN"
] .
The same in functional syntax:
ClassAssertion(Annotation(Annotation(rdfs:comment "indi-comment"^^xsd:string) rdfs:comment "INDI-ANN"^^xsd:string) <#SomeClass1> <#Indi>)
Here we have class-assertion axiom, which binds named-individual ':Indi' with class ':SomeClass1'; this axiom is annotated with rdfs:comment="INDI-ANN", which, in its turns, has annotation rdfs:comment(annotation-property)="indi-comment"(annotation-value).
I think functional-syntax representation can be considered as 'human-oriented meta-data', while turtle as 'machine-oriented' one.
In general, annotation is a way to provide additional (and optional) information about owl-statements (owl-axioms). It could be a version, a link, some custom annotation-property, etc.
Remark: it is about OWL2 specification rather then about OWL-API. Any API which meets specification must provide the similar way to handle owl-annotations.
Upvotes: 2