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

Explain how classic RDF reification relates to triple terms and rdf:reifies #61

Open
niklasl opened this issue Dec 12, 2024 · 3 comments

Comments

@niklasl
Copy link

niklasl commented Dec 12, 2024

It would be valuable to explain how "classic" RDF reification relates to the concepts of triple terms and reifiers.

This was asked for on the mailing list on 2024-12-07 and mentioned during the WG meeting on 2014-12-12.

Given the (informative) description of reifications (resources of type rdf:Statement):

The subject of a reification is intended to denote a concrete realization of an RDF triple, such as a document in a surface syntax, rather than a triple considered as an abstract object. This supports use cases where properties such as dates of composition or provenance information are applied to the reified triple, which are meaningful only when thought of as denoting a particular instance or token of a triple.

it is my belief is that a resource of type rdf:Statement is conceptually a specific kind of reifiers. More details in comments.

@niklasl
Copy link
Author

niklasl commented Dec 12, 2024

With an interpretation of triple terms, OWL can be used, as is, to define a useful connection in RDF 1.2 environments. This can also be bridged with systems still using RDF 1.1 through support for "classicizing" RDF 1.2. (Note that the latter currently uses different terms, but those could be defined as sub-terms of the interpretation terms.)

It would then be possible to use reifiers while staying compatible with existing applications relying on classic reification. (A recommendation could be to move to reifiers for all but very special cases.)

The following (where the triple term is commented out and instead represented in its proposed interpretation):

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX : <http://example.org/ns#>
BASE <http://example.org/>

##
# Bridging axioms:

[ owl:onProperty _:selfIsStmt ; owl:hasSelf true ] owl:equivalentClass rdf:Statement .

[] rdfs:subPropertyOf rdf:subject ;
    owl:propertyChainAxiom (_:selfIsStmt rdf:reifies rdf:tripleTermSubject) .

[] rdfs:subPropertyOf rdf:predicate ;
    owl:propertyChainAxiom (_:selfIsStmt rdf:reifies rdf:tripleTermPredicate) .

[] rdfs:subPropertyOf rdf:object ;
    owl:propertyChainAxiom (_:selfIsStmt rdf:reifies rdf:tripleTermObject) .

##
# Domain of discourse:
<stmt1> a rdf:Statement ;
    :date "2014-12-15"^^xsd:date ;
    :source <SomeDatabase> ;
    :trust 0.8 ;
    # rdf:reifies <<( <Alice> :bought <SomeComputer> )>> ;  # "classicized" as:
    rdf:reifies [ a rdf:TripleTerm ;
                  rdf:tripleTermSubject <Alice> ;
                  rdf:tripleTermPredicate :bought ;
                  rdf:tripleTermObject <SomeComputer> ] .

entails (among other triples):

<stmt1>
    rdf:subject <http://example.org/Alice> ;
    rdf:predicate :bought ;
    rdf:object <http://example.org/SomeComputer> .

This can be tested e.g. using OWL-RL:

$ owlrl -m -t -i turtle -o turtle reifies2statement.ttl

@niklasl
Copy link
Author

niklasl commented Dec 12, 2024

When this is resolved, https://github.com/w3c/rdf-schema may also need to be updated accordingly.

The definition of rdf:Statement in Schema:

An RDF statement is the statement made by a token of an RDF triple.

appears less clear in comparsion to its introduction in Semantics. It can be read such that a statement is not a token sentence, but its (propositional) meaning.)

@pfps
Copy link
Contributor

pfps commented Dec 13, 2024

This would be, at best, some sort of non-normative note in the document.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants