- From: Michel Dumontier <michel.dumontier@stanford.edu>
- Date: Sun, 26 Apr 2015 16:34:42 -0700
- To: Holger Knublauch <holger@topquadrant.com>
- Cc: RDF Data Shapes Working Group <public-data-shapes-wg@w3.org>
- Message-ID: <CALcEXf5tWoG0pmhi5vea9evTxLAXWmEG8PPVMSbdAQuE8xGmyw@mail.gmail.com>
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. 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? m. > > Thanks, > Holger > > > > > m. > > Michel Dumontier, PhD > Associate Professor of Medicine (Biomedical Informatics) > Stanford University > http://dumontierlab.com > > On Fri, Apr 24, 2015 at 7:07 PM, Holger Knublauch <holger@topquadrant.com> > wrote: > >> >> >> On 4/25/15 11:25 AM, Michel Dumontier wrote: >> >> It's not good practice to annotate somebody else's URI. Is there no other >> mechanism by which I declare property descriptions against a target type? >> >> >> To me, one of the strenghts of having URIs is to be able to >> address/repurpose/refine resources that others have published. I don't see >> how to avoid a (forward or backward) reference to the URI of the target >> type. Do you have suggestions? >> >> Thanks, >> Holger >> >> >> >> >> m. >> >> Michel Dumontier, PhD >> Associate Professor of Medicine (Biomedical Informatics) >> Stanford University >> http://dumontierlab.com >> >> On Thu, Apr 23, 2015 at 7:40 PM, Holger Knublauch <holger@topquadrant.com >> > wrote: >> >>> On 4/24/2015 12:18, Michel Dumontier wrote: >>> >>>> in any case, there are three fundamental issues, as I currently see it >>>> 1. that the specification should indicate how a shape can be defined in >>>> terms of an existing vocabulary, rather than be intrinsic to the vocabulary >>>> definition (although I don't mind if this is shown as in Example 1) >>>> >>> >>> If (for whatever reason) you don't want to put your constraints into a >>> vocabulary file, you could use named graph/file imports to store different >>> shape definitions in different named graphs. That's similar to taking an >>> OWL ontology and reusing its class definitions in another file (that >>> owl:imports the ontology). The SHACL validation is started with a >>> parameter, which is the named graph containing the shapes for this session. >>> So e.g. >>> >>> File1 >>> >>> ex:Person >>> a rdfs:Class ; >>> rdfs:label "Person" >>> . >>> >>> File 2: >>> >>> ex:Person >>> sh:constraint [ ... ] . >>> >>> Then start validation with File 2 as shapes graph. >>> >>> 2. that the valueType should be an IRI for a class or a shape, and we >>>> should drop sh:shape. >>>> >>> >>> I already responded to that and disagree that we should merge them >>> together. >>> >>> 3. that a simple SPARQL query should or should not return that data are >>>> instances of shapes regardless of the validation. >>>> >>> >>> The system designer has a choice between using sh:Shapes and >>> Classes-as-shapes. There are all kinds of engineering solutions, including >>> named graphs, to take complete control. >>> >>> Holger >>> >>> >>> >> >> > >
Received on Sunday, 26 April 2015 23:35:33 UTC