- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Sat, 10 Dec 2016 10:33:24 -0800
- To: Holger Knublauch <holger@topquadrant.com>, Dimitris Kontokostas <kontokostas@informatik.uni-leipzig.de>
- Cc: "public-rdf-sha." <public-rdf-shapes@w3.org>
Here is a definition of value nodes along with the definitions needed to support it. Path: A **path** in an *RDF graph* from *RDF term* n to RDF term m is a sequence of *RDF triples* in the graph such that the *subject* of the first RDF triple is n, the *object* of the last RDF triple is m, and the object of each RDF triple except the last is the subject of the next. Value: An RDF term n has **value** v for property p in an RDF graph if there is an RDF triple in the graph with subject n, predicate p, and object v. An RDF term n has value v for *SPARQL property path expression* p in an RDF graph if there is a path in the graph from n to v that *matches* p. SHACL List: A **SHACL list** in an RDF graph is an IRI or a *blank node* that is either rdf:nil provided that rdf:nil has no value for either rdf:first or rdf:rest in the graph, or has exactly one value for rdf:first in the graph and exactly one value for rdf:rest in the graph that is also a SHACL list in the graph and there is no non-empty path in the graph from the list back to itself where the predicates of the RDF triples in the path are each rdf:rest. The **members** of any SHACL list except rdf:nil in an RDF graph consist of its value for rdf:first in the graph followed by the members in the graph of its value for rdf:rest in the graph. The list rdf:nil has no **members** in any RDF graph. SHACL PROPERTY PATHS A blank node is an **ill-formed SHACL property path** in an RDF graph if it has a value for more than one of rdf:first, sh:alternativePath, sh:inversePath, sh:zeroOrMorePath, sh:oneOrMorePath, or sh:zeroOrOnePath in the graph. A blank node is an **ill-formed SHACL property path** in an RDF graph if there is a path in the graph from the node back to itself where the sequence of predicates of the RDF triples in the path matches the regular expression ( ( rdf:rest* rdf:first ) | sh:alternativePath ( rdf:rest* rdf:first ) | sh:inversePath | sh:zeroOrMorePath | sh:oneOrMorePath | sh:zeroOrOnePath ) + An RDF term is an **ill-formed SHACL property path** in an RDF graph if it does not satisfy exactly one of the conditions in the mapping below. If an RDF term is not an ill-formed SHACL property path in an RDF graph then it is a **SHACL property path** in the graph. The **path mapping** in an RDF graph of a RDF term p that is not an ill-formed SHACL property path in the graph, path(p,S), is a *SPARQL property path expression* defined as follows: 1/ If p is an IRI then path(p,S) is PredicatePath(p). 2/ If p is a blank node that is a SHACL list in the graph that has at least two members in the graph and none of these members are ill-formed SHACL property paths in the graph then path(p,S) is SequencePath(path(v1,S) ... path(vn,S)) where vi are the members of p in the graph, in order. 3/ If p is a blank node that has exactly one value for sh:alternativePath in the graph and that value is a SHACL list in the graph that has at least two members in the graph and none of the members in the graph are ill-formed SHACL property paths in the graph then path(p,S) is AlternativePath(path(v1,S) ... path(vn,S)) where vi are the members of the list in the graph, in order. 4/ If p is a blank node that has exactly one value v for sh:inversePath in the graph and v is not an ill-formed SHACL property path in the graph then path(p,S) is InversePath(path(v,S)). 5/ If p is a blank node that has exactly one value v for sh:zeroOrMorePath in the graph and v is not an ill-formed SHACL property path in the graph then path(p,S) is ZeroOrMorePath(path(v,S)). 6/ If p is a blank node that has exactly one value v for sh:oneOrMorePath in the graph and v is not an ill-formed SHACL property path in the graph then path(p,S) is OneOrMorePath(path(v,S)). 7/ If p is a blank node that has exactly one value v for sh:zeroOrOnePath in the graph and v is not an ill-formed SHACL property path in the graph then path(p,S) is ZeroOrOnePath(path(v,S)). SHACL property paths in same or different RDF graphs are **equivalent** if their path mappings in their graphs are the same. Value Nodes: A shape in an RDF graph with a value for sh:path in the graph that is an ill-formed SHACL property path in the graph is an **ill-formed shape** in the graph. A shape in an RDF graph with more than one value for sh:path in the graph is an **ill-formed shape** in the graph. Given f an RDF term, D a data graph, and s a shape in S a shapes graph the **value nodes** of f with D for s in S is the set containing the values of f for path(p,S) in D if s has p as value for sh:path in S; or just f if s has no value for sh:path in S. On 12/09/2016 05:23 PM, Holger Knublauch wrote: > On 10/12/2016 2:44, Peter F. Patel-Schneider wrote: >> The wording about value nodes at the beginning of Section 4 in the document >> needs to be tightened. The document doesn't even define the notion of >> reachability. > > Do you have specific input to address that? > > Thanks, > Holger > > >> >> peter >> >> >> On 12/08/2016 11:49 PM, Dimitris Kontokostas wrote: >>> Thank you for your feedback Peter, >>> would something like the following wording resolve this issue? >>> Validation results may have a <a>SHACL property path</a> as value for the >>> property <code>sh:resultPath</code> that represents the <a>property path</a> >>> from the focus node to the value node. >>> >>> On Fri, Dec 9, 2016 at 6:21 AM, Holger Knublauch <holger@topquadrant.com >>> <mailto:holger@topquadrant.com>> wrote: >>> >>> I have raised ISSUE-217 for this. >>> >>> https://www.w3.org/2014/data-shapes/track/issues/217 >>> <https://www.w3.org/2014/data-shapes/track/issues/217> >>> >>> Holger >>> >>> >>> >>> On 9/12/2016 11:29, Peter F. Patel-Schneider wrote: >>> >>> >>> ISSUE<<<<<<<<<<<<<<<<<< >>> >>> The requirements for values of sh:resultPath in validation results >>> are >>> impossible to achieve, poorly defined, contradictory, and >>> problematic for >>> applications that consume validation reports.. >>> >>> >>> ISSUE<<<<<<<<<<<<<<<<<< >>> >>> >>> 3.4.2.2 Path (sh:resultPath) >>> Validation results may have a value for the property sh:resultPath >>> pointing >>> at a well-formed property path starting with the given >>> sh:focusNode. For >>> results produced by a property constraint, this path is always >>> identical to >>> either the sh:predicate or sh:path of the constraint. >>> >>> >>> A property path is a "possible route in a graph between two graph >>> nodes". >>> There is no definition of route to be found in the document. It is >>> thus not >>> possible to point to a property path, well-formed or not. >>> >>> The values of sh:predicate and sh:path in shapes graphs are SHACL >>> property >>> paths. As objects of triples in a graph these values are nodes in >>> the >>> graph, and certainly not routes of any kind. >>> >>> Identity of RDF terms is not defined in RDF, so it is not >>> completely clear >>> what the second sentence in the description above means. The only >>> reasonable interpretation appears to be that value of >>> sh:resultPath is the >>> same as the object of the sh:predicate or sh:path triple, which >>> implies that >>> validation results will contain nodes taken from shapes graphs. >>> This is >>> contradictory as nodes are not paths. >>> >>> This is also problematic for applications that consume validation >>> reports as >>> it requires the ability to take a blank node from one graph and >>> find the >>> same blank node in another graph, which is not always possible in >>> RDF. >>> >>> >>> This is yet another case of malformed descriptions in the >>> document. The >>> document needs to be changed to provide a well-formed description >>> for the >>> value of sh:resultPath in validation results. A complete examination >>> of the >>> document by a competent member of the working group is needed to >>> find and >>> eliminate other similar problems in the document. >>> >>> >>> Peter F. Patel-Schneider >>> Nuance Communications >>> >>> >>> >>> >>> >>> >>> >>> >>> -- >>> Dimitris Kontokostas >>> Department of Computer Science, University of Leipzig & DBpedia Association >>> Projects: http://dbpedia.org, http://rdfunit.aksw.org, >>> http://aligned-project.eu >>> Homepage: http://aksw.org/DimitrisKontokostas >>> Research Group: AKSW/KILT http://aksw.org/Groups/KILT >>> >
Received on Saturday, 10 December 2016 18:34:02 UTC