- From: Holger Knublauch <holger@topquadrant.com>
- Date: Thu, 30 Apr 2015 12:34:14 +1000
- To: public-data-shapes-wg <public-data-shapes-wg@w3.org>
- Message-ID: <554194A6.5020407@topquadrant.com>
While I do not agree with the view point that classes and shapes are
very different, I am certainly willing to work on a compromise that we
can all live with, so that we can finally achieve a breakthrough on this
pesky topic. Some people here suggest that SHACL should include a
mechanism to establish links between classes and shapes, e.g.
ex:MyClass
a rdfs:Class .
ex:MyShape
a sh:Shape ;
sh:classScope ex:MyClass ;
sh:property [ ... ] .
or (inverse direction)
ex:MyClass
a rdfs:Class ;
sh:classShape ex:MyShape .
ex:MyShape
a sh:Shape ;
sh:property [ ... ] .
Linkage properties like sh:classScope and sh:classShape would support
soft-coupling between classes and shapes for those who want to follow
that design pattern.
However, the following would also be valid:
ex:MyClassAndShape
a rdfs:Class ;
a sh:Shape ;
sh:classShape ex:MyClassAndShape ;
sh:property [ ... ] .
i.e. reuse the URI of the class also for its shape and use sh:classShape
to point back to itself.
I believe I could live with sh:classShape or sh:classScope, if we also
introduced syntactic sugar for the case above. We should introduce a
metaclass
sh:ShapeClass
a rdfs:Class ;
rdfs:subClassOf sh:Shape ;
rdfs:subClassOf rdfs:Class .
which would be instantiated as follows:
ex:MyClassAndShape
a sh:ShapeClass ;
sh:property [ ... ] .
Such ShapeClasses would be instances of sh:Shape and rdfs:Class at the
same time. In order to avoid the need to write down the superfluous
sh:classShape triple pointing to itself, the engine would assume that
this triple exists - a fairly small change to the algorithm. Introducing
sh:ShapeClass would be similar to having owl:Class, which extends the
rdfs:Class metaclass with additional properties. By having users
instantiate the new metaclass they make a conscious choice that the URI
of that class can also be used as a shape. The benefit is that we still
have readable code with much fewer triples, and fewer people facepalming
about the complexity of the trivial use cases - why introduce a separate
sh:Shape when there is a one-to-one mapping anyway.
Thanks for your feedback,
Holger
On 4/29/2015 23:31, Michel Dumontier wrote:
> In case it wasn't clear, i meant that I don't support direct
> annotation of a class. the target of a shape should be referenced by
> the shape.
>
> m
>
>
>
> On Apr 29, 2015, at 1:42 AM, Dimitris Kontokostas <jimkont@gmail.com
> <mailto:jimkont@gmail.com>> wrote:
>
>> I also support this approach as a direct association of a shape to a
>> class. Indirection comes when we try to guess it from other triples
>> associated with the shape resource.
>>
>> Best,
>> Dimitris
>>
>> On Apr 29, 2015 03:33, "Michel Dumontier"
>> <michel.dumontier@stanford.edu
>> <mailto:michel.dumontier@stanford.edu>> wrote:
>>
>> I support this proposal. I believe it is important that shapes
>> and classes be considered different, and that it is user-defined
>> shapes that may refer to class expressions or other shapes.
>>
>> m.
>>
>> Michel Dumontier, PhD
>> Associate Professor of Medicine (Biomedical Informatics)
>> Stanford University
>> http://dumontierlab.com
>>
>> On Tue, Apr 28, 2015 at 6:20 PM, Holger Knublauch
>> <holger@topquadrant.com <mailto:holger@topquadrant.com>> wrote:
>>
>> Your sh:classScope looks exactly like the sh:classShape used
>> in my previous email, only in the inverse direction. I don't
>> see how this avoids mingling between classes and shapes - it
>> just adds a level of indirection. Selection still happens by
>> rdf:types and rdfs:subClassOf inheritance still remains
>> meaningful. It's just another syntax for the same concepts.
>>
>> Holger
>>
>>
>>
>> On 4/29/2015 10:51, Peter F. Patel-Schneider wrote:
>>
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA256
>>
>> I propose that there be no mingling of RDFS classes and
>> shapes, constraints,
>> or anything else in the SHACL specification. This
>> proposal, I believe, is
>> consonant with Stardog ICV, with Shape Expressions, and
>> with Resource
>> Shapes. Selection of which nodes to verify would be done
>> using mechanisms
>> different from those used in RDFS, although some
>> selection would interact
>> with RDFS classes and properties. One specific set of
>> mechanisms that work
>> this way can be found in
>> https://www.w3.org/2014/data-shapes/wiki/Shacl-sparql
>> where there are
>> several kinds of scoping links that say which nodes are
>> to be checked
>> against a shape.
>>
>> One of these kinds of scoping links links to a class, and
>> requires all
>> instances of the class be checked against a shape. So
>> for checking that all
>> people's parents are people one could* say:
>>
>> [ sh:classScope ex:Person ;
>> sh:shape [ sh:predicate ex:parent ;
>> sh:valueType ex:Person ] ]
>>
>> peter
>>
>>
>>
>> * This is written in the representationally relaxed variant.
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v2
>>
>> iQEcBAEBCAAGBQJVQCr9AAoJECjN6+QThfjz3vcIANEl+Zjrp6eOri6cA66e5Yk5
>> gvI/N3/1bf4UxNJyLmHPp8diqHKo97ZcRD4lZw/Haf6hsGoTEpThlNBKaCXTwpv0
>> QZJzJHcyR+9thYmSbFElUVVu9cWH2sHakHANCbyXzmVbuemfGDfVdu3ud3V/QlP1
>> Br5k+PSIPRImVWXGszC9/32HmP/l41Wu6nEcExsz3FjrR1xAhGHeavdONifjhBaU
>> pLBnp4AkNkkHzhmXPLKevgokmx3vZ/WztTfc2YUhZNvueY4utaM4RTKzGkmT8uSe
>> CzK6p1Svr9jeJ6ecEqqCxw3NvhYlkZ94+iI4wQtxMIGhkKmyjSJlQk2yoVokBVM=
>> =txRC
>> -----END PGP SIGNATURE-----
>>
>>
>>
>>
Received on Thursday, 30 April 2015 02:35:58 UTC