shapes-ISSUE-174 (Scopenode): Scopenode does not use RDF node definition [SHACL - Core]

shapes-ISSUE-174 (Scopenode): Scopenode does not use RDF node definition [SHACL - Core]

http://www.w3.org/2014/data-shapes/track/issues/174

Raised by: Karen Coyle
On product: SHACL - Core

After chatting with various folks I am convinced that the use of "node" in the definition of "node scope" in SHACL is not correct. Node in RDF (which definition SHACL claims to follow) is defined thus:

"The set of nodes of an RDF graph is the set of subjects and objects of triples in the graph. It is possible for a predicate IRI to also occur as a node in the same graph."[1]

When we look at that:

"The set of nodes of an RDF graph is the set of subjects and objects of triples in a graph."

-> Only subjects and objects are "nodes."

"It is possible for a predicate IRI to also occur as a node in the same graph."

This refers to the IRI that is a predicate in a graph, not the predicate position in the triple, which is always an "arc" and not a node. The IRI can be a node (a subject or an object) if it is the subject or object of a triple. This means that if you "say something" about the predicate (for example adding a provenance statement about the predicate) then it has become a node in a graph as well as being a predicate in the graph.

In fact, most predicates are not also subjects or objects. This means that at the moment SHACL does not have a way to define a scope on predicates.

If the above holds true, then two things must happen: 1) SHACL must not use "node" where it means all components of a triple and 2a) there must either be a SHACL vocabulary element that allows scoping based on *any* component of a triple, or 2b) there must be a separate SHACL vocabulary element that allows scoping based on matching a predicate.


[1] https://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-rdf-graph

Received on Monday, 11 July 2016 20:02:17 UTC