Hi,
I am trying to recreate a recursive magic property, using a SHACL property
shape. However, I suspect that the reason the recursion is not working is
because the property identified in the sh:path statement isn't really a
function in the same sense as a magic property is a function.

My shape code is as follows:

qudt:QuantityKind-appropriateUnit

  rdf:type sh:NodeShape ;

  sh:property [

      rdf:type sh:PropertyShape ;

      sh:path qudt:dappropriateUnit ;

      sh:values [

          sh:prefixes <http://qudt.org/2.1/schema/shacl/overlay/qudt> ;

          sh:select """SELECT DISTINCT ?unit

WHERE {

    {

        ?unit qudt:hasQuantityKind $this .

    }

    UNION

    {

        NOT EXISTS {

            ?unit qudt:hasQuantityKind $this .

        } .

        $this skos:broader ?parent1 .

        ?parent1 qudt:dappropriateUnit ?unit .

    } .

}  """ ;

        ] ;

    ] ;

  sh:targetClass qudt:QuantityKind ;

.

The non-recursive part works (the first clause of the union). But the
second union clause does not work. Is there a way to make the
qudt:dappropriateUnit property know that there's this associated sh:values
clause?

Steve

-- 
You received this message because you are subscribed to the Google Groups 
"TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to topbraid-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/topbraid-users/CAGUep86_5U4TAKX-Jjb5erVdzZZZ9Xrfvv5%3DOzNJi-69gCjdzg%40mail.gmail.com.

Reply via email to