Re: using Shape Expressions to validate RDF graphs

On Fri, Jul 11, 2014 at 11:51 PM, Peter F. Patel-Schneider <
pfpschneider@gmail.com> wrote:

>
>
> On 07/11/2014 02:32 PM, Karen Coyle wrote:
>
>>
>>
>> On 7/11/14, 12:56 PM, Peter F. Patel-Schneider wrote:
>>
>>> I'm still trying to figure out how shape expressions can constrain the
>>> shape of RDF graphs.  Yes, they can constrain the shape of a RDF graph
>>> flowing out of a single source, but that's only part of the problem.
>>> Another part, and one that I think is much more important, is
>>> constraining the "shape" of nodes that belong to a particular class.
>>>
>>
>> Classes are orthogonal to shapes -- classes are semantic, shapes are
>> syntactic. The Description Set Profile [1], which was an XML schema model
>> for
>> creating shapes with RDF, tried to address that (and I think it's worth
>> looking at). That project was perhaps premature and never completed, but
>> I am
>> still convinced that the need to define the shape of our data exists.
>>
>
> Sure, but the first thing that I want to do is to check whether nodes that
> have rdf:type links to :Person also have :spouse links and that spouse has
> a type link to :Person.  If you don't like rdf:type links then use some
> other link there, but the idea is still the same - I want to know whether
> the nodes that I care about (nodes with type :person, nodes with a
> :university) link, ...) have a particular "shape".  Of course, I *also*
> want to have more complex conditions, like nodes that have an rdf:type link
> to :Person in the RDFS closure of the graph, but something that can't even
> do the first part of this don't seem very useful to me, except in
> one-to-one situations and maybe not even then.


But Shape Expressions are orthogonal to inference systems like OWL, RDFS,
etc...you can have both in your system because they have a complementary
goal.

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.

Reverse arcs are some of the discussion topics that have to be addressed.
In Shexcala they are partially implemented...


And
>> shaping - as the DSP does - requires a big picture of your data. Much
>> validation looks at individual "bits" but there is also a need to
>> formulate
>> and test large, complex structures, in addition to individual statements.
>> If
>> this capability does not exist in ShEx then we need to add it.
>
>
> Agreed.
>

Also agreed...in my opinion there is a real need for some tool that can
help to easily describe and validate large and complex RDF data
stores...and I think RDF Data Shapes can help there while complementing all
the other good technologies that have already been developed.

Best regards, Jose labra

>
>
>> kc
>> [1] http://dublincore.org/documents/dc-dsp/
>>
>
> peter
>
>


-- 
Saludos, Labra

Received on Friday, 11 July 2014 22:04:59 UTC