SHACL中基于类属性值筛选目标:sh:filterShape有效性及方案咨询
问题解答
1. 你的代码是否合法SHACL?
如果使用支持**SHACL Advanced Features(SHACL AF)**的验证引擎,这段代码是合法的。但需注意,SHACL AF并非所有SHACL工具都默认支持,要确认你的引擎是否兼容该扩展规范。
2. sh:filterShape在SHACL规范中的状态
sh:filterShape是SHACL Advanced Features中的定义,目前该规范处于W3C工作草案(Working Draft)阶段,并非正式的推荐标准(Recommendation)。这意味着不同SHACL实现对它的支持程度差异较大,部分成熟工具(如TopBraid Composer)提供支持,但轻量级或仅实现SHACL Core的引擎可能不兼容。
3. 无需SPARQL的替代方案
可以用SHACL Core原生支持的sh:targetSubjectsOf结合属性形状的sh:subject约束实现,无需依赖SHACL AF或SPARQL:
:EBooksShape a sh:NodeShape ; sh:targetSubjectsOf [ a sh:PropertyShape ; sh:path ex:carrier ; sh:value :Electronic ; sh:subject [ sh:class ex:Publication ] ] . :PrintBooksShape a sh:NodeShape ; sh:targetSubjectsOf [ a sh:PropertyShape ; sh:path ex:carrier ; sh:value :Print ; sh:subject [ sh:class ex:Publication ] ] .
这种方式通过属性形状同时限定主体类型和属性值,精准筛选出符合条件的目标个体,且兼容所有实现SHACL Core的引擎。
内容的提问来源于stack exchange,提问作者Steven Folsom
相关产品推荐
相关产品推荐

