acl规则中的多路径和存在量化(我是否应该使用sh:oneOrMorePath ?)



我想了解如何处理SHACL规则中的多路径和存在量化。让我用一个样本本体来说明我的问题。

本体包括类"approve"、"legal"、"result"、"man"one_answers"machine",它们都是不相交的。它有两个属性" has-theme "one_answers";come-from"以及以下个人:

:a rdf:type :Approve ;
:has-theme :r1,:r2 .
:r1 rdf:type :Result ;
:come-from :m1 .
:r2 rdf:type :Result ;
:come-from :m2 .
:m1 rdf:type :Man .
:m2 rdf:type :Machine .

因此:Approve动作":a"有两个主题:"; "one_answers":r2"。前者来自Man ":m1",后者来自Machine ":m2"

我想写一个acl规则,声明"每个在其主题中至少有一个Result来自于一个人的Approve操作是合法的"。

我试过这个,做NOT分类":a"作为合法的(但它应该):

:testRule rdf:type sh:NodeShape;
sh:rule [rdf:type sh:TripleRule;
sh:condition :conditionTest;
sh:subject sh:this;
sh:predicate rdf:type;
sh:object ontology:Legal
];
sh:targetClass ontology:Approve.
:conditionTest
rdf:type sh:NodeShape;
sh:property 
[
#IF the theme of the Approve action is a Result come from a Man
sh:path (ontology:has-theme ontology:come-from);
sh:class ontology:Man
].

问题是":a">有两个主题,一个来自人,另一个来自机器。

然后我在网上看到关于sh:oneOrMorePath的信息,我在sh:property中尝试了以下变体:

sh:oneOrMorePath (ontology:has-theme ontology:come-from);
sh:path ([sh:oneOrMorePath ontology:has-theme] ontology:come-from);
sh:path (ontology:has-theme [sh:oneOrMorePath ontology:come-from]);

没办法,这些变体也不能用

另一方面,如果我删除三元组":r2:come-from:m2"或者三元组&;a:has-theme:r2&;它是有效的,因为在本体论中没有更多的分支从"给一个非人类。

你们谁能这么好心地帮助我?

谢谢!

您的需求声明"在其主题中至少有一个来自man的Result";对我来说,这听起来像是存在的限制。因此,您不能在这里真正使用sh:类,但您可能更希望使用限定值约束。

我还没有试过,但是像这样的东西可能会起作用:

:conditionTest
rdf:type sh:NodeShape ;
sh:property [
sh:path (ontology:has-theme ontology:come-from) ;
sh:qualifiedMinCount 1 ;
sh:qualifiedValueShape [
sh:class ontology:Man ;
]
] .

这应该意味着路径has-theme/come-from中至少有一个值必须符合限定值形状,这意味着它必须是Man的一个实例。

请参阅https://www.w3.org/TR/shacl/#QualifiedValueShapeConstraintComponent,以了解acl中qvc的规范。

如果您可以使用ssh - sparql并导入破折号命名空间,您也可以简单地编写破折号:hasValueWithClass本体:Man,参见http://datashapes.org/constraints.html#HasValueWithClassConstraintComponent

相关内容

  • 没有找到相关文章

最新更新