簡體   English   中英

在構造sparql查詢中使用union

[英]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>

但我需要一個圖形查詢( constructdescribe )。 所以我想我必須把它們與union打包在一起。 我怎么做?

簡短的回答是:沒有區別。

更長的答案是:將SPARQL查詢視為包含兩部分。

  1. 查詢(WHERE)部分,它生成一個變量綁定列表(盡管某些變量可能未綁定)。

  2. 把結果放在一起的部分。 SELECTASKCONSTRUCTDESCRIBE

SELECT *實際上是查詢返回的內容。 SELECT ?v1 ?v2獲取結果並生成另一個結果集,並刪除其他變量。 ASK只是想看看是否有任何結果。

CONSTRUCT使用模板從結果中生成RDF。 對於每個結果行,它綁定變量並將語句添加到結果模型中。 如果模板三元組包含未綁定的變量,則會跳過它。

DESCRIBE是最不尋常的,因為它獲取每個結果節點,找到與之關聯的三元組,並將它們添加到結果模型中。 與其他人不同,它可以包含比查詢匹配更多的信息。

因此,在查詢中允許所有表單使用UNIONOPTIONAL等等。 由於未綁定的變量,它們可能導致丟失三元組。

您的查詢沒有多大意義。 這與 {?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.

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