SPARQL查找具有相同最大值的所有元组

SPARQL查找具有相同最大值的所有元组,sparql,semantic-web,ontology,Sparql,Semantic Web,Ontology,我的房产名为mobileWarrantyYear 现在我想买所有保修期最高的手机 例如,如果我的手机m1保修期为1Y,手机m2和手机m3保修期为3Y,那么我想退回手机m2和m3 这是我到目前为止尝试过的,但它在filter子句中给了我syntac错误 我如何实现这个逻辑 PREFIX ns: <http://www.semanticweb.org/cs/ontologies/2019/2/untitled-ontology-2#> Select * where { ?s ns:mo

我的房产名为mobileWarrantyYear

现在我想买所有保修期最高的手机

例如,如果我的手机m1保修期为1Y,手机m2和手机m3保修期为3Y,那么我想退回手机m2和m3

这是我到目前为止尝试过的,但它在filter子句中给了我syntac错误

我如何实现这个逻辑

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)
}
前缀ns:
选择*where
{
?s ns:手机租赁年?o
过滤器(?o=(选择*其中{s ns:mobileWarrantyYear?o}按描述(?o)限制1排序)
}
基本上,我已经尝试将最高保修期的手机与所有手机保修期进行匹配,看看是否还有更多手机具有相同的最高保修期

对不起,我直截了当地尝试了一下,但这是我经过几个小时的努力后得出的结论


任何更好的想法都将受到极大的赞赏。

这个想法是使用一个子查询,在其中计算最大值,即
Select*where{ns:mobileWarrantyear?o filter(?o=?maxVal){Select(max(?o)as?maxVal)where{ns:mobileWarrantyear?o}
@AKSW工作得很好,你也为我打开了一个新维度,非常感谢!这个想法是使用一个子查询,在其中计算最大值,即
Select*where{ns:mobileWarrantyear?o filter(?o=?maxVal){Select(max(?o)as?maxVal)where{ns:mobileWarrantyear?o}}
@AKSW工作得很好,你也为我打开了一个新的维度,非常感谢!