rdfs:subPropertyOf 的 Shacl 处理

如何解决rdfs:subPropertyOf 的 Shacl 处理

我有以下 shacl 规范

efdn:Relation
  rdf:type owl:Class ;
  rdf:type sh:NodeShape ;
  rdfs:label "Relation"@en ;
  sh:property [
    sh:path efdn:nondirectionalLinkWith ;
    sh:NodeKind sh:IRI ;
    sh:maxCount 2 ;
    sh:minCount 2 ;
  ] ;
.

我的目标是表达一个 Relation 必须完全由 "nondirectionalLinkWith" 对象属性连接。更具体地说,我想表示它可以是 "nondirectionalLinkWith" 的任何 subPropertyOf。 换句话说,可以说,一个 Relation 对象必须通过 2 个无方向的 Link 连接。其中非定向链接是任何对象属性,它是 subPropertyOf "nondirectionalLinkWith"

1 ) 我想知道如何使用 shacl 来表达这一点。

到目前为止,我看到的唯一可能性是明确使用 RDFS reasoner。也就是说,虽然 Shacl 优雅地处理 rdfs:subClassOf,因此不需要使用 RDFS reasoner,但 rdfs:SubPropertyOf 似乎没有支持

在这里是否正确,或者有一种方法可以直接在 shacl 中表达这样的约束。

使用 RDFS reasoner 我们有:

Construct {
  :x1 :p1 :x2
} Where {
  :x1 :p2. :x2
  :p2 rdfs:subPropertyOf :p1. 
}

这允许然后验证关系。但是,我想知道我是否可以完全避免使用 RDFS reasoner 来处理这样一个简单的情况?如果它可以以某种方式用纯 shacl 表示,或者任何其他解决方法将不胜感激。

解决方法

首先注意约束属性sh:nodeKind必须以小写n开头

SHACL 不直接支持 rdfs:subPropertyOf,因此您是对的,要求 RDFS 推理是一种方法。为此,您可以使用 sh:entailment,请参阅 https://www.w3.org/TR/shacl/#shacl-rdfs

如果您事先知道子属性,您还可以使用替代路径并在 | 中枚举所有子属性。列表,参见https://www.w3.org/TR/shacl/#property-path-alternative

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?