Re: using Shape Expressions to validate RDF graphs

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