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

Simplified Reification #61

Open
chiarcos opened this issue Mar 26, 2019 · 6 comments
Open

Simplified Reification #61

chiarcos opened this issue Mar 26, 2019 · 6 comments
Labels
Category: language features For language features of RDF itself -- model and syntax

Comments

@chiarcos
Copy link

Motivation: RDF reification is considered unpractical and is barely used, partially because it's verbose, partially, because it permits infinite recursion and is just too powerful. Existing RDF vocabularies (e.g., WebAnnotation, or OntoLex) thus tend to provide both reified and non-reified versions for the same information, which is redundant and an obstacle to data (re)usability. Moreover, the burden to harmonize them is put on the consumers of data rather than being handled by off-the-shelf infrastructures.

Suggestion 1: Support RDF* reification, see https://arxiv.org/pdf/1406.3399.pdf for the concept and https://wiki.blazegraph.com/wiki/index.php/Reification_Done_Right for an implementation, i.e.,

<<:peter :goes :home>> :says :sarah.

instead of

[ a rdfs:Statement; rdfs:subject :peter; rdfs:predicate :goes; rdfs:object :home ] :says :sarah.
(and reformulations of that)

A simple implementation strategy on the database side is to define an ID inference mechanism from subject, predicate and object URIs (or internal bnode ID), and to store this ID as a additional column with the triple (quad). (I think this is how the BlazeGraph implementation works, I didn't check, though.) Downside is increased memory and search efforts.

Suggestion 2: Use the notation above, but limit increased search efforts by restricting reification to non-recursive reification (i.e., metadata about triples, but no metadata about metadata):

i.e., permit
<<:peter :goes :home>> :says :sarah.
do not permit
<< <<:peter :goes :home>> :says :sarah >> :according_to :mary.

With non-recursive reification, reification complexity is down to the level of 1st order predicate logic.

@dbooth-boston
Copy link
Collaborator

The RDF*/SPARQL* proposal had a fair amount of support at the W3C Graph Data Workshop in Berlin a couple weeks ago, when it was discussed. A few points:

  • It is (or can be) implemented using existing quad mechanisms that named graphs use.
  • Currently the <<...>> notation can only be applied to a single triple at a time. This feels to me like an unreasonable limitation, so I hope that the capability is extended to be able to apply to an entire set of triples (or graph) at once. (This is what I was told in Berlin. Please correct me if this is incorrect.)
  • It may be possible to treat this as syntactic sugar, rather than requiring a change to the underlying RDF 1.1 model, which would be very beneficial.

@dbooth-boston dbooth-boston added the Category: language features For language features of RDF itself -- model and syntax label Mar 26, 2019
@cyocum
Copy link

cyocum commented Mar 27, 2019

I am not sure if this will contribute much but reification is, I feel, particularly important in the Humanities and data sets derived therefrom. A particular triple could be a statement that has many sustained articles/monographs and much thought put into it. It would be great if this could be acknowledged in the graph. Reification allows that but making it easier to use would mean that it is used more often or is better understood by users.

@chiarcos
Copy link
Author

@dbooth-boston: Right, I added this as an issue nevertheless for the sake of completeness. If I recall correctly, this can hurt query performance (depending on the structure of the data), so along with possible extensions (beyond single triples), also possible simplifications (e.g., recursivity boundaries) should be discussed.

@cyocum: I agree, and in any case, the current RDF reifictation vocabulary will persist, so for data representation, all of this will remain expressible (as it is right now, although in a very verbose fashion). The question is more about processing, i.e., whether a (unreified) triple and its reification should be automatically treated/detected as being equivalent.

@Wolkenstein
Copy link

Just of curiosity... is there any news on this topic?

@dbooth-boston
Copy link
Collaborator

RDF* is being discussed in a separate repo issues list, in case you had not seen it.

@Wolkenstein
Copy link

@dbooth-boston: Thank you! I've missed that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Category: language features For language features of RDF itself -- model and syntax
Projects
None yet
Development

No branches or pull requests

4 participants