Re: proposal for issue-211

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
> "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://rdfunit.aksw.org, 
> http://aligned-project.eu
> Homepage: http://aksw.org/DimitrisKontokostas
> Research Group: AKSW/KILT http://aksw.org/Groups/KILT
>

Received on Wednesday, 7 December 2016 23:11:19 UTC