SHACL能否表达对整个数据范围的限制?

问题描述 投票:2回答:1

是否可以使用SHACL来制定关于整个数据范围的约束?

例如,我是否可以要求在数据中存在符合特定形状的三元组?

我想到的代码示例:

# DEMO code, currently raises an error!!

@prefix ex: <http://example.org/ns#> .
@prefix sh:   <http://www.w3.org/ns/shacl#> .

ex:ObligatoryShape
    a sh:NodeShape ;
    minCount 1 . # What I want

我的想法是,上面的代码会为每个不包含至少一个的数据图引发错误 的例子 数据三重符合ex:ObligatoryShape - 这包括空数据图。

rdf turtle-rdf shacl
1个回答
2
投票

通常,SHACL验证需要提供起点的目标语句。

如果您没有任何特定的目标节点自然可以作为验证的触发器,请使用类似的东西

ex:MyShape
    sh:targetNode ex:DummyNode ;
    sh:sparql [ ... ] .

您的原始问题没有提供有关您正在测试的具体内容的足够详细信息 - 什么是“形状实例”?也许你的意思是“我的图表是否包含任何X类实例”。以下形状检查是否至少有一个Person实例:

ex:PersonCountShape
    a sh:NodeShape ;
    sh:targetNode ex:Person ;
    sh:property [
        sh:path [ sh:inversePath rdf:type ] ;
        sh:minCount 1 ;
    ] .

也许你的数据形状有类似的三元组,可以用作起点。上面我们使用了rdf:type triples,但是经常sh:targetSubjectsOf和sh:targetObjectsOf很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.