Sparql-实体和实例数?

时间:2018-07-13 10:27:19

标签: sparql rdf semantic-web dbpedia triples

我正在对Sparql查询执行小任务。我想获取实体数和实例数。我有Sparql和rdf的基础知识。所以我写了sparql查询来获取实体的数量,但我不是100%肯定它是正确的。我正在使用的端点是Dbpedia。这是查询。

#Number of Entities

SELECT  (count(?entity) AS ?Entities)
                          WHERE{   ?entity rdf:type ?type.
 }
-----------
Output:
113715893

我上面的输出给了我很大的数字。我只是想知道是获取实体数的正确查询吗?

我还必须获取实例数。我不确定“实例”是什么意思。我认为那是子类之类的东西。 谁能帮我完成任务?

1 个答案:

答案 0 :(得分:0)

嘿,实体和实例一词的问题在于它们经常以不同的含义使用。我认为实体是指可以作为主题的每个uri。而instance表示作为owl:Class实例的每个实体。

对于实体,查询将为:

SELECT  (count(distinct ?entity) AS ?Entities)
                      WHERE{   ?entity ?p ?o}

对于实例,我将编写以下查询:

select distinct count(distinct ?instance) where {?instance a ?class . ?class a owl:Class} 

也许您在我要计算的变量之前提到了非重复?这对您来说非常重要。因为坚持尝试,一个实体可以具有多种类型。对于每种类型,您将获得实体和类型变量组合的绑定。这至少导致您将对在查询中找到的每种类型的实体进行计数。因此,具有两种类型的实体将被计算两次。但是我假设您只想对实体计数一次-因此您需要对要计数的变量使用distinct关键字。这样可以确保您只计算绑定到此变量的不同实体。