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

On 7/14/16 1:21 AM, Dimitris Kontokostas wrote:
>
>
> On Tue, Jul 12, 2016 at 7:12 PM, Karen Coyle <kcoyle@kcoyle.net
> <mailto:kcoyle@kcoyle.net>> wrote:
>
>     Thanks, Dimitris. As I said in my response to myself, Yes, property
>     scopes do what I was looking for. It is confusing that SHACL refers
>     to predicates in many of its explanations of scopes, but calls the
>     scope that takes a predicate identifier for scope selection a
>     "property scope". I can understand why, to some extent, but there is
>     a moving back and forth between "predicate" and "property" that
>     causes me confusion. I would prefer that we use the terms of the RDF
>     abstract syntax consistently, and always use the same term for the
>     same thing.
>
>
> Holger's proposal to rename these property scope selectors would help in
> this regard
> https://www.w3.org/2014/data-shapes/track/issues/169 (which I am also in
> favor of)
>
> However you are right in this, we use both predicate and property a lot
> in the spec, not only in prose but also as sh:property / sh:predicate
> sh:property denotes Property constraints (Constraints that are about a
> particular property or path and its values for the focus node) here
> property actually means predicate as property is a more general term
> that can take part as subject/objecty in a triple
> I think we copied this terminology from IBM Resource Shapes and for most
> (technical) people the distinction is clear but I see your point of
> confusion.
>
> One way to reduce this confusion would be to rename sh:property to
> something else e.g. sh:value.
> This would be a very big syntax change (that I would avoid) but I
> wouldn't object if there was strong support. But this should be decided
> as soon as possible together with the rest of the upcoming changes.

sh:property takes a predicate as a value, so this makes sense in that 
the meaning is: 'has predicate X'. The object of the predicate is then 
what is then defined as the focus node. Because this is kind of a 
two-step process (get me all of the objects of all triples with this 
predicate) it's hard to come up with a single term.

I wouldn't want to call this "sh:value" because it isn't true that "has 
value X". It's more like "get the value of predicate X". I think we 
should stick with "property" although I'm leaning toward "predicate" 
since that's what it is called elsewhere. (If we were using verb forms 
for SHACL properties this could be something like "sh:getValueOf" but 
SHACL properties are generally noun-ish so this would look odd.)

>
>
>     I understand that all scopes are nodes. (it might be good to say
>     that in the spec).  Defining a scope in terms of a predicate IRI
>     results in a scope that is a node (either the subject or object of
>     the predicate IRI). My original question was, if my data graph has
>     this triple:
>
>     <a> <ex:IRI> <b>
>
>     and sh:scopenode = ex:IRI, is this triple in scope? I am assuming
>     that it is not, because ex:IRI is not a node, but I haven't been
>     able to get a clear answer.
>
>
>     The definition "A node scope with value $scopeNode, defines
>     $scopeNode as the node in-scope in the data graph" reads as being
>     circular (a node scope is a node in scope), so I'd like to see a
>     definition that is more along the lines of:
>
>     When the value of sh:scopeNode matches the value of any node
>     (subject or object of a triple) in the data graph, that node is the
>     focus node that is in scope for matching against the defined
>     constraints.
>
>     That may be too long, but I can't think of anything shorter at the
>     moment. Basically, the definition needs to say both what the action
>     is but also what the result is. The current definition says that,
>     but the tautology of "scope node is node in scope" makes it hard to
>     read.
>
>
> I hope the updated definitions are clear and this is no longer an issue

I'll read through and see. Thanks for the edits.

>
>
>     Also, the meaning of "in scope" has not been defined in the document
>     before that point, AFAIK, so "in scope" isn't meaningful. And again,
>     there seem to be two parallel terms (node in scope, and focus node)
>     that aren't clearly differentiated. Are they different? They both
>     appear to apply to the data graph, although in the definitions
>     "scope" is an aspect of the SHACL graph - however "in scope in the
>     data graph" seems to belie that.
>
>
> The way validation is defined now is that it starts with an RDF node and
> we validate the node itself (NodeConstraints) or it's values through a
> predicate or a path (PropertyConstraints)
> Scopes are one way to define the RDF nodes in-scope that in turn become
> focus nodes after the pass any filtershapes
> the other way to define focus nodes is through shape references e.g.
> with sh:shape

