- From: Holger Knublauch <holger@topquadrant.com>
- Date: Wed, 5 Aug 2015 09:54:00 +1000
- To: RDF Data Shapes Working Group <public-data-shapes-wg@w3.org>
May I remind the working group that we had made a formal resolution [1] in February to "explore ways to combine shapes and classes such as punning", following very extensive and controversial "shapes-vs-classes" discussions. I assume that the term "exploring" was meant with good faith, and that WG members now make serious attempts to find a compromise here. Some of you may also remember that TopQuadrant's original LDOM proposal, based on the established design of SPIN, was centered around Classes, and Shapes were some kind of "abstract" classes. I still believe this design would have worked at least as good as the design around sh:Shape that we agreed as a first step. A lot of follow-up decisions were made on the assumption that the WG is following up on the promise behind this resolution. If the WG now decides to not support some form of punning then TopQuadrant will be forced to reopen various other design decisions and raise strong formal objections against the specification. My sh:ShapeClass proposal was already a compromise and I am not going to back away any further on this topic. I would even go further and say that if the WG does not officially support sh:ShapeClass, then TopQuadrant's tools will still support it and establish a de-facto parallel standard. Having said this I hope that the majority of WG members recognizes that the presence of punning and sh:ShapeClass is completely harmless to those who do not want to use these features. Users who prefer to stay with sh:Shapes only are free to do so. But others who prefer to link their shapes with classes should also be allowed to do that. Live and let live. Let me re-cap the situation. We all agree that the following is a supported design pattern: ex:MyClass a rdfs:Class . ex:MyShape a sh:Shape ; sh:scopeClass ex:MyClass . All that the current draft is proposing on top of this is that MyClass and MyShape may share the same URI ("punning"): ex:MyClassAndShape a rdfs:Class ; a sh:Shape ; sh:scopeClass ex:MyClass . and furthermore, *as syntactic sugar*, the class sh:ShapeClass can be used as a combination of rdfs:Class and sh:Shape with an implicit sh:scopeClass triple in between, allowing the following compact form: ex:MyClassAndShape a sh:ShapeClass . Judging on past experience and feedback that I have received on the SHACL spec, I believe the use of sh:ShapeClass will be very common and convenient. Peter, in the early months of the WG you stated that you would prefer to use OWL for constraint definitions and to not allow any competitor to OWL and RDFS on the "modeling" turf. I believe however that the lines between modeling and constraint definitions are sufficiently blurry so that an intermingling between these worlds is unavoidable, and even desirable. When you are describing the shape of a data structure you are essentially doing the same thing as the majority of OWL users have abused OWL for in the past: you define a group of instances with similar characteristics. Countless tools have used OWL and RDFS classes for exactly the same roles that we have been tasked with in the Charter: to drive user interfaces, web service I/O, validate data etc. The whole point of the Data Shapes WG was to fill a perceived gap left by OWL and RDFS. Your points below essentially try to monopolize the notion of RDFS classes with inferencing, but in our business experience inferencing is completely overrated and just one aspect among many others. On 8/5/2015 6:26, Peter F. Patel-Schneider wrote: > Several classes in > https://github.com/w3c/data-shapes/blob/ISSUE-51/shacl/shacl.shacl.ttl > show the problems with conflating classes and shapes. The problematic > classes include sh:Shape, sh:ShapeClass, and particularly rdfs:Class. > > It looks as if > https://github.com/w3c/data-shapes/blob/ISSUE-51/shacl/shacl.shacl.ttl > defines an RDFS taxonomy and these nodes are regular RDFS classes in that > taxonomy. However, this appearance is deceiving. Only a small portion of > the RDFS meaning of classes ends up attaching to these node. I completely disagree. The by far most important aspect of classes - grouping of instances - is used by the draft in the same way as RDFS/OWL do. > The full > meaning of RDFS:subClassOf is not available for these nodes. Subproperties > of rdfs:subClass will not have any RDFS effect on these nodes. We can continue to try and find esoteric corner cases such as "sub-properties of rdfs:subClassOf" (I have never ever seen this in my 10+ years of working with RDFS), or we can try to make attempts towards a compromise. See the introduction paragraphs above. BTW this is no problem at all. There are only a couple of places where SHACL relies on rdfs:subClassOf. We could in principle adjust those so that they also work regardless of inferencing. However, my preference would be to leave the job of inferring the additional rdfs:subClassOf triples to inference engines, because these are entirely theoretical corner cases. If you disagree, you should raise a formal ISSUE about the handling of sub-properties of rdfs:subClassOf and we'll see what others in the group think. > Providing > domain and range information for properties related to these nodes will not > have any RDFS effect. Could you clarify this? If someone wants RDFS semantics, then they need to activate RDFS inferencing. If someone wants the SHACL namespace itself to be interpreted by RDFS tools then they can add rdfs:range and domain statements themselves. They are just URIs in the end. > > Some of the effects of this difference can be seen in > https://github.com/w3c/data-shapes/blob/ISSUE-51/shacl/shacl.shacl.ttl where > several classes, including rdfs:Class, are explicitly stated as being > subclasses of rdfs:Resource, which would be unnecessary under RDFS. Yes these triples are unnecessary and SHACL does not depend on them. I have added them based on a decade of frustration about the RDFS specification and countless ontologies that do not assert these triples. Tools like TopBraid are forced into running expensive inferences for use cases as trivial as displaying a class hierarchy. I wanted to make sure that such tools have it easier without relying on inferencing. If you believe these "unnecessary" triples should be deleted, please file an ISSUE. > > Because of these differences from RDFS, I believe that SHACL should not be > used for modelling taxonomies and thus that sh:shapeClass should not be part > of SHACL. I have no idea what differences you are talking about. Do you have any practical example of where the presence of sh:ShapeClass would be problematic? I have extensively used ShapeClass for a few months now and love it. We have used SPIN constraints attached to classes for many years and love it. This is just a very pragmatic feature. > > > Aside from the above, there are other modelling issues that should not > be part of SHACL. SHACL should not be used to set up object-oriented > notions, such as those coming from sh:abstract, sh:final, and sh:private, > particularly as there will be no support for enforcing their meaning. I have no strong opinion about sh:private and sh:final - these would be entirely there to help editing tools discourage certain operations by the user. But I have just raised ISSUE-78 to have sh:abstract in the language. Whether we want it or not, many people will come from an object-oriented background, and we should embrace, not alienate them. Holger [1] http://www.w3.org/2015/02/18-shapes-minutes.html#resolution01
Received on Tuesday, 4 August 2015 23:54:37 UTC