这是我的shacl.ttl:
@prefix ex: <http://datashapes.org/sh/tests/core/path/path-sequence-003.test#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
ex:paintNodeShape
rdf:type sh:NodeShape ;
sh:property ex:ColorProperty ;
sh:targetNode ex:John .
ex:ColorProperty
rdf:type sh:PropertyShape ;
sh:qualifiedValueShape [
sh:path (ex:paint ex:ballColor ) ;
sh:hasValue "Red" ;
] ;
sh:qualifiedMinCount 2 .下面是data.ttl:
@prefix ex: <http://datashapes.org/sh/tests/core/path/path-sequence-003.test#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
ex:John
ex:paint [ ex:ballColor "Red"] ;
ex:paint [ ex:ballColor "Red"] ;
ex:paint [ ex:ballColor "Blue"] .我想验证John是否至少将两个球涂成红色,并且给定的数据应该满足要求。但是我得到了一个错误信息:“少于2个值有形状_:22728aa9248d56603d8c20009b9d6742”。我的序列路径有问题吗?非常感谢你的帮助!
发布于 2021-10-13 19:20:21
您的形状定义与sh:qualifiedValueShape的SHACL示例略有不同。我认为属性形状可能需要sh:path ex:paint才能真正与属性匹配,如下所示:
ex:ColorProperty
rdf:type sh:PropertyShape ;
sh:path ex:paint ;
sh:qualifiedValueShape [
sh:path ex:ballColor ;
sh:hasValue "Red" ;
] ;
sh:qualifiedMinCount 2 .这应该表示ex:paint属性值的形状。
https://stackoverflow.com/questions/69405394
复制相似问题