- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Mon, 26 Jan 2015 18:51:18 -0800
- To: Holger Knublauch <holger@topquadrant.com>, public-data-shapes-wg@w3.org
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
It is possible to directly instantiate OWL restrictions, as in
ex:John in some ex:pet ex:Dog
which says that John has a pet that is a dog.
peter
On 01/26/2015 04:19 PM, Holger Knublauch wrote:
> Maybe it helps to compare "Shapes" to the (usually anonymous) class
> definitions used by OWL in owl:equivalentClass and rdfs:subClassOf.
> Basically, shapes describe hypothetical classes (sets of nodes) that are
> never directly instantiated.
>
> OWL still calls those things classes, and LDOM does the same, for
> simplicity and consistency. I believe I could support the notion of
> Shapes in the context of similar use cases, in nested "class expressions"
> (ldom:all/ldom:some). If you look at Example 11 at
> https://w3c.github.io/data-shapes/data-shapes-primer/#template-constraints
> the blank nodes of ldom:shape1 and ldom:shape2 could have a type triple:
>
> ex:RectangleWithArea a rdfs:Class ; rdfs:subClassOf ex:Rectangle ;
> ldom:constraint [ a ldom:OrConstraint ; ldom:shape1 [ *
> a ldom:Shape ;** * ldom:property [ ldom:predicate
> ex:width ; ldom:minCount 1 ; ] ; ldom:property [ ldom:predicate ex:height
> ; ldom:minCount 1 ; ] ] ; ldom:shape2 [ * a
> ldom:Shape ;** * ldom:property [ ldom:predicate
> ex:area ; ldom:minCount 1 ; ] ] ] ; .
>
> with no harm done. But even that rdf:type triple should be optional IMHO,
> to make code more compact to edit.
>
> Holger
>
>
> On 1/27/2015 5:37, Peter F. Patel-Schneider wrote: My view is that shapes
> and classes have significant differences. This is not to say that there
> are not any commonalities, but that the differences do need to be taken
> into account. Forcing inclusion one way or the other is making a
> statement that has definite consequences.
>
> Allowing information into inputs but then ignoring it seems to me to be
> problematic. I would be against such a facility.
>
> peter
>
>
> On 01/26/2015 12:00 AM, Jerven Tjalling Bolleman wrote:
>>>> Hi Peter,
>>>>
>>>> Thank you for taking the time to reply.
>>>>
>>>> The main thing I wanted to bring up is that shapes are very classy
>>>> in their behavior. The split between classes and shapes is
>>>> therefore a bit difficult to explain and this leads to confusion. I
>>>> also think in my opinion that introducing a hard distinction is not
>>>> necessary.
>>>>
>>>> Now about your specific reply. I would like to see that triples
>>>> such as
>>>>
>>>> ex:myOffice rdf:type :officeShape .
>>>>
>>>> Are allowed in the data, but must be ignored by the shapes
>>>> processor if it knows the shape (i.e. must re-infer), if it does
>>>> not know the shape then it should be used as any other triple
>>>> (allows shape processor stacking). i.e. A shapes processor may not
>>>> trust user submitted data about class/shape membership.
>>>>
>>>> In practice I would expect the user community to do the following
>>>>
>>>> ex:myOffice a rdf:Class .
>>>>
>>>> ex:westWingOfficeShape rdfs:subClassOf ex:myOffice .
>>>> ex:offsiteOfficeShape rdfs:subClassOf ex:myOffice .
>>>>
>>>> The idea being that shapes reasoning will be cheap (unlike OWL)
>>>> and encourage more specific subclasses being generated. Which I
>>>> honestly think would be an improvement for the semweb.
>>>>
>>>> Regards, Jerven
>>>>
>>>> On 2015-01-25 15:54, Peter F. Patel-Schneider wrote: If shapes are
>>>> classes then it is possible to assert that an individual belongs to
>>>> a shape, as in
>>>>
>>>> ex:myOffice rdf:type officeShape .
>>>>
>>>> Because it is possible to not belong to a shape, this introduces a
>>>> new kind of contradiction (and contradictions are indeed different
>>>> from constraint violations).
>>>>
>>>> peter
>>>>
>>>> On 01/25/2015 04:25 AM, Jerven Bolleman wrote: Dear Working Group,
>>>>
>>>> I have tried to keep to the sidelines in this discussion, but as a
>>>> very interested user of this kind of tech I feel I need to speak
>>>> out.
>>>>
>>>> Shapes are Classes, in all practical and theoretical terms [1].
>>>> ShEX shapes are just another way to infer class membership (Closed
>>>> World but otherwise basically OWL all over again)
>>>>
>>>> Instead of inferring example:A is a member of an owl:Class you now
>>>> infer that example:A is a member of things that have shape Y. Using
>>>> the word shape instead of Class is good to avoid confusing between
>>>> OWL and this standard, but they are the same thing just
>>>> relabelled.
>>>>
>>>>
>>>> The fact that shapes tries to avoid rdf:type at all cost is going
>>>> to be a real problem in even trivial real world cases. e.g.
>>>>
>>>> example:office example:telNo “+41 41 41 41” .
>>>>
>>>> example:person example:name “example person” ; example:telNo “+32
>>>> 32 32 32” .
>>>>
>>>> <officeShape> { example:telNo xsd:string }
>>>>
>>>> <personShape> { example:telNo xsd:string example:name xsd:string }
>>>>
>>>> Is example:office a member of the <personShape> just without a
>>>> phone number? Yes or No. If it is not clear in this trivial
>>>> example, how can we [tell] end users, reason about it and build
>>>> stable software?
>>>>
>>>> LDOM, SPIN and OCLS all solve this by depending on the rdf:type.
>>>> Its simple and clear cut.
>>>>
>>>> Now sometimes a direct rdf:type use is not enough or can be
>>>> confusing. Because, in all proposals what is lacking is associating
>>>> a shape/constraint with the context in which this constraint should
>>>> apply. Introducing a new predicate _ldom:context_ which links a
>>>> resource describing when the constraint could be used.
>>>>
>>>> e.g. ex:Rectangle a rdfs:Class ; rdfs:subClassOf rdfs:Resource ;
>>>> rdfs:label "Rectangle" ; ldom:property [ a ldom:PropertyConstraint
>>>> ; # This type declaration is optional ldom:predicate ex:height ;
>>>> ldom:minCount 1 ; ldom:maxCount 1 ; ldom:valueType xsd:integer ;
>>>> rdfs:label "height" ; rdfs:comment "The height of the Rectangle.” ;
>>>> ldom:context ex:Normal_Geometry ; # Here we say where we intent
>>>> the context to apply ] . ex:Normal_Geometry rfds:label “Euclidean
>>>> geometry in 2 dimensions” .
>>>>
>>>> If we give each ldom:property an explicit way to state in which
>>>> context they apply we can actually deal with different people using
>>>> foaf:person in multiple manners. e.g. the constraints on
>>>> foaf:person data being submitted to a restaurant reservation site
>>>> is different to the constraints on foaf:person data being submitted
>>>> to a car rental site.
>>>>
>>>> The LDOM processor can then choose to state which contexts applies
>>>> to its users needs. The default would sensibly be all, and allow
>>>> users to white or black lists to include or exclude contexts as
>>>> they want.
>>>>
>>>> This is a much cleaner solution than the shapes one. In shapes we
>>>> attempt to separate the ontologies and their constraints to avoid
>>>> constraint collisions, but we just hope that we don’t import them
>>>> anyway. With this context suggestion, constraint collisions become
>>>> something we can deal with.
>>>>
>>>> The advantage of attaching a context to constraints is that you can
>>>> then say something like a post request with RDF data to book the
>>>> rental of a car requires 1 driver, 1 driver license and 1 payment
>>>> method. Currently in shapes and ldom, an empty message validates as
>>>> well :( Plus it allows users to communicate when constraints should
>>>> hold and when not. e.g. describing the steps in a wizard, step 1
>>>> has less constraints on the submitted data then after step 2.
>>>>
>>>>
>>>> Secondly, I do think that ldom should be able to work from
>>>> predicates as well.
>>>>
>>>> ex:widthIn_cm a rdf:Property ; rdfs:label “width in centimetre” ;
>>>> ldom:property [ ldom:valueType xsd:positiveInteger ldom:context
>>>> ex:realSpace ] .
>>>>
>>>> Allowing this kind of construct should help the dc:terms case where
>>>> rdf:types are not specified.
>>>>
>>>> While modelling from a predicate is not everyone’s cup of tea I
>>>> find that it meshes nicely with the Smalltalk message based OO
>>>> paradigm, in comparison to the conventional ADT type OO paradigm of
>>>> Java&C++. Which is why I believe it should have a place in this
>>>> standard.
>>>>
>>>> Sometimes data does not have types associated with them. In this
>>>> relatively rare case I humbly suggest that the user use an existing
>>>> W3C standard to infer a type: namely OWL. And if OWL doesn’t float
>>>> their boat then use a SPARQL update statement. Totally typeless
>>>> data is rare and should not be the primary use case for this WG.
>>>>
>>>> e.g.
>>>>
>>>> <officeShape> { example:telNo xsd:string }
>>>>
>>>> is practically equivalent to
>>>>
>>>> : officeShape a owl:Class ; rdfs:subClasOf [ a owl:Restriction ;
>>>> owl:onProperty example:telNo ; owl:minCardinality 1 . ].
>>>>
>>>> In both cases some kind of reasoning has to take place to determine
>>>> if the following triple
>>>>
>>>> example:office example:telNo “+41 41 41 41” .
>>>>
>>>> means that triples about example:office meet the criteria of
>>>> <officeShape>.
>>>>
>>>> Now get back to work and standardise something fantastic !
>>>>
>>>> Sincere regards, Jerven Bolleman
>>>>
>>>> [1] If it quacks like a duck and does not carry a shotgun then for
>>>> all practical purposes it is a duck. All though for our favourite
>>>> instance example Dick Cheney its “If it quacks like a duck then its
>>>> a target” ;) even if what quacks wears a bright fluorescent jacket
>>>> and practices law.
>>>>
>>>> -------------------------------------------------------------------
>>>> Jerven Bolleman Jerven.Bolleman@isb-sib.ch
>>>> SIB Swiss Institute of Bioinformatics Tel: +41 (0)22 379 58 85
>>>> CMU, rue Michel Servet 1 Fax: +41 (0)22 379 58 58
>>>> 1211 Geneve 4, Switzerland www.isb-sib.ch - www.uniprot.org
>>>> Follow us at https://twitter.com/#!/uniprot
>>>> -------------------------------------------------------------------
>>>>
>>>>
>>>>
>>
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBAgAGBQJUxv0mAAoJECjN6+QThfjzEOQH/jVlxSDlvou7MBMVhvN4YSTs
UX7Hxkr+zsAARuPJN7v2+cM4YF10tZEIzmuWS7E4J6qyHaumxVxkrexnKZzqr49Z
BXTNEqXlrp0aYb/Z4p/Y45Mr3tLiBQ6lReSSFcdfI1py/FVJ4mdnOXviCshodno6
CBWGbQlaED+2/PpCw41hQI7aIzBw7wq0uzlcaks+h4GJBSq4bCWQo60m4HS5ooMK
keJuID/DcKofP/W3KkdRjLujHy4kuR+h+j+KjgURf9Z+VLv8e0UMVmWpE/PIcA4l
/mVTypyTk/LPrrvkwqp5zQmK6C7VfifDHxLL1OHbTl/7CiBhD1Bx/K0sj/YHjpc=
=zxVR
-----END PGP SIGNATURE-----
Received on Tuesday, 27 January 2015 02:51:49 UTC