簡體   English   中英

SPARQL僅限制結果三元組中的特定變量

[英]SPARQL limit only a specific variable in a result triple

我嘗試使用三元組合的最高變量獲得SPARQL結果。

好的,讓我們嘗試解釋一下。

假設我們得到了這樣的東西:

:resource1 pred:hasQuality :UltraQuality
:resource2 pred:hasQuality :MediumQuality
:resource2 pred:hasQuality :LowQuality
:resource3 pred:hasQuality :UltraQuality
:resource3 pred:hasQuality :LowQuality
:resource4 pred:hasQuality :LowQuality

現在,我想在那里獲得最高質量的所有資源。 可以使用ORDER BY或MAX訂購質量。 (L-> M-> U)。

我做了很多這樣的嘗試:

SELECT ?res ?qual
WHERE {
    ?res pred:hasQuality ?qual.
}
ORDER BY ?res DESC(?qual)

但是現在,如果相同的輪胎有三個以上,我想消除其他三個。

預期結果應為:

:resource1 :UltraQuality
:resource2 :MediumQuality
:resource3 :UltraQuality
:resource4 :LowQuality

您想group by項目group by ,這為每個項目提供了一組質量。 您要從該項目中獲取最大值。 假設您有以下數據:

@prefix : <http://stackoverflow.com/q/20562673/1281433/>

:a :quality 3 .
:a :quality 4 .
:a :quality 5 .

:b :quality 9 .

:c :quality 2 .
:c :quality 1 .

然后,您可以使用如下查詢:

prefix : <http://stackoverflow.com/q/20562673/1281433/>

select ?item (max(?quality) as ?maxQuality)
where {
  ?item :quality ?quality .
}
group by ?item

您將得到以下結果:

---------------------
| item | maxQuality |
=====================
| :b   | 9          |
| :c   | 2          |
| :a   | 5          |
---------------------

暫無
暫無

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

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