1

这是我的 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 至少将两个球涂成红色,并且给出的数据应该符合要求。但我收到一条错误消息:“Less than 2 values have shape _:22728aa9248d56603d8c20009b9d6742”。我的序列路径有问题吗?非常感谢你的帮助!

4

1 回答 1

1

您的形状定义与 go 的 SHACL 示例有点不同sh:qualifiedValueShape。我相信属性形状可能需要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

于 2021-10-13T19:20:21.483 回答