用于子图验证的 SHACL 形状
SHACL shapes for sub-graph validation
我想使用 SHACL 验证子图中谓词的顺序。从理论上讲,我认为我必须对链接在一起的每个谓词使用 SHACL 形状,然后定义一个条件语句来检查第一个谓词是否存在,然后继续遍历下一个谓词的图。
例如:
<bob> foaf:knows <emma>.
<emma> ontology1:gender <woman>.
<woman> ontology1:species <human>.
<human> ontology2:category <earth>.
在此,我想检查谓词的顺序:-
foaf:知道 -> ontology1:gender -> ontology1:species -> ontology2:category
我翻阅了大量文档,但尚未找到相关示例。知道如何使用 SHACL 核心功能做到这一点吗?或者甚至使用 SHACL-SPARQL?
如果 ontology1:gender
和 ontology1:species
不能有多个值,则使用 objects-of targets and sequence paths。像这样:
:FellowShape
sh:targetObjectsOf foaf:knows ;
sh:property [
sh:path (ontology1:gender ontology1:species ontology2:category) ;
sh:message "Property chain is broken" ;
sh:minCount 1
] .
作为替代方案,重要的一点是目标需要是启动 属性 链的三元组的一部分。在本例中,它是 foaf:knows 的对象。有几种方法可以做到这一点,包括:
:FellowShape
sh:targetNode :emma ;
sh:property [
sh:path (ontology1:gender ontology1:species ontology2:category) ;
sh:message "Property chain is broken" ;
sh:minCount 1
] .
请注意,使用 sh:targetNode :emma
而不是 sh:targetObjectsOf foaf:knows
,两者都告诉 Shape 规范以 foaf:knows :emma
.
开头
我想使用 SHACL 验证子图中谓词的顺序。从理论上讲,我认为我必须对链接在一起的每个谓词使用 SHACL 形状,然后定义一个条件语句来检查第一个谓词是否存在,然后继续遍历下一个谓词的图。
例如:
<bob> foaf:knows <emma>.
<emma> ontology1:gender <woman>.
<woman> ontology1:species <human>.
<human> ontology2:category <earth>.
在此,我想检查谓词的顺序:-
foaf:知道 -> ontology1:gender -> ontology1:species -> ontology2:category
我翻阅了大量文档,但尚未找到相关示例。知道如何使用 SHACL 核心功能做到这一点吗?或者甚至使用 SHACL-SPARQL?
如果 ontology1:gender
和 ontology1:species
不能有多个值,则使用 objects-of targets and sequence paths。像这样:
:FellowShape
sh:targetObjectsOf foaf:knows ;
sh:property [
sh:path (ontology1:gender ontology1:species ontology2:category) ;
sh:message "Property chain is broken" ;
sh:minCount 1
] .
作为替代方案,重要的一点是目标需要是启动 属性 链的三元组的一部分。在本例中,它是 foaf:knows 的对象。有几种方法可以做到这一点,包括:
:FellowShape
sh:targetNode :emma ;
sh:property [
sh:path (ontology1:gender ontology1:species ontology2:category) ;
sh:message "Property chain is broken" ;
sh:minCount 1
] .
请注意,使用 sh:targetNode :emma
而不是 sh:targetObjectsOf foaf:knows
,两者都告诉 Shape 规范以 foaf:knows :emma
.