[英]using union in a construct sparql query
我有一個帶有幾個條目的rdf
圖。 現在我希望得到所有相關的三元組給定的id。 這是我的sparql查詢:
select ?s ?p ?o from <http://localhost:8890/DAV/ranking> where {
{<http://seekda.com/providers/cdyne.com/PhoneNotify> so:hasEndpoint ?s.
?s ?p ?o} union
{<http://seekda.com/providers/cdyne.com/PhoneNotify> ?p ?o}
}
在這種情況下,ID是<seekda.com/providers/cdyne.com/PhoneNotify>
。
但我需要一個圖形查詢( construct
或describe
)。 所以我想我必須把它們與union
打包在一起。 我怎么做?
簡短的回答是:沒有區別。
更長的答案是:將SPARQL查詢視為包含兩部分。
查詢(WHERE)部分,它生成一個變量綁定列表(盡管某些變量可能未綁定)。
把結果放在一起的部分。 SELECT
, ASK
, CONSTRUCT
或DESCRIBE
。
SELECT *
實際上是查詢返回的內容。 SELECT ?v1 ?v2
獲取結果並生成另一個結果集,並刪除其他變量。 ASK
只是想看看是否有任何結果。
CONSTRUCT
使用模板從結果中生成RDF。 對於每個結果行,它綁定變量並將語句添加到結果模型中。 如果模板三元組包含未綁定的變量,則會跳過它。
DESCRIBE
是最不尋常的,因為它獲取每個結果節點,找到與之關聯的三元組,並將它們添加到結果模型中。 與其他人不同,它可以包含比查詢匹配更多的信息。
因此,在查詢中允許所有表單使用UNION
, OPTIONAL
等等。 由於未綁定的變量,它們可能導致丟失三元組。
您的查詢沒有多大意義。
這與
{?s ?p ?o}
沒有什么不同。
你想做什么?
好的,現在更有意義。
鑒於下面的說明,聽起來你想要以下內容:
construct { <http://seekda.com/providers/cdyne.com/PhoneNotify> ?p ?o }
from <http://localhost:8890/DAV/ranking>
where {
{ <http://seekda.com/providers/cdyne.com/PhoneNotify> so:hasEndpoint ?s.
?s ?p ?o }
union
{ <http://seekda.com/providers/cdyne.com/PhoneNotify> ?p ?o }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.