- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Fri, 11 Jul 2014 11:35:33 -0700
- To: Jeremy J Carroll <jjc@syapse.com>
- CC: Jose Emilio Labra Gayo <jelabra@gmail.com>, "public-rdf-shapes@w3.org" <public-rdf-shapes@w3.org>
The "meaning" of this shape expression is, roughly, a node of shape <Person> has an rdf:type link to :Person and at most one :spouse link, and the target of the :spouse link is a node of shape <Person>. I say roughly here because of the recursive nature of this expression - there is a decided question as to how this sort of recursion is defined in general, which appears to have been answered in a particular way here, although the formal underpinnings here do not appear to support recursion. So, a node of shape <Person> does have at most one spouse here - as opposed to the situation for (all :spouse :Person) - and all spouses must have shape <Person> - as opposed to the situation for (exists :spouse :Person). peter PS: I suppose I should have replaced "the" with "any", although that would have resulted in a more-difficult ambiguity in quantifier scoping. On 07/11/2014 11:18 AM, Jeremy J Carroll wrote: > I currently do validation of the sort that I think Peter is talking about, using custom sparql queries, where I verify what roughly corresponds to owl Restrictions (cardinality, allValues, someValues) except at the syntactic level (are there triples present) rather than the semantic level (like a DL reasoner would do) > > My understanding of Peter's point about > <Person> { a (:Person) , :spouse @<Person>? } > > is that what we really want to say, is that a person has at most one spouse (depending on cultural and temporal issues) and that spouse is a person, and may have other properties. > Does the shape expression prohibit more than one spouse? Does the shape expression prohibit having a spouse that is a non-Person? > > === > > > (The last time I was discussing this topic in the Semantic Web lists I believe there was some controversy about gender and same-sex marriage …., I am glad we are pass that stage!) > > Jeremy > > > > > On Jul 11, 2014, at 9:54 AM, Peter F. Patel-Schneider <pfpschneider@gmail.com> wrote: > >> >> >> On 07/11/2014 09:31 AM, Jose Emilio Labra Gayo wrote: >>> On Fri, Jul 11, 2014 at 5:35 PM, Peter F. Patel-Schneider >>> <pfpschneider@gmail.com <mailto:pfpschneider@gmail.com>> wrote: >>> >>> I've been looking through the Shape Expressions submission. I'm having a >>> hard time figuring out how it can be used to validate RDF graphs. >>> >>> The kind of validation I'm thinking of is constraining the elements of >>> various RDF types, perhaps requiring something like >>> >>> >>> I will give a first try... >>> >>> - the spouse of every person is a person >>> >>> >>> This could be declared as: >>> >>> <Person> { a (:Person) , :spouse @<Person>? } >>> >>> meaning that the shape Person has type :Person and can have an optional triple >>> :spouse of shape <Person> >>> >>> You can play with the example here: http://goo.gl/pcL0ix >> >> Yes, but how does that determine whether the spouse of every person is a person? All that it is doing is determining which nodes match the shape <Person>. >> >> >>> - the university of every graduate student is a research university >>> >>> >>> I declared it as: >>> >>> <GradStudent> { :university @<ResearchUniversity> } >>> >>> <ResearchUniversity> { a (:ResearchUniversity) } >>> >>> You can also play with the example here: http://goo.gl/fkx71w >> >> Same comment. >> >>> Taking a look at your examples, I would like to comment that there is a >>> difference between the domain of discourse of RDF Data Shapes and OWL. >> >> I don't see where OWL has come into the discussion so far. Everything above was stock RDF. >> >>> OWL is very well suited to describe concepts like Person, Graduate Student, >>> University, etc. while RDF Data Shapes are more oriented towards RDF data >>> representations, although they can be related, it is not always the case. >>> >>> For example, the constraints that I would express in RDF Data Shapes would be >>> something like: >>> >>> "In this RDF graph, the representation of a Person (or the shape of the >>> resource Person) has a property rdf:type with value :Person and can have a >>> property spouse which must have the shape of a Person" >> >> That seems to be what I want to say. Let me reiterate: >> >> I want to be able to determine whether, in a particular RDF graph (including RDFS inferences, by the way) all the elements of the class Person have each of their spouses (if any) also belonging to Person. >> >>> I mean, OWL and Shape Expressions have different goals...with OWL you model an >>> ontology of concepts, while with Shape Expressions you just describe the >>> shapes of RDF graphs. >> >> Agreed, but the very first thing that I want to do along these lines is to determine whether the elements of a particular class have a particular shape. I think that this is one of the most essential tasks that need to be done along these lines - think of it as type checking of the information in the RDF graph. >> >>> Best regards, Jose Labra >> >> peter >> >> >
Received on Friday, 11 July 2014 18:36:05 UTC