Re: proposal for issue-211

Dimitris,

I have to admit that I would need a lot of explanations to understand the proposed changes as I am not as versed as the two of you in all the details. With this, my input here is at a higher level - from the end user requirements perspective. It doesn’t consider at all the “beauty” or elegance or clarity of the metamodel which, in any case, is in the eye of a beholder. I also can’t speak about the possible burden to implementers, Holger and you would understand this better.

So, looking at it from the requirements perspective of users who will be deciding if they should use SHACL:

Any time I hear "algorithms become more complicating” I become anxious about performance. Complex algorithms slow things down and users have little tolerance for waiting.

I become even more anxious when I hear "more different ways to express the same thing”. In my experience, this a key barrier to adoption. 

Users, as they start to understand something, do not want to hear “you can do it this way and that way and 5 other ways”. This is too overwhelming for them. They perceive such flexibility as being too complex and unclear and, in most cases, just walk away. 

I don’t think that, at that level, they care much or even able to understand the elegance of the metamodel, they just want to know how to create shapes that they need. Flexibility that they seek is flexibility of SHACL to support their requirements for expressing a variety of different, often unique to them business rules in shapes. This is good and very necessary. Flexibility to say the same thing in different ways is bad.

The interoperability implications Holger brings up are also real.

Irene

> On Dec 8, 2016, at 2:01 AM, Dimitris Kontokostas <kontokostas@informatik.uni-leipzig.de> wrote:
> 
> To answer some of the above comments
> 
> Irene, we remove constructs from the language structure that we can put back as constraint components 
> Holger explains the effect of this change in the current language
> 
> Holger, IBM Resource shapes was a good language but we overloaded that with focus node constraints and sparql constraints.
> Until these were separate everything was clear and we had a clear OO design. After we merged node constraints with Shapes, definitions & overlaps of shapes, constraints and property constraints are not so clear in the spec.
> 
> I would like to hear what others feel about this change
> 
> 
> On Thu, Dec 8, 2016 at 1:29 AM, Irene Polikoff <irene@topquadrant.com <mailto:irene@topquadrant.com>> wrote:
> I do remember long discussions regarding nodes over resources that happened well over a year ago. 
> 
> At that time, I was advocating the use “resource” in the spec. I believe it was Peter who said we could/shouldn’t use it. I could never understand why for longer than 5 minutes at a time. That is, I would understand the arguments and then loose their logic just a little later. This means that, while may be formally correct on some level, the arguments were very counterintuitive. In any case, everyone was persuaded by Peter and we settled on using “nodes”. I thought it would make harder to write and understand the spec. And I think it did.
> 
> So, as you Holger, I felt deja vu when this came about again with a complete reversal.
> 
> 
>> On Dec 7, 2016, at 6:10 PM, Holger Knublauch <holger@topquadrant.com <mailto:holger@topquadrant.com>> wrote:
>> 
>> The problem that this WG has is that the same topics are being reopened and rediscussed over and over again. The node-vs-resource discussion has happened many times over the last two years. Likewise the metamodel discussions are now reopened even though we already spent several months on this. We are clearly on the path of self-destruction. It is fine to have different opinions but topics like these do not have black and white answers. In such a situation, the process needs to include deadlines and have cut-off rules for discussions that simply bounce back and forth. Not everyone will get their will, and yes I still don't like the very concept of shapes and believe we should have just used classes. Many unnecessary discussions would have been avoided this way. In the end we all need to compromise and move on.
>> 
>> Since the very beginning of the WG we had a design based on Resource Shapes in which shapes pointed at property constraints which pointed back to shapes. This design is easy to understand and well established, e.g. due to its similarity with OO modeling and XML schema. Shapes are like classes, and property constraints are like attributes and relationships of those classes. We have successfully lived with this design for a long time now, SHACL has been used in practice based on this design and feedback from our co-workers and customers is overwhelmingly positive. Some details (such as corner cases) have been pointed out over time but we have addressed them one by one. Nothing is fundamentally broken right now. None of the comments from the last three months caused any changes to the implementations, they were largely editorial.
>> 
>> There is any number of possible metamodels that we could continue to try out. The proposed changes basically have two effects:
>> 
>> a) Targets are being generalized so that any constraint (i.e. also property constraints and SPARQL constraints) can serve as entry points. While this is technically possible, it is IMHO an unnecessary change and one that just adds to the cost of learning and using SHACL, and to the cost for implementers because there are now many more ways that people could edit constraints. Form generation algorithms become more complicating. Editing tools need to support the additional patterns. The more different ways we have to express the same thing, the less interoperability we will have.
>> 
>> b) Property constraints can directly point at other property constraints. This is again technically possible but adds little to no practical value. The same can be achieved with path expressions and nested shapes already. And it breaks the simple OO-like design that we currently have, for no convincing reason.
>> 
>> In contrast to what Dimitris states, I believe making the suggested change will have enormous costs. It is a fundamental change to the metamodel. Every previous decision and discussion will need to be revisited. Nobody has practical experience with this design. I am strongly against making such a radical change a few weeks before we are trying to reach closure and CR status. The perceived benefits are subjective and speculative, while the cost of the change is very real. Furthermore, as explained above, I don't like the new design at all. To me as a tool implementer this is significantly adding to the costs. Also, while it solves some issues it introduces other problems, e.g. the overlap between sh:shape and sh:property.
>> 
>> Oh and BTW the example that Dimitris gave is incorrect. It would need to be an instance of sh:PropertyShape instead of sh:Shape:
>> 
>> ex:S1 a sh:PropertyShape ;  # not sh:Shape
>>   sh:targetClass ex:Person;
>>   sh:predicate ex:name ;
>>   sh:minCount 1 .
>> 
>> The speculation that this may move us quicker to CR status is based on the assumption that it will appease Peter. Sorry, but Peter is not the only person who has an opinion or the right to submit feedback. There will be a lot of other people commenting and some of them may actually get confused by the new design's flexibility. We cannot make everyone happy. As long as we can prove that we have discussed the concerns, we can be confident to move on even if we disagreed with the suggestions.
>> 
>> Dimitris: is this really a blocker for you or could you live with a -0.9 on the current design?
>> 
>> Arnaud: we need proper deadlines and shift gears. This isn't going to converge otherwise.
>> 
>> Holger
>> 
>> 
>> 
>> On 8/12/2016 7:51, Dimitris Kontokostas wrote:
>>> Hi Irene,
>>> 
>>> in my opinion, the language is greatly simplified since now everything is a Shape so we have fewer definitions. 
>>> in addition, sh:property is not part of the language anymore but only a constraint component like sh:shape.
>>> 
>>> practically, 
>>> if we choose to maintain backwards compatibility this change will have no effect on most of the current SHACL syntax.
>>> in addition, it will enable some useful shortcuts for some users and it will make the syntax more intuitive for cases that would most probably lead to invalid shape definitions
>>> 
>>> see for example a recent patch on the validation definition
>>> http://w3c.github.io/data-shapes/shacl/#validation <http://w3c.github.io/data-shapes/shacl/#validation>
>>> "A node conforms to a shape if and only if the node conforms to all of the constraints of the shape. Note that validation against a shape processes the shape as a focus node constraint only, even if the shape may have rdf:type triples or an expected type that would also make it a property constraint."
>>> 
>>> On Wed, Dec 7, 2016 at 10:05 PM, Irene Polikoff <irene@topquadrant.com <mailto:irene@topquadrant.com>> wrote:
>>> Dimitris,
>>> 
>>> What does this practically mean? 
>>> 
>>> 100% percent of our users 90+% percent of the time will describe shapes with constraints on multiple properties. Thus, shapes that only support a description of a single property constraint are of no practical interest to them and to address their needs, the language has to makes it easy to write and understand shapes that define conditions for multiple properties.
>>> 
>>> I suppose if there is no effect on the existing syntax, these requirements are addressed. But then, what problem are we solving? How does adding another way to say the same thing simplifies something?
>>> 
>>>> On Dec 7, 2016, at 4:06 AM, Dimitris Kontokostas <kontokostas@informatik.uni-leipzig.de <mailto:kontokostas@informatik.uni-leipzig.de>> wrote:
>>>> 
>>>> here's the motivation behind this proposal
>>>> It makes shacl more flexible and simplifies the language and the metamodel a lot with minimal changes in the current syntax and no effect on shacl full
>>>> it removes any corner cases  / grey areas that have been pointed out in the past and we are patching / extending definitions to cover
>>>> It makes it much easier to explain and define SHACL. 
>>>> 
>>>> Even though this requires to rewrite some parts of the spec, I believe it will take us faster to CR
>>>> 
>>>> (attaching this to another issue is fine by me)
>>>> 
>>>> 
>>>> On Wed, Dec 7, 2016 at 10:25 AM, Holger Knublauch <holger@topquadrant.com <mailto:holger@topquadrant.com>> wrote:
>>>> Could you summarize what motivates this change? The "issue" mentioned in the email that you quote below is irrelevant. Users will *not* write such shapes. What is broken with the current design?
>>>> 
>>>> Holger
>>>> 
>>>> 
>>>> 
>>>> On 7/12/2016 17:38, Dimitris Kontokostas wrote:
>>>>> After a lot of thought, I would like to propose a change in shacl to close this issue.
>>>>> 
>>>>> the change is a slight variation of Peter's proposal option #2 from this email
>>>>> https://lists.w3.org/Archives/Public/public-rdf-shapes/2016Nov/0053.html <https://lists.w3.org/Archives/Public/public-rdf-shapes/2016Nov/0053.html>
>>>>> 
>>>>> The variation adds the notion of sh:PropertyShape as a subClass of sh:Shape.
>>>>> This makes it easier to define some annotation properties like sh:label that make sense on properties only and gives us the option to keep sh:property in the language if we want to.
>>>>> 
>>>>> if we decide to keep sh:property, it will become a constraint like sh:shape but it will make all our existing syntax valid and with the exact same behaviour.
>>>>> So this approach will have no effect on the existing syntax but will also regularise the language and enable some new shorter forms of shapes e.g.
>>>>> 
>>>>> ex:S1 a sh:Shape ;
>>>>>   sh:targetClass ex:Person;
>>>>>   sh:property [
>>>>>     sh:predicate ex:name ;
>>>>>     sh:minCount 1 .
>>>>>   ]
>>>>> 
>>>>> could be also written as 
>>>>> 
>>>>> ex:S1 a sh:Shape ;
>>>>>   sh:targetClass ex:Person;
>>>>>   sh:predicate ex:name ;
>>>>>   sh:minCount 1 .
>>>>> 
>>>>> if we decide to drop sh:property we would use sh:shape instead and reduce the alternate ways we can define the same thing.
>>>>> 
>>>>> I also checked this offline with Peter and he is willing to help us get the new terminology right should we decide to go this way
>>>>> 
>>>>> Best,
>>>>> Dimitris
>>>>> 
>>>>> -- 
>>>>> Dimitris Kontokostas
>>>>> Department of Computer Science, University of Leipzig & DBpedia Association
>>>>> Projects: http://dbpedia.org <http://dbpedia.org/>, http://rdfunit.aksw.org <http://rdfunit.aksw.org/>, http://aligned-project.eu <http://aligned-project.eu/>
>>>>> Homepage: http://aksw.org/DimitrisKontokostas <http://aksw.org/DimitrisKontokostas>
>>>>> Research Group: AKSW/KILT http://aksw.org/Groups/KILT <http://aksw.org/Groups/KILT>
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> -- 
>>>> Dimitris Kontokostas
>>>> Department of Computer Science, University of Leipzig & DBpedia Association
>>>> Projects: http://dbpedia.org <http://dbpedia.org/>, http://rdfunit.aksw.org <http://rdfunit.aksw.org/>, http://aligned-project.eu <http://aligned-project.eu/>
>>>> Homepage: http://aksw.org/DimitrisKontokostas <http://aksw.org/DimitrisKontokostas>
>>>> Research Group: AKSW/KILT http://aksw.org/Groups/KILT <http://aksw.org/Groups/KILT>
>>>> 
>>> 
>>> 
>>> 
>>> 
>>> -- 
>>> Dimitris Kontokostas
>>> Department of Computer Science, University of Leipzig & DBpedia Association
>>> Projects: http://dbpedia.org <http://dbpedia.org/>, http://rdfunit.aksw.org <http://rdfunit.aksw.org/>, http://aligned-project.eu <http://aligned-project.eu/>
>>> Homepage: http://aksw.org/DimitrisKontokostas <http://aksw.org/DimitrisKontokostas>
>>> Research Group: AKSW/KILT http://aksw.org/Groups/KILT <http://aksw.org/Groups/KILT>
>>> 
>> 
> 
> 
> 
> 
> -- 
> Dimitris Kontokostas
> Department of Computer Science, University of Leipzig & DBpedia Association
> Projects: http://dbpedia.org <http://dbpedia.org/>, http://rdfunit.aksw.org <http://rdfunit.aksw.org/>, http://aligned-project.eu <http://aligned-project.eu/>
> Homepage: http://aksw.org/DimitrisKontokostas <http://aksw.org/DimitrisKontokostas>
> Research Group: AKSW/KILT http://aksw.org/Groups/KILT <http://aksw.org/Groups/KILT>
> 

Received on Thursday, 8 December 2016 15:13:01 UTC