簡體   English   中英

如何使用 SPARQL 構造 SHACL 形狀

[英]How to construct a SHACL shape using SPARQL

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

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 ):

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 .
}

這個查詢似乎做我需要的:

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
  }
}

暫無
暫無

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

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