Progress towards RDF*/SPARQL* Community Report
Posted on:Since the middle of 2019, there has been an active community of researchers, implementers, and practitioners discussing a small extension to RDF that had become known under the name RDF* (pronounced “RDF star”). The aim of this extension is to support various use cases related to annotations and statements about individual RDF triples. Recently, the community has started having regular telecons and moved up a gear to produce a community report and test cases for RDF* and its corresponding extension to SPARQL, called SPARQL*. With this short update we want to highlight the progress and the direction of this effort. Please note that this work does not affect the formal status or stability of W3C’s RDF-related standards, and is not currently being proposed as a recommendation-track activity.
Starting from the experience of supporting the RDF*/SPARQL* approach in several implementations, the group is working on material needed to consolidate the definition of the approach and to provide a formal as well as a practical foundation for an ecosystem of interoperable implementations. This material includes documents and test cases, which are developed through contributions on a corresponding github project.
The general direction is to extend the RDF data model by allowing triples to be used as the subject or object of other triples. Concrete serialization formats for RDF are then extended accordingly. For instance, by the corresponding extension of the RDF Turtle format, a triple with a triple in its subject position is represented as follows.
<<:bob a :Doctor>> :accordingTo :alice .
We call a triple that is in the subject or object of another triple an embedded triple. To support the widest set of use cases, such an embedded triple on its own does not assert this triple (i.e., the example above does not assert that Bob is indeed a doctor). However, there is also an annotation syntax now, which makes it convenient to assert a triple and also refer to that triple. For instance, in the extended version of Turtle, we may write the following.
:bob a :Doctor {| :accordingTo :alice |} .
This is equivalent to:
:bob a :Doctor.
<<:bob a :Doctor>> :accordingTo :alice .
SPARQL is extended accordingly so that embedded triples and annotations can also be queried. For instance, the following query retrieves all the alleged doctors, and who made the respective claims.
SELECT * { << ?d a :Doctor >> :accordingTo ?a }
The relevant extensions to the abstract data model of RDF, to concrete syntaxes, and to other parts of the stack (such as SPARQL query semantics and result formats) are being documented in a Community Group report and in a corresponding set of test suites. The community home page with links to all this material can be found at https://w3c.github.io/rdf-star/.
Please join the effort if you are interested in helping the group to complete this work.