Rdf 用于子图验证的SHACL形状

Rdf 用于子图验证的SHACL形状,rdf,semantic-web,shacl,Rdf,Semantic Web,Shacl,我想使用SHACL验证子图中谓词的顺序。理论上,我认为我必须为每个连接在一起的谓词使用SHACL形状,然后定义一个条件语句来检查第一个谓词是否存在,然后继续遍历下一个谓词的图形 例如: <bob> foaf:knows <emma>. <emma> ontology1:gender <woman>. <woman> ontology1:species <human>. <human> ontology2:cate

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

例如:

<bob> foaf:knows <emma>.
<emma> ontology1:gender <woman>.
<woman> ontology1:species <human>.
<human> ontology2:category <earth>.
foaf:知道。 本体论1:性别。 本体论1:物种。 本体论2:范畴。 在这里,我想检查谓词的顺序:-

foaf:knows->ontology1:gender->ontology1:gender->ontology2:category


我已经浏览了大量的文档,但还没有找到一个这样的例子。你知道如何利用SHACL的核心功能做到这一点吗?或者即使使用SHACL-SPARQL?

如果
本体论1:gender
本体论1:species
不能有多个值,则使用和。像这样:

:FellowShape
   sh:targetObjectsOf foaf:knows ;
   sh:property [
      sh:path (ontology1:gender ontology1:species ontology2:category) ;
      sh:message "Property chain is broken" ;
      sh:minCount 1
   ] .

.

我不明白什么时候会违反规定-你的例子是违反规定吗?起始属性是什么?我的意思是,第一个属性必须是
rdfs:label
,这对于示例来说已经不适用了data@UninformedUser:抱歉,示例中的第一个谓词写错了。