- From: Michel Dumontier <michel.dumontier@stanford.edu>
- Date: Sun, 26 Apr 2015 19:50:34 -0700
- To: Holger Knublauch <holger@topquadrant.com>
- Cc: RDF Data Shapes Working Group <public-data-shapes-wg@w3.org>
- Message-ID: <CALcEXf5ATBRhkoNRORp200+Z3E=9UZCztuZ4mJJzwQ=t8c=UDg@mail.gmail.com>
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> wrote: > On 4/27/2015 9:34, Michel Dumontier wrote: > > > On Sun, Apr 26, 2015 at 3:47 PM, Holger Knublauch <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 02:51:26 UTC