首页 > 解决方案 > 如何使用 SPARQL 进行排名?

问题描述

我有一个问题,我们如何使用 SPARQL 给出排名数字?比方说,我有下图中的示例。因此,如果countKonsentrasi具有最高的数字,则排名为 1,依此类推。

结果

我已经完成但不符合我的需求的查询:

String queryString =
                "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
                + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
                + "PREFIX owl: <http://www.w3.org/2002/07/owl#> "
                + "SELECT ?e (COUNT (?e) AS ?countKonsentrasi) "
                + " (COUNT (*) AS ?ranking) "
                + " WHERE { ?x rdfs:label  ?a;"
                + " rdfs:subClassOf ?b ."
                + " ?b rdfs:subClassOf owl:Thing ."
                + " ?b rdfs:label ?e ."
                + " FILTER (regex(str(?a), '%s','i')) ."
                + "}"
                + "GROUP BY ?e "
                + "ORDER BY DESC (?countKonsentrasi) ";

有没有像RANKSPARQL 一样的排名功能?

更新

我已经尝试过使用这些新语法。该列ranking显示 0 个值。

String queryString =
                "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
                + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
                + "PREFIX owl: <http://www.w3.org/2002/07/owl#> "
                + "SELECT ?e (COUNT (?e) AS ?countKonsentrasi) "
                + "(COUNT (?countKonsentrasi) AS ?ranking) "
                + " WHERE { ?x rdfs:label  ?a;"
                + " rdfs:subClassOf ?b ."
                + " ?b rdfs:subClassOf owl:Thing ."
                + " ?b rdfs:label ?e ."
                + " FILTER (regex(str(?a), '%s','i')) ."
                + "}"
                + "GROUP BY ?e "
                + "ORDER BY DESC (?countKonsentrasi) LIMIT 5 ";

请帮我。我很感激所有的帮助。谢谢你

标签: javasparqljena

解决方案


推荐阅读