- From: Dam, Jesse van <jesse.vandam@wur.nl>
- Date: Mon, 26 May 2014 14:09:00 +0000
- To: Olivier Rossel <olivier.rossel@gmail.com>
- CC: Iovka Boneva <iovka.boneva@univ-lille1.fr>, "Gray, Alasdair J G" <A.J.G.Gray@hw.ac.uk>, Jose Emilio Labra Gayo <jelabra@gmail.com>, Eric Prud'hommeaux <eric@w3.org>, "public-rdf-shapes@w3.org" <public-rdf-shapes@w3.org>
Hi Olivier,
I think that is good, when translating it to SHEX/RDF it will look like
<XXX> a rs:ResourceShape;
...
se:subGroup [ a se:AndRuleGroup; #outer and group
rs:occurs rs:Exactly-one;
se:subGroup [ a se:AndRuleGroup; #group1
rs:occurs rs:Exactly-one;
rs:property [ a se:ValueProperty;
rs:occurs rs:Zero-or-many;
rs:name "a";
rs:propDefinition ex:a;
rs:valueType xsd:string;
].
rs:property [ a se:ValueProperty;
rs:occurs rs:Zero-or-many;
rs:name "b";
rs:propDefinition ex:b;
rs:valueType xsd:string;
].
]. #end group 1
se:subGroup [ a se:AndRuleGroup; #group 2
rs:occurs rs:Exactly-one;
se:negate "true"^^xsd:boolean
rs:property [ a se:ValueProperty;
rs:occursmin 2;
rs:occursmax 2;
rs:name "a";
rs:propDefinition ex:a;
rs:valueType xsd:string;
].
rs:property [ a se:ValueProperty;
rs:occurs rs:Exactly-one;
rs:name "b";
rs:propDefinition ex:b;
rs:valueType xsd:string;
].
]. #end group 2
]. #end outer and group
....
-This case is the (quite usual) include/exclude case that can be found -
-a lot in declarative statements, such as Ant's fileset, .gitignore...
-This is tricky to read, but very useful to modelize some tricky cases.
I think this a good statement for supporting the inclusion of negation in SHEX: Negation are tricky to read, but very useful to modelize some tricky cases.
Greetz,
Jesse
________________________________
Van: Olivier Rossel [olivier.rossel@gmail.com]
Verzonden: maandag 26 mei 2014 15:56
Aan: Dam, Jesse van
CC: Iovka Boneva; Gray, Alasdair J G; Jose Emilio Labra Gayo; Eric Prud'hommeaux; public-rdf-shapes@w3.org
Onderwerp: Re: ShEx negation of edge path
What is your opinion about the case 4 I described earler:
4) accept any combination except when two a's and one b
<XXX>{
.... ,
(:a xsd:string*, :b xsd:string*) ^ (:a xsd:string{2}, :b xsd:string),
....
}
(note that there is no , to separate the two statements).
This case is the (quite usual) include/exclude case that can be found
a lot in declarative statements, such as Ant's fileset, .gitignore...
This is tricky to read, but very useful to modelize some tricky cases.
Received on Monday, 26 May 2014 14:09:34 UTC