- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Sun, 25 Jan 2015 06:54:34 -0800
- To: Jerven Bolleman <jerven.bolleman@isb-sib.ch>, public-data-shapes-wg@w3.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 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 iQEcBAEBAgAGBQJUxQOqAAoJECjN6+QThfjzvMsH/Rk8V28jZcoBIFiJRKcL5Xf1 uinMqRGlIkY5YTlr3/NXFm0G8osRWKXfdQaR4dlv6Q5kxAaxaTk6W6NfLBYpemJC QRd6y18pScv+1N7q4CsijgZTCv6iorrb0aZxBkRCPmxde3E4rdUQh7NS6skKIzjD j/0sO8NzuAMKloJ+w/6Q+7CiNKG10tNBgx+kkUR2MZMkvH1/57Oj22/qspUdrnKM K8XkB/WmMGMhnwVK4Uou8pdo7aJWlI9J92bvow6t/mRENluwv/XnGP27BfulcuuV 3gM5ZvvBxpMgTQNfGjD+wcBcIV/a4GzAiDL0QjipSvSzf+6aMyqCbg+5ogmWSyY= =BPbp -----END PGP SIGNATURE-----
Received on Sunday, 25 January 2015 14:55:10 UTC