- From: Arthur Ryman <arthur.ryman@gmail.com>
- Date: Wed, 24 Jun 2015 10:36:35 -0400
- To: "public-data-shapes-wg@w3.org" <public-data-shapes-wg@w3.org>
Iovka,
I am reviewing [1]. I have a couple of questions about the abstract syntax.
1. The grammar production reads:
ShapeConstr ::= ('!')? DisjShapeConstr | ConjShapeConstraint
The alternation operator "|" has lower precedence than forming
sequences of terms, so I read this as only allowing negation of
DisjShapeConstr. However, the following text says "Additionally, a
shape constraint can be negated, when preceded by an exclamation
mark". which implies you can negate a ConjShapeConstraint. If that is
correct, then don't you need parentheses like so?:
ShapeConstr ::= ('!')? (DisjShapeConstr | ConjShapeConstraint)
2. The grammar is ambiguous because a single ShapeLabel matches both
DisjShapeConstr and ConjShapeConstraint:
DisjShapeConstr ::= ShapeLabel ('or' ShapeLabel)*
ConjShapeConstraint ::= ShapeLabel ('and' ShapeLabel)*
This can be corrected by requiring at least one 'or' in DisjShapeConstr:
DisjShapeConstr ::= ShapeLabel ('or' ShapeLabel)+
ConjShapeConstraint ::= ShapeLabel ('and' ShapeLabel)*
[1] http://w3c.github.io/data-shapes/semantics/
-- Arthur
Received on Wednesday, 24 June 2015 14:37:09 UTC