我正在对Sparql查询执行小任务。我想获取实体数和实例数。我有Sparql和rdf的基础知识。所以我写了sparql查询来获取实体的数量,但我不是100%肯定它是正确的。我正在使用的端点是Dbpedia。这是查询。
#Number of Entities
SELECT (count(?entity) AS ?Entities)
WHERE{ ?entity rdf:type ?type.
}
-----------
Output:
113715893
我上面的输出给了我很大的数字。我只是想知道是获取实体数的正确查询吗?
我还必须获取实例数。我不确定“实例”是什么意思。我认为那是子类之类的东西。 谁能帮我完成任务?
答案 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关键字。这样可以确保您只计算绑定到此变量的不同实体。