问题标签 [topbraid-composer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
63 浏览

rdf - 如何通过 SHACL 中的两条路径比较个体?

此问题与此链接中的问题有关。假设这是一个“扩展问题”。

该链接上的本体包含以下个人:

现在我在本体中添加了以下三元组:

即:“:x 是 Approve 动作 :a 的代理”,“:m1 是 :x 的朋友”。

在上面链接的问题中,我想编写一个 SHACL 规则,说明“每个批准操作在其主题中至少有一个来自男人的结果是合法的”。

Holger 建议我使用 SHACL 规则的以下条件(先决条件)。条件有效(感谢 Holger!):

现在我想扩展上述条件以获得以下扩展 SHACL 规则:“每个 Approve 动作在其主题中至少有一个来自Approve 动作代理的朋友的人的结果是合法的”。

基本上:我想从 Approve 动作“:a”开始,从一条路径获取它的代理,将产生结果的人的朋友作为另一条路径的“:a”主题......并通过以下方式比较个体对这些路径,即在它们匹配时询问它们。

我尝试以多种方式扩展上面的 :conditionTest,例如,使用 sh:equals:

但是我尝试过的任何解决方案都不起作用。另一方面,如果我使用 sh:hasValue 并且我明确提到了个人 :x,即:

有用。但这实际上并不是我想要的:a 想要一个适用于任何个人的 SHACL 规则,作为 :a 的 has-agent。换句话说:我想通过路径“(sh:this has-agent)”来获取和比较这个人。

希望你们中的任何人都知道一种方法。提前致谢。利维奥