>
>
>> 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
>