如何在查询sparql中获取最大值

时间:2017-10-21 01:03:57

标签: sparql

我想知道在另一个SELECT中应用计数后如何在sparql查询中获取MAX值。我的代码是:

resource "aws_api_gateway_integration" "integration" {

    ...
    ...
    uri = "arn:aws:apigateway:{region}:firehose:PutRecord/{service_api}"

}   

非常感谢!

1 个答案:

答案 0 :(得分:1)

这不是一个答案,而是用作更复杂的评论!

在我们开始调试之前,您的查询应采用标准的SPARQL语法:

SELECT  ?advisorName (MAX(?c) AS ?m)
WHERE
  { { SELECT  ?advisorName (COUNT(DISTINCT ?category) AS ?c)
      WHERE
        { ?student  rdf:type          nobel:Laureate ;
                    owl:sameAs        ?dbpStudent ;
                    foaf:name         ?studentName ;
                    nobel:nobelPrize  ?pStudent .
          ?pStudent  nobel:category   ?category
          FILTER ( afn:namespace(?dbpStudent) = str(dbr:) )
          SERVICE <http://dbpedia.org/sparql>
            {   { ?dbpStudent  dbo:doctoralAdvisor  ?dbpAdvisor }
              UNION
                { ?dbpAdvisor  dbo:doctoralStudent  ?dbpStudent }
              ?dbpAdvisor  rdfs:label  ?advisorName
              FILTER ( lang(?advisorName) = "en" )
            }
        }
      GROUP BY ?advisorName
    }
  }
GROUP BY ?advisorName
ORDER BY DESC(?c)

我不理解的东西:

  • 为什么外部SELECT查询中的变量group by上有?dbpStudent,因为没有这样的绑定,因为它没有被内部SELECT查询返回
  • 为什么你还在内部SELECT查询中计算MAX

所以我的问题是,查询的总体目标是什么?

  1. 如果您想要每个顾问的Nobel类别总数,则应使用SUM。
  2. 如果你想要最高的号码,顾问可以通过他/她的学生,......
  3. 如果你想......
  4. 一旦我们确定了您的查询应该做什么,我们就可以通过检查中间结果来开始调试。