SHACL/ShEX约束,使属性建立层次结构(即树)



我对SHACL和ShEx知之甚少。

我一直在阅读关于它们的文章,想知道我是否可以对属性创建约束,使其定义层次结构(即树状结构(。

我想我正在寻找的是一种方法来指定,对于给定的属性p

a( 这种可以发生(o1 != o2(:

s p o1 .
s p o2 .
...
s p oN

b( 但这个不能(s1 != s2(:

s1 p o .
s2 p o

我想对于a(,我应该对p的基数使用某种约束,对吧?

不知道如何指定b(,甚至不知道是否可以使用SHACL或ShEX。我应该使用OWL吗?

在OWL

假设DifferentIndividuals: :s1, :s2等:

ObjectProperty: :p
Characteristics: InverseFunctional

在ShEx中

具有类似{_ :p FOCUS} @ :Shape:的形状图

:Shape { 
^:p IRI ?
}

示例

在SHACL

:Shape a sh:NodeShape ;
sh:targetObjectsOf :p ;
sh:property [
sh:path [ sh:inversePath :p ] ;
sh:maxCount 1 
] .

示例

在纯SPARQL中

ASK { ?o ^:p ?s1, ?s2 . FILTER (?s1 != ?s2) }

一般

读取";验证RDF数据";。

相关内容

  • 没有找到相关文章

最新更新