owl reification vs. rdf reification

Viewed 1363

When it comes to reification, the most obvious solution is RDF reification, but it seems OWL2 has its own vocabulary for that, I'd like to understand why. Let's take an example: if I have the following dataset (it's a tiny subset of the dataset we're using, which uses OWL):

@prefix :      <http://purl.bdrc.io/ontology/core/> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

bdr:T123  a     :Topic ;
    rdfs:seeAlso    bdr:T1129 .

I can reify and annotate the seeAlso statement with RDF like this:

_:b0 a             rdf:Statement ;
     rdf:subject   bdr:T123 ;
     rdf:predicate rdfs:seeAlso ;
     rdf:object    bdr:T1129 ;
     rdfs:label    "reification 1" .

But it's quite easy to find some examples (here, here, etc.) of things like:

_:b1 a             owl:Axiom ;
     owl:subject   bdr:T123 ;
     owl:predicate rdfs:seeAlso ;
     owl:object    bdr:T1129 ;
     rdfs:label    "reification 2" .

First question: my understanding is that the owl:subject,predicate,object are deprecated, is that so?

The other way to reify and annotate a triple with OWL seems to be:

_:b2 a                     owl:Axiom ;
     owl:annotatedSource   bdr:T123 ;
     owl:annotatedProperty rdfs:seeAlso ;
     owl:annotatedTarget   bdr:T1129 ;
     rdfs:label            "reification 3" .

(it's what is used by Protege for instance) but I cannot understand the difference between the RDF reification+annotation and the OWL reification+annotation... Is the OWL way just a way to tell the reasoner not to take the reification into account? What are the other difference?

2 Answers
Related