I have read in the SHACL-AF spec that rules are applied in strict sh:order 
precedence, and there is no way to control intra-order execution. Are there 
any plans to allow for iterative entailment where rules are applied until 
no new triples are inferred (a stable state is achieved), the way regular 
inference engines work? 

Here is my particular use case - I would like to be able to enforce, via 
SHACL, the maximum depth of a SKOS-based taxonomy. Using something like a 
Datalog engine, I would be able to set up the following rules:

[?topConcept,:hasDepth,0] :- [?any, skos:hasTopConcept, ?topConcept].
[?concept,:hasDepth,?plusOne] :- 
    [?concept, skos:broader, ?broader],
    [?broader, :hasDepth, ?depth],
    BIND(?depth + 1 as ?plusOne).

I could then set up a shape with a max value for the :hasDepth property. 
But SHACL rules, as currently specified, would not allow me to achieve this 
goal. Is there an alternative path?

PS I know I would be able to do this with a query if I could guarantee that 
every concept had at most 1 skos:broader, but since that property is not 
functional and polyhierarchies are something I need to be able to handle, 
that's not an option.

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/topbraid-users/94646524-3f45-4668-8c31-d07a8dcfd79en%40googlegroups.com.

Reply via email to