sparql查询的排名结果

sparql查询的排名结果,sparql,Sparql,我有一个skos概念的层次结构和一些被这些概念索引的个体(例如ex:Regina dct:subject ex:Pizza) 我想找到每个被一些概念(或更具体的概念)索引的个体。下面的查询检索比萨饼或自制的每顿饭。(我正在使用concat和group_-concat轻松获得一排餐点的概念) 这很好,但是现在我想根据这些结果与我想要的相同的概念的数量对它们进行排序。因此,在我的例子中,我希望先吃自制的比萨,然后才吃比萨或自制餐。 我还想摆脱没有我感兴趣的概念的结果。 理想情况下,我还希望直接由所需

我有一个skos概念的层次结构和一些被这些概念索引的个体(例如
ex:Regina dct:subject ex:Pizza

我想找到每个被一些概念(或更具体的概念)索引的个体。下面的查询检索比萨饼或自制的每顿饭。(我正在使用
concat
group_-concat
轻松获得一排餐点的概念)

这很好,但是现在我想根据这些结果与我想要的相同的概念的数量对它们进行排序。因此,在我的例子中,我希望先吃自制的比萨,然后才吃比萨或自制餐。
我还想摆脱没有我感兴趣的概念的结果。
理想情况下,我还希望直接由所需概念索引的膳食比由更具体概念索引的膳食得分更高

当然,我可以对结果进行后处理,但我非常确定在sparql中有一种聪明而高效的方法可以做到这一点。有什么想法吗

编辑:根据请求编辑样本数据

@prefix : <http://www.semanticweb.org/owl/owlapi/turtle#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix dct: <http://purl.org/dc/terms/>  .
@prefix ex: <http://example.com#> .

ex:FoodScheme a skos:ConceptScheme ;
    skos:prefLabel "The food schema"@en ;
    skos:hasTopConcept ex:Food .

ex:Food a skos:Concept ;
    skos:prefLabel "Food"@en ;
    skos:inScheme ex:FoodScheme .

    ex:Italian a skos:Concept ;
        skos:prefLabel "Italian food"@en ;
        skos:broaderTransitive ex:Food ;
        skos:inScheme ex:FoodScheme .

        ex:Pizza a skos:Concept ;
            skos:prefLabel "Pizza"@en ;
            skos:broaderTransitive ex:Italian ;
            skos:inScheme ex:FoodScheme .

        ex:Pasta a skos:Concept ;
            skos:prefLabel "Pasta"@en ;
            skos:broaderTransitive ex:italian ;
            skos:inScheme ex:FoodScheme .

    ex:Homemade a skos:Concept ;
        skos:prefLabel "Homemade food"@en ;
        skos:broaderTransitive ex:Food ;
        skos:inScheme ex:FoodScheme .

ex:Regina a ex:Meal ;
    skos:prefLabel "Regina"@en ;
    dct:subject ex:Homemade ;
    dct:subject ex:Pizza.

ex:PeppyPaneer a ex:Meal ;
    skos:prefLabel "From Domino's"@en ;
    dct:subject ex:Pizza.

ex:Carbonara a ex:Meal ;
    skos:prefLabel "Pasta a la carbonara"@en ;
    dct:subject ex:Homemade ;
    dct:subject ex:Pasta.

ex:Lasagna a ex:Meal ;
    skos:prefLabel "Lasagna"@en ;
    dct:subject ex:Italian.
意大利语的预期结果(首先是千层面,因为它直接被索引为意大利语,而其他则不是):


给定一组相关主题{ex:Pizza ex:dominesed},我们可以:

查询
前缀ex:
前缀dct:
前缀skos:
选择ind名称(组集合(不同概念STR)作为概念)(计数(不同概念cls)作为分数)
哪里
{?ind skos:prefLabel?名称;
主题?概念。
?概念skos:预标签?概念名称
绑定(concat(str(?concept),“:”,?conceptName)为?conceptStr)
可选的
{VALUES?cls{ex:Pizza ex:自制}
ind-dct:subject/(skos:broaderttransitive)*?cls
}
}
按ind名称分组
有(?分数>0)
按描述排序(?分数)
输出:
请填写最小样本数据(N-Triples或Turtle)+预期结果。否则,很难进行测试,因为人们必须先编写自己的数据。谢谢,我已经编辑了我的文章,包括完整的数据集和2个查询的预期结果。谢谢
@prefix : <http://www.semanticweb.org/owl/owlapi/turtle#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix dct: <http://purl.org/dc/terms/>  .
@prefix ex: <http://example.com#> .

ex:FoodScheme a skos:ConceptScheme ;
    skos:prefLabel "The food schema"@en ;
    skos:hasTopConcept ex:Food .

ex:Food a skos:Concept ;
    skos:prefLabel "Food"@en ;
    skos:inScheme ex:FoodScheme .

    ex:Italian a skos:Concept ;
        skos:prefLabel "Italian food"@en ;
        skos:broaderTransitive ex:Food ;
        skos:inScheme ex:FoodScheme .

        ex:Pizza a skos:Concept ;
            skos:prefLabel "Pizza"@en ;
            skos:broaderTransitive ex:Italian ;
            skos:inScheme ex:FoodScheme .

        ex:Pasta a skos:Concept ;
            skos:prefLabel "Pasta"@en ;
            skos:broaderTransitive ex:italian ;
            skos:inScheme ex:FoodScheme .

    ex:Homemade a skos:Concept ;
        skos:prefLabel "Homemade food"@en ;
        skos:broaderTransitive ex:Food ;
        skos:inScheme ex:FoodScheme .

ex:Regina a ex:Meal ;
    skos:prefLabel "Regina"@en ;
    dct:subject ex:Homemade ;
    dct:subject ex:Pizza.

ex:PeppyPaneer a ex:Meal ;
    skos:prefLabel "From Domino's"@en ;
    dct:subject ex:Pizza.

ex:Carbonara a ex:Meal ;
    skos:prefLabel "Pasta a la carbonara"@en ;
    dct:subject ex:Homemade ;
    dct:subject ex:Pasta.

ex:Lasagna a ex:Meal ;
    skos:prefLabel "Lasagna"@en ;
    dct:subject ex:Italian.
ex:Regina
ex:PeppyPaneer
ex:Carbonara
ex:Lasagna
ex:Carbonara
ex:PeppyPaneer
ex:Regina
+-----------------+-------------------------+--------------------------------------------------------------------------+-------+
|       ind       |          name           |                                 concepts                                 | score |
+-----------------+-------------------------+--------------------------------------------------------------------------+-------+
|  ex:Regina      | Regina en               | http://example.com#Pizza:Pizza http://example.com#Homemade:Homemade food |     2 |
|  ex:Carbonara   | Pasta a la carbonara en | http://example.com#Pasta:Pasta http://example.com#Homemade:Homemade food |     1 |
|  ex:PeppyPaneer | From Domino's en        | http://example.com#Pizza:Pizza                                           |     1 |
+-----------------+-------------------------+--------------------------------------------------------------------------+-------+