- From: Michel Dumontier <michel.dumontier@stanford.edu>
- Date: Thu, 12 Feb 2015 09:23:05 -0800
- To: Holger Knublauch <holger@topquadrant.com>
- Cc: "public-data-shapes-wg@w3.org" <public-data-shapes-wg@w3.org>
- Message-ID: <CALcEXf4o2uhJ=6ATkH16S_AtitP-oZ8ZOgy2=0b-eoxb8By-1w@mail.gmail.com>
On Wed, Feb 11, 2015 at 9:22 PM, Holger Knublauch <holger@topquadrant.com> wrote: > On 2/12/2015 14:54, Michel Dumontier wrote: > > Hi, > i would like to have shapes to be compatible with OWL entailment. > > > The general topic of how shapes interact with entailment is still > officially undecided. I believe many people here assume that is that users > can activate entailment on their graph and the language itself doesn't need > to care about that. > > For instance, if I place a superclass in a constraint, i would like to > validate positive where i have a subclass in the data. But I see that as a > choice that should be specified with the shape, as I could imagine that you > might also want to validate with only the specified class. > > > Could you clarify whether this is about the engine (which constraints > checks to perform) or about the constraint check itself (e.g. to also > accept subclasses of a class for valueType/range of a property). Above you > sound like you want to former, and LDOM handles this like SPIN did - when > you attach a constraint to a class then it also applies to its subclasses. > When you have an instance of a subclass then it will walk up the > superclasses to make sure that all constraints pass. I wouldn't know how to > make this a choice - this should IMHO always happen. In SPARQL-based > constraint checks, you can fine tune the behavior, e.g. by either selecting > rdfs:subClassOf or rdfs:subClassOf*. > > Examples would help. > > the FOAF vocabulary defines foaf:Person, foaf:Group, and foaf:Organization as subclasses of an foaf:Agent. Let's say that my data contains foaf descriptions of people and the organizations that they work for. I want to check that all foaf:Agent (and instances of subclasses) in my graph are annotated with a non-empty rdfs:label. This requires reasoning about the rdfs:subClassOf relation in order to retrieve people and organizations and check for the existence of the annotation. To illustrate the second case, where we specifically want to check for an annotation value, which would not hold true if present as a more specific type in a vocabulary. Say I first annotate people and organizations with their spatial location in terms of the zip code that they are in, but i want to distribute my data with the location restricted to a single county (this is important for data privacy /de-identification in health care data). I use some geo-lookup table to relate zip code to city, and city to county (presumably through some attribute that identifies it as such), and generate RDF accordingly. I then create a shape to check that all foaf:Agents have exactly one location, and that the location is restricted to county level. I do this, because there's always the chance that the geodata i used is wrong or that the patient data has an incorrect zip code that doesn't map to anything. m. > Thanks > Holger > >
Received on Thursday, 12 February 2015 17:23:57 UTC