2

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

#Number of Entities

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

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

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

4

1 回答 1

2

嘿,术语实体和实例的问题是它们经常以不同的含义使用。我假设实体意味着每个可以成为主题的 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 ?这对你来说非常重要。因为坚持你的尝试,一个实体可以有多种类型。对于每种类型,您将获得实体和类型变量组合的绑定。这至少会导致您将计算在查询中找到的每种类型的实体。因此,具有两种类型的实体被计算两次。但我假设您只想计算一次实体 - 因此您需要对要计算的变量使用 distinct 关键字。这可确保您只计算绑定到此变量的不同实体。

于 2018-07-13T10:46:27.057 回答