首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SPARQL构造SHACL形状

如何使用SPARQL构造SHACL形状
EN

Stack Overflow用户
提问于 2022-06-06 17:56:46
回答 1查看 86关注 0票数 0

我有一个包含以下信息的ttl文件:

代码语言:javascript
复制
ex:Shape1
    a sh:NodeShape ;
    sh:property ex:Property-1
    rdfs:label "Shape 1"

ex:Property-1
    a sh:PropertyShape ;
    sh:path ex:property1
    sh:name "Property 1"

ex:property1
    a owl:DatatypeProperty

在将上述数据加载到我的三重存储区(其中已经包含了许多形状)之后,我可以使用什么查询来检索相同的数据呢?

我尝试了一些东西,最接近的是下面的查询,它返回我的三重存储中的每个形状(但不是ex:property1):

代码语言:javascript
复制
PREFIX sh: <http://www.w3.org/ns/shacl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX ex: <http://example.com/#>

CONSTRUCT {
  ?subject ?predicate ?object
}
WHERE {
  ex:Shape1 sh:property ?propertyShape .
  { ex:Shape1 ?predicate ?object } UNION {  ?propertyShape ?predicate ?object }
  ?subject ?predicate ?object .
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-06 19:11:39

这个查询似乎满足了我的需要:

代码语言:javascript
复制
PREFIX sh: <http://www.w3.org/ns/shacl#>
PREFIX ex: <http://example.com/#>

CONSTRUCT {
  ?subject ?predicate ?object
}
WHERE {
  {
    bind(ex:Shape1 as ?subject)
    ex:Shape1 ?predicate ?object
  }
  UNION
  {
    ex:Shape1 sh:property ?subject .
    ?subject ?predicate ?object
  }
  UNION
  {
    ex:Shape1 sh:property/sh:path ?subject .
    ?subject ?predicate ?object
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72521705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档