簡體   English   中英

為什么這個 SHACL 驗證沒有按預期工作?

[英]Why this SHACL validation does not work as expected?

這是我的 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"] .

我想驗證約翰至少把兩個球塗成紅色,給出的數據應該符合要求。 但我收到一條錯誤消息:“小於 2 個值的形狀為 _:22728aa9248d56603d8c20009b9d6742”。 我的序列路徑有問題嗎? 非常感謝你的幫助!

您的形狀定義與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屬性值的形狀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM