slanted W3C logo
Cover page images (keys)

ShEx Intro

RDF Data Shapes WG F2F
31 October, 2014

What it is

:

Universal constraints

my:name-status a rs:ResourceShape ;
    rs:property [
        rs:name "name" ;
        rs:propertyDefinition ex:name ;
        rs:valueType xsd:string ;
        rs:occurs rs:Exactly-one ;
    ] ;
    rs:property [
        rs:name "status" ;
        rs:propertyDefinition ex:status ;
        rs:allowedValue ex:unassigned , ex:assigned ;
        rs:occurs rs:Zero-or-one ;
    ] .

equivalent to

my:name-status {
  ex:name xsd:string ,
  ex:status ( ex:unassigned ex:assigned )?
}

But what's that mean?

I guessed it was a universal, non-qualified constraint.

SELECT ?S {
    { SELECT ?S (COUNT(*) AS ?S_c0) {
      ?S ex:name ?o .
    } GROUP BY ?S}
    { SELECT ?S (COUNT(*) AS ?S_c1) {
      ?S ex:name ?o .
      FILTER(datatype(?o) = xsd:string)
    } GROUP BY ?S}
    FILTER (?S_c0 = ?S_c1 &&
            ?S_c0 = 1)
    { SELECT ?S (COUNT(*) AS ?S_c2) {
      ?S ex:status ?o .
    } GROUP BY ?S}
    { SELECT ?S (COUNT(*) AS ?S_c3) {
      ?S ex:status ?o .
      FILTER ((?o = ex:unassigned ||
               ?o = ex:assigned))
    } GROUP BY ?S}
    FILTER (?S_c2 = ?S_c3 &&
            (?S_c0 = 0 || ?S_c0 = 1))
}
Datatype: xsd:string 
DataProperty: ex:name 
ObjectProperty: ex:status 
    
Class: ex:name-status 
    SubClassOf: 
        ex:name exactly 1 rdfs:Literal ,
        ex:status only ({ ex:assigned , ex:unassigned }) ,
        ex:status max 1 ,
        ex:status min 0 
    
Individual: ex:assigned 
Individual: ex:unassigned 

Jose's slides:

http://www.slideshare.net/jelabra/semantics-2014 (start at slide 14)

Issues:

Resources