SPARQL的出现次数

SPARQL的出现次数,sparql,semantic-web,Sparql,Semantic Web,您好,我正在使用SPARQL查询LMDB(),并且我还尝试在返回一些查询结果时获取实例数。我一直在尝试将(COUNT(?something)AS?somethingElse)添加到查询中,然后将分组或按排序,但随后变量?somethingElse替换了所有其他结果。我认为最好的方法是使用UNION并在单独的行中获得结果,这与其他行无关,但由于某种原因,我无法找到正确的解决方案 我的问题是: PREFIX mov: <http://data.linkedmdb.org/resource/mo

您好,我正在使用SPARQL查询LMDB(),并且我还尝试在返回一些查询结果时获取实例数。我一直在尝试将
(COUNT(?something)AS?somethingElse)
添加到查询中,然后将
分组或按
排序,但随后变量
?somethingElse
替换了所有其他结果。我认为最好的方法是使用
UNION
并在单独的行中获得结果,这与其他行无关,但由于某种原因,我无法找到正确的解决方案

我的问题是:

PREFIX mov: <http://data.linkedmdb.org/resource/movie/> 
SELECT DISTINCT ?Names  WHERE 
{ ?link mov:actor_name 'guy boyd' . 
?movie mov:actor ?link; 
mov:actor ?Link_To_Actor_Page.  
?Link_To_Actor_Page mov:actor_name ?Names.  } 
前缀mov:
选择不同的名称,其中
{?林克·莫夫:演员的名字叫“盖伊·博伊德”。
?电影短片:演员链接;
演员?链接到演员页面。
?链接到演员页面mov:演员姓名?姓名。}
如果运行此查询,一切正常,但如果添加
(计数(?名称)为?总计)
则仅打印出
?总计。所以我想我的问题是如何打印出我想要的尽可能多的变量,并将
计数(?something)
作为一个单独的列。基本上没有在查询中每隔一个变量替换一次计数(?)

只需将所需内容添加到
SELECT
方法中即可。被请求元素的数量不受限制

下面是您的示例:

PREFIX mov: <http://data.linkedmdb.org/resource/movie/> 

SELECT DISTINCT ?Names (COUNT(?Names) as ?total)
WHERE { 
    ?link mov:actor_name 'guy boyd' . 
    ?movie mov:actor ?link ; 
    mov:actor ?Link_To_Actor_Page .  
    ?Link_To_Actor_Page mov:actor_name ?Names .
} GROUP BY ?Names
前缀mov:
选择不同的名称(将(?名称)计为总计)
何处{
链接电影:演员的名字叫“盖伊·博伊德”。
?电影短片:演员链接;
演员?链接到演员页面。
?链接到演员页面mov:演员姓名?姓名。
}按姓名分组
以下是SPARQL端点的位置:


我希望它能帮助您,而不是在不理解的情况下简单地给出答案。

当然,如果没有按返回的解决方案总数分组,那么还有什么?如果您按某个
?x
进行分组,您必须选择想要返回的内容。例如,
选择?x(计数(?y)作为?cnt)。。。其中{…}按?x分组
。注意,后端是D2R服务器,因此没有完整的SPARQL 1。1@AKSW是的,你说得对。这确实解决了我的问题。我之前已经试过了,但由于某种原因我没有注意到。但假设我想计算其他查询的总出现次数,不是这个查询,而是另一个查询。有没有一种方法可以打印出
计数(?x)
而无需
按某个变量排序?LMDB为此目的使用了这种技术。@AKSW此查询中的键是最后一行
SELECT?property?hasValue?isValueOf,其中{{property?hasValue}UNION{isValueOf?property}按(!BOUND(?hasValue))?property?hasValue?isValueOf
顺序排列。我不明白你的意思。如果你做一个
计数
,为什么你需要
ORDER BY
?我看不出你在评论中的查询除了获取某个特定工厂的数据之外,还试图实现什么。我们的查询没有达到我的要求。它只打印出总数,但不打印姓名。这正是我所说的,我的问题是,它根本没有帮助。
选择distinct?Concept(COUNT(?Concept)as?total),其中{[]a?Concept}
在Virtuoso DBPedia Endpoint上运行得非常好。实际上,这只是一个部分答案,因为缺少
联合
,也许您需要编辑您的答案。另外,我没有查询DBPedia SPARQL端点,而是查询LMDB SPARQL端点,它有两个完全不同的数据库。显然,这与用另一个示例解释错误不同。理解和提高总比得到答案并说声谢谢要好。