首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子图验证的SHACL形状

子图验证的SHACL形状
EN

Stack Overflow用户
提问于 2020-11-03 07:18:22
回答 2查看 115关注 0票数 1

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

例如:

代码语言:javascript
复制
<bob> foaf:knows <emma>.
<emma> ontology1:gender <woman>.
<woman> ontology1:species <human>.
<human> ontology2:category <earth>.

在这里,我想检查谓词的顺序:

foaf:knows -> ontology2 1:gender -> ontology2 1:species -> ontology2 2:类别

我已经阅读了大量的文档,但是还没有找到一个这样的例子。你知道如何使用SHACL的核心特性做到这一点吗?或者甚至使用SHACL-SPARQL?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-03 14:49:39

如果ontology1:genderontology1:species不能有多个值,则使用objects-of targetssequence paths。如下所示:

代码语言:javascript
复制
: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

票数 2
EN

Stack Overflow用户

发布于 2021-09-14 16:58:28

作为另一种选择,重要的一点是目标需要成为启动属性链的三元组的一部分。在本例中,这是foaf:knows的对象。有几种方法可以做到这一点,包括:

代码语言:javascript
复制
: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,这两种方法都告诉形状规范以foaf:knows :emma开头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64654655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档