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.