TopQuadrant Shacl 规则引擎迭代推理
TopQuadrant Shacl Rule Engine Iterative inference
Shacl API 规则引擎是否像 TopBraid Composer 那样支持 sh:order 规则执行。
我在 TBC 中测试了规则排序,它迭代进行直到达到固定点。没有更多的规则要执行。我怀疑它被认为是一次通过,但规则是优先的,并且它们的结果可用于在同一遍中执行的下一个规则。
无论如何,不管这是如何实现的,我想知道它是 shacl 规则引擎的一个特性还是特定于 TopBraid composer 的实现。
以下线程暗示了我正在寻找但达不到的答案。
How to input inferred triples to (other) SHACL rules?
当前的 SHACL API 不进行开箱即用的迭代。 RuleEngine 对所有规则进行一次迭代,这些规则可以按照
处的大纲访问彼此的结果
https://w3c.github.io/shacl/shacl-af/#rules-execution
要进行迭代循环,只需调用 RuleEngine.executeAll 直到一轮没有创建任何新的推论。需要注意避免无限循环,因为某些规则在理论上可能会产生空白节点、随机值等。TopBraid Composer 会自动执行此循环。
Shacl API 规则引擎是否像 TopBraid Composer 那样支持 sh:order 规则执行。
我在 TBC 中测试了规则排序,它迭代进行直到达到固定点。没有更多的规则要执行。我怀疑它被认为是一次通过,但规则是优先的,并且它们的结果可用于在同一遍中执行的下一个规则。
无论如何,不管这是如何实现的,我想知道它是 shacl 规则引擎的一个特性还是特定于 TopBraid composer 的实现。
以下线程暗示了我正在寻找但达不到的答案。
How to input inferred triples to (other) SHACL rules?
当前的 SHACL API 不进行开箱即用的迭代。 RuleEngine 对所有规则进行一次迭代,这些规则可以按照
处的大纲访问彼此的结果https://w3c.github.io/shacl/shacl-af/#rules-execution
要进行迭代循环,只需调用 RuleEngine.executeAll 直到一轮没有创建任何新的推论。需要注意避免无限循环,因为某些规则在理论上可能会产生空白节点、随机值等。TopBraid Composer 会自动执行此循环。