RE: ShEx negation of edge path

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