Re: ACTION: ericP to send proposal for sh:Stem in response to ISSUE-80

Hi Eric,

can you send you proposal adapted to the current SHACL spec?
Some people might not be comfortable with Peter's proposed syntax yet

Thanks

On Thu, Mar 31, 2016 at 1:03 AM, Eric Prud'hommeaux <eric@w3.org> wrote:

> PROPOSAL: add stem in
>
> * Eric Prud'hommeaux <eric@w3.org> [2016-03-09 15:01-0500]
> > Oops, forgot about this action.
> >
> > In general, stems look like this in ShExC:
> >
> > <http://a.example/S1> {
> >    <http://a.example/p1> [<http://a.example/v>~]
> > }
> >
> > this in ShExJ:
> >
> > {
> >   "type": "Schema",
> >   "prefixes": {},
> >   "shapes":{
> >     "http://a.example/S1": {
> >       "type": "Shape",
> >       "expression": {
> >         "type": "TripleConstraint",
> >         "predicate": "http://a.example/p1",
> >         "valueExpr": {
> >           "type": "ValueClass", "values": [
> >             { "type": "StemRange",
> >               "stem": "http://a.example/v"
> >             }
> >           ]
> >         }
> >       }
> >     }
> >   }
> > }
> >
> > and this in RDF:
> >
> > [ a shex:Schema ;
> >   shex:shape <http://a.example/S1> ] .
> >
> > <http://a.example/S1>
> >   a shex:Shape ;
> >   shex:expression [
> >     a shex:TripleConstraint ;
> >     shex:predicate <http://a.example/p1> ;
> >     shex:valueExpr [
> >       a shex:ValueClass ;
> >       shex:values [
> >         a shex:StemRange ;
> >         shex:stem <http://a.example/v>
> >       ]
> >     ]
> >   ] .
>
> PROPOSAL: write stems in shacl like:
>
> <http://a.example/S1> a sh:Shape;
>    sh:propValues (
>      <http://a.example/p1> [
>        sh:values [
>          a sh:StemRange;
>          shex:stem <http://a.example/v>
>        ]
>      ]
>    ).
>
> This matches { <s1> <http://a.example/p1> <http://a.example/v123> }
>          and { <s1> <http://a.example/p1> <http://a.example/v> }
>    but fails { <s1> <http://a.example/p1> <http://a.example/uv> }
>
>
> > We also have stem (- stem)* a la
> >
> > <http://a.example/S1> {
> >    <http://a.example/p1> [<http://a.example/v>~
> >                           - <http://a.example/v1>~
> >                           - <http://a.example/v2>~
> >                           - <http://a.example/v3>~]
> > }
> >
> > and
> >
> > {
> >   "type": "Schema",
> >   "prefixes": {},
> >   "shapes":{
> >     "http://a.example/S1": {
> >       "type": "Shape",
> >       "expression": {
> >         "type": "TripleConstraint",
> >         "predicate": "http://a.example/p1",
> >         "valueExpr": {
> >           "type": "ValueClass", "values": [
> >             { "type": "StemRange",
> >               "stem": "http://a.example/v",
> >               "exclusions": [
> >                 { "type": "Stem", "stem": "http://a.example/v1"},
> >                 { "type": "Stem", "stem": "http://a.example/v2"},
> >                 { "type": "Stem", "stem": "http://a.example/v3"}
> >               ]
> >             }
> >           ]
> >         }
> >       }
> >     }
> >   }
> > }
>
> PROPOSAL: write exclusions in shacl like:
>
> <http://a.example/S1> a sh:Shape;
>    sh:propValues (
>      <http://a.example/p1> [
>        sh:values [
>          a sh:StemRange;
>          shex:stem <http://a.example/v>
>          sh:exclusions: (
>            [ "type": "Stem", "stem": <http://a.example/v1> ],
>            [ "type": "Stem", "stem": <http://a.example/v2> ],
>            [ "type": "Stem", "stem": <http://a.example/v3> ]
>          )
>        ]
>      ]
>    ).
>
> This matches { <s1> <http://a.example/p1> <http://a.example/v4> }
>          and { <s1> <http://a.example/p1> <http://a.example/v456> }
>    but fails { <s1> <http://a.example/p1> <http://a.example/v2> }
>          and { <s1> <http://a.example/p1> <http://a.example/v234> }
>
>
> > You can find the stem tests in <
> http://raw.githubusercontent.com/shexSpec/shexTest/master/validation/manifest.ttl>
> with
> >
> >   SELECT * { ?s <http://www.w3.org/ns/shacl/test-suite#trait> <
> http://www.w3.org/ns/shacl/test-suite#Stem> }
> >
> > Gotta put my child to bed. will try to write to formalize later.
> > --
> > -ericP
> >
> > office: +1.617.599.3509
> > mobile: +33.6.80.80.35.59
> >
> > (eric@w3.org)
> > Feel free to forward this message to any list for any purpose other than
> > email address distribution.
> >
> > There are subtle nuances encoded in font variation and clever layout
> > which can only be seen by printing this message on high-clay paper.
>
> --
> -ericP
>
> office: +1.617.599.3509
> mobile: +33.6.80.80.35.59
>
> (eric@w3.org)
> Feel free to forward this message to any list for any purpose other than
> email address distribution.
>
> There are subtle nuances encoded in font variation and clever layout
> which can only be seen by printing this message on high-clay paper.
>
>


-- 
Dimitris Kontokostas
Department of Computer Science, University of Leipzig & DBpedia Association
Projects: http://dbpedia.org, http://rdfunit.aksw.org, http://
http://aligned-project.eu
Homepage:http://aksw.org/DimitrisKontokostas
Research Group: AKSW/KILT http://aksw.org/Groups/KILT

Received on Thursday, 31 March 2016 06:06:54 UTC