我对SHACL和ShEx了解甚少。
我一直在阅读关于它们的文章,并了解是否可以在属性上创建约束,使其定义层次结构(即类似树的结构)。
我想我要找的是一种方法来指定,对于给定的属性p,
( a)此可以发生(o1 != o2):
s p o1 .
s p o2 .
...
s p oN( b)但是这个不能 (s1 != s2):
s1 p o .
s2 p o我想我应该对p的基数使用某种约束,对吗?
不知道如何指定b),甚至可能使用SHACL或ShEX。我应该用猫头鹰吗?
发布于 2020-08-11 20:33:55
OWL中的
假设DifferentIndividuals: :s1, :s2等:
ObjectProperty: :p
Characteristics: InverseFunctionalIn 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) }(一般)
https://stackoverflow.com/questions/63327147
复制相似问题