I have updated the implementation to check the person/spouse example.
You can play with the example here: http://goo.gl/gJWCjJ
Notice that I added two flags to the validator system: withIncoming (to
support reverse arcs) and open shapes. By default, shexcala works with
closed shapes...although I will probably change that to have open shapes by
default...
Best regards, Jose Labra
On Sat, Jul 12, 2014 at 12:33 AM, Jose Emilio Labra Gayo <jelabra@gmail.com>
wrote:
>
>>> With regards to the spouse/person, I think what you want to describe
>>> can be
>>> done as:
>>>
>>> <PersonShape> { :a (:Person), :spouse @<SpouseShape>? }
>>> <SpouseShape> { :a (:Person), ^:spouse @<PersonShape> }
>>>
>>> The last declaration contains a reverse arc, which means that a
>>> SpouseShape is
>>> the object of an arc :spouse with shape PersonShape.
>>>
>>
>> I still don't see how this tells me whether all the nodes that have an
>> rdf:type link to :Person have all their spouses have rdf:type links to
>> :Person.
>>
>
> What it tells you is that if you select a node in the graph and you want
> to check if it has the Shape of a Person, you can have a system (a Shape
> Expression validator) that will check if it has the properties rdf:type
> with value :Person and :spouse with a value that also has rdf:type :Person.
>
> I mean...the Shape Expression validator is just looking at the shape of
> the RDF graph...that's why it is working in a more syntactic level than
> RDFS, OWL, etc...and that's why I think both are complementary
> technologies.
>
> Best regards, Jose Labra
>
>>
>
--
Saludos, Labra