shapes-ISSUE-41 (property paths (sh:path?)): Using property paths to refer to values/types? [SHACL Spec]

shapes-ISSUE-41 (property paths (sh:path?)): Using property paths to refer to values/types? [SHACL Spec]

http://www.w3.org/2014/data-shapes/track/issues/41

Raised by: Simon Steyskal
On product: SHACL Spec

Hi!

Do we (want to) support property paths for referring to other values/types?

Consider e.g. a concept ex:Track with two properties ex:kmLeft and ex:kmRight and I want to state, that ex:kmLeft must have a value > than the value of ex:kmRight. How could I achieve that in SHACL?

ex:Track a rdfs:Class;
  sh:property [
    sh:predicate ex:kmLeft;
    sh:minExclusive (path to ex:kmRight's value);
  ] .

Probably, I could use a sh:Function to retrieve the respective ex:kmRight value? ->

ex:Track a rdfs:Class;
  sh:property [
    sh:predicate ex:kmLeft;
    sh:minExclusive ex:kmRightValue;
  ] .

ex:kmRightValue a sh:Function;
  sh:returnType xsd:integer;
  sh:argument [
    sh:predicate sh:arg1 ;
    sh:valueType ex:Track;
  ];
  sh:sparql """ 
    SELECT (?value AS ?result) 
      WHERE { 
         ?arg1 ex:kmRight ?value .
      }  
  """ . 

Should that be the "proposed best practice"?

simon

(In Section [1.3] there is still a reference to a property called sh:path which seems to be outdated?) 

[1.3] http://w3c.github.io/data-shapes/shacl/#introduction-overview-advanced

Received on Tuesday, 7 April 2015 08:27:57 UTC