SHACL形状用于子图验证

问题描述

我想使用SHACL验证子图中的谓词顺序。从理论上讲,我认为我必须对链接在一起的每个谓词使用SHACL形状,然后定义一个条件语句,该条件语句检查是否存在第一个谓词,然后继续遍历图形以查找下一个谓词。

例如:

<bob> foaf:kNows <emma>.
<emma> ontology1:gender <woman>.
<woman> ontology1:species <human>.
<human> ontology2:category <earth>.

在此,我想检查谓词的顺序:-

foaf:kNows->本体1:性别->本体1:性别->本体2:类别

我已经阅读了许多文档,但尚未找到示例。知道如何使用SHACL核心功能执行此操作吗?甚至使用SHACL-SPARQL?

解决方法

如果ontology1:genderontology1:species的值不能超过一个,则使用objects-of targetssequence 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
   ] .

Playground

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...