[英]How to construct a list in 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:in (
"Option 1"
"Option 2"
) ;
sh:name "Property 1"
ex:property1
a owl:DatatypeProperty
將上述數據加載到我的三重存儲(已經包含許多形狀)后,我可以使用什么查詢來檢索相同的數據?
這個查詢得到我需要的一切,除了列表。 對於列表,它只給出一個空白節點。
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
}
}
首先,為什么需要查詢才能取回相同的數據? 您的意思是您需要以相同的語法和格式獲取它嗎?
要以三元組的形式獲取相同的數據,您可以簡單地執行 SELECT * from ?s ?p ?o 它會給您所有的三元組。 這也取決於您的三聯店。
獲取列表中項目的標准查詢如下:
PREFIX sh: <http://www.w3.org/ns/shacl#> PREFIX ex: <http://example.com/#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT ?item WHERE { ex:Property-1 sh:in/rdf:rest*/rdf:first ?item }
您可以閱讀有關列表項如何在內部存儲的更多信息。 這個鏈接會很有幫助。 您可以在構造查詢的 UNION 或 WHERE 子句中以相同的方式綁定 ex:Property-1 以獲得所需的結果。
我希望它會有所幫助。 祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.