- From: Holger Knublauch <holger@topquadrant.com>
- Date: Mon, 27 Apr 2015 12:59:05 +1000
- To: RDF Data Shapes Working Group <public-data-shapes-wg@w3.org>
- Message-ID: <553DA5F9.30301@topquadrant.com>
Michel, may I suggest that you raise your proposal as an ISSUE on the tracker? We can then move this thread into its proper place and derive a requirement for the WG's consideration. Thanks, Holger PS: the shape selectors wiki page is not the right starting point, because it was just a generalization of the (global) rdf:type/sh:nodeShape patterns, not a selector tied to specific shapes. On 4/27/2015 12:50, Michel Dumontier wrote: > Adding a selector would add a lot of power to the approach, and would > be my preferred way of declaring a shape and having a simple pointer > to a target class. when i look at the wiki page for shape_selectors, > i honestly don't see a simple, concrete example as i have just done. > Let's start with easy and work towards more complicated... > > m. > > Michel Dumontier, PhD > Associate Professor of Medicine (Biomedical Informatics) > Stanford University > http://dumontierlab.com > > On Sun, Apr 26, 2015 at 6:23 PM, Holger Knublauch > <holger@topquadrant.com <mailto:holger@topquadrant.com>> wrote: > > On 4/27/2015 9:34, Michel Dumontier wrote: >> >> On Sun, Apr 26, 2015 at 3:47 PM, Holger Knublauch >> <holger@topquadrant.com <mailto:holger@topquadrant.com>> wrote: >> >> Michel, >> >> SHACL validation is launched over a dataset that has a >> default graph - a collection of triples that have been >> selected by whatever mechanism. This includes the possibility >> for an application to build a (possibly temporary) default >> graph containing additional triples about a IRI not owned by >> you. So technically, this provides quite a bit of >> flexibility. I agree this practice would not necessarily >> translate well to a pure Linked Data approach where all >> information about a resource needs to reside at its URI. >> >> On 4/27/2015 6:59, Michel Dumontier wrote: >>> It's fine to make a reference to a resource, but it's not OK >>> to make assertions where the subject IRI is not owned by >>> you. for instance, using the modeling I advocate, >>> >>> bob's file: >>> bob:Issue >>> a owl:Class . >>> >>> holger's file, where he modifies the meaning of bob:Issue >>> directly: >>> bob:Issue >>> sh:property [ >>> sh:predicate ex:assignedTo ; >>> rdfs:label "assigned to" ; >>> rdfs:comment "The assignee of an issue must be a person." ; >>> sh:maxCount 1 ; >>> sh:valueType schema:Person ; >>> ] . >>> >>> michel's file, where he creates a new shape to validate that >>> bob:Issues satisfy a particular constraint: >>> >>> michel:IssueShape >>> rdfs:subClassOf bob:Issue >>> sh:property [ >>> sh:predicate ex:assignedTo ; >>> rdfs:label "assigned to" ; >>> rdfs:comment "The assignee of an issue must be a person." ; >>> sh:maxCount 1 ; >>> sh:valueType schema:Person ; >>> ] . >> >> Both approaches look fine to me. In the second approach you >> would still need to instruct the engine that all instances of >> Issue need to be verified against your extended IssueShape. >> This is covered by the existing rdf:type triples in the upper >> example. How would you like to represent this in the second >> approach? >> >> >> I guess this goes back to the comment i made a while ago ... with >> some kind of selector it would be more obvious how to choose the >> triples for validation. > > I remember an earlier discussion with you that resulted in me > adding sh:scope to constraints: > > http://w3c.github.io/data-shapes/shacl/#scope > > and I like such a feature because it adds a consistent > filtering/pre-condition mechanism to constraints. It appears that > you would also like to have a similar mechanism for Shapes, see below. > >> For instance, something like: >> >> :IssueShape >> a sh:Shape; >> sh:selector [ >> sh:property rdf:type; >> sh:valueType :Issue . >> ] >> >> I like this because it gives us the power to generate more >> complex selectors. Otherwise, we'd might just specify to look for >> the rdfs:subClassOf predicate on the shape (obviously, we'd need >> to type our shape to sh:Shape here too). >> what do you think? > > Yes this may work. We can tweak the metamodel in various ways to > allow such things. Indeed we had previous discussions in the > group, e.g. the idea of general Shape Selectors [1]. I also > believe that Peter's proposal [2] has coverage for such general > selection. I would be happy to add such features into the language > if there is sufficient agreement on this direction within the > group. Clearly this should be in addition to selection based on > rdf:type and sh:nodeShape as outlined in my current draft [3] - we > don't want to over-complicate the simple use cases. Neither do we > want to overload the language with too many modes of operation. > > There is one performance issue to consider though, if we allow > shapes to specify under which conditions they apply. Example: if > the user is editing a form of a specific resource, and wants to > perform validation of her edits, then only that resource needs to > be validated - not the whole graph. This would be similar to the > validateNode operation [4]. In the case of general selectors, this > means that the system would need to walk through all defined > shapes and check their selectors. In large models this may be > quite time consuming. In the case of rdf:type and sh:nodeShape, > the situation is simpler because the system only needs to look at > a small number of shapes. > > Thanks, > Holger > > [1] https://www.w3.org/2014/data-shapes/wiki/Shape_Selectors > [2] https://www.w3.org/2014/data-shapes/wiki/Shacl-sparql > [3] http://w3c.github.io/data-shapes/shacl/#shape-selection > [4] http://w3c.github.io/data-shapes/shacl/#operation-validateNode > >
Received on Monday, 27 April 2015 03:00:44 UTC