A scope that is defined without use of filters also defines a focus 
node. So the steps are:

Scope step -> "in scope" + filter step -> focus node

and this is true even if there is no filter step. I think that's what 
isn't clear in the document.

Scope step -> "in scope" (+ 0) -> focus node

If we define the result of the scope step to be "in scope" and to be 
temporary until the filter step is invoked, then that would make sense. 
That definition needs to be given, and I'll need to read through again 
to see where we need to make clear that the "in scope" result is only a 
temporary condition until the filter step is invoked.

>
> so, since validation starts with a node, having ex:IRI as a focus node,
> when ex:IRI exists only as predicate in the data graph,  would be
> something like a silly thing to do (to reuse recent terminology :) )
> depending on the constraints that are defined some would always be wrong
> and some always true

I agree with this, but I would still appreciate an explanation of the 
SPARQL query, since I don't seem to be able to wrap my head around BIND 
even though I've read through that section of the SPARQL spec multiple 
times. This can be done off-line if it would waste the time of others in 
the group.

Thanks,
kc

>
> Dimitris
>
>
>     kc
>
>
>
>     On 7/12/16 6:55 AM, Dimitris Kontokostas wrote:
>
>         Hi Karen
>
>         On Mon, Jul 11, 2016 at 11:02 PM, RDF Data Shapes Working Group
>         Issue
>         Tracker <sysbot+tracker@w3.org <mailto:sysbot%2Btracker@w3.org>
>         <mailto:sysbot+tracker@w3.org <mailto:sysbot%2Btracker@w3.org>>>
>         wrote:
>
>             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.
>
>
>         At the moment, SHACL and all existing parallel proposals
>         (correct me if
>         I am wrong) including ShEx & Peter's proposal work on RDF nodes.
>         No proposal has any special treatment for predicates, when the
>         predicates do not exists as subjects / objects on the graph to
>         be tested
>
>
>             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
>
>
>         We do not currently have any discussion on how a predicate can
>         work as
>         scope nor any use-cases. e.g. what does it mean to to have e.g.
>         rdfs:label as scope?
>
>         however, we do have sh:scopeProperty and sh:scopeInverse property
>
>         e.g. sh:scopeProperty rdfs:label selects all subjects in the
>         data graph
>         that appear in a triple with rdfs:label as predicate
>         e.g. sh:scopeInverseProperty rdfs:label selects all objects in
>         the data
>         graph that appear in a triple with rdfs:label as predicate
>
>         in that sense I think the term node here is correct
>
>
>             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.
>
>
>         as stated above, we first need to define what does it mean to have a
>         predicate as a scope
>         e.g. sh:scopePredicate rdfs:label
>
>         to me something like this would intuitively translate to the
>         following
>         SHACL scopes
>         sh:scopeNode rdfs:label
>         sh:scopeProperty rdfs:label
>         sh:scopeInverseProperty rdfs:label
>         i.e. the actual predicate as a node as well as all the subjects /
>         objects in the data graph that appear in a triple with rdfs:label as
>         predicate
>         is this what you have in mind as well? in that case we can
>         discuss if we
>         can create such a syntax shortcut
>
>         Best,
>         Dimitris
>
>
>
>             [1]
>
>         https://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-rdf-graph
>
>
>
>
>
>
>         --
>         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
>
>
>     --
>     Karen Coyle
>     kcoyle@kcoyle.net <mailto:kcoyle@kcoyle.net> http://kcoyle.net
>     m: 1-510-435-8234
>     skype: kcoylenet/+1-510-984-3600 <tel:%2B1-510-984-3600>
>
>
>
>
> --
> 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
>

-- 
Karen Coyle
kcoyle@kcoyle.net http://kcoyle.net
m: 1-510-435-8234
skype: kcoylenet/+1-510-984-3600

Received on Thursday, 14 July 2016 17:01:26 UTC