SPARQL находит все кортежи с одинаковыми максимальными значениями - PullRequest
1 голос
/ 15 апреля 2019

У меня есть свойство с именем mobileWarrantyYear.

Теперь я хочу получить все мобильные телефоны с самой высокой из доступных лет гарантии.

Например, если у меня мобильный m1 с гарантией 1Y, мобильный m2 и мобильный m3 с гарантией 3Y, тогда я хочу вернуть мобильный m2 и m3.

Это то, что я пробовал до сих пор, но это дает мне ошибку синхронизации в предложении фильтра.

Как я могу реализовать эту логику?

PREFIX ns: <http://www.semanticweb.org/cs/ontologies/2019/2/untitled-ontology-2#>
Select * where 
{
?s ns:mobileWarrantyYear ?o
FILTER(?o =  (SELECT * WHERE { ?s ns:mobileWarrantyYear  ?o } ORDER BY DESC(?o) LIMIT 1)
}

По сути, я попытался сопоставить мобильный год с самой высокой гарантией со всеми мобильными годами гарантии, чтобы увидеть, есть ли еще мобильные устройства с таким же самым высоким гарантийным сроком.

Извините за грубую попытку, но это то, что я придумал после нескольких часов борьбы.

Любая лучшая идея будет принята с благодарностью!

...