我正在执行 Sparql 查询的小任务。我想获取实体的数量和实例的数量。我有 Sparql 和 rdf 的基本知识。所以我编写了 sparql 查询来获取实体的数量,但我不能 100% 确定它是正确的。我使用的端点是 Dbpedia。这是查询。
#Number of Entities
SELECT (count(?entity) AS ?Entities)
WHERE{ ?entity rdf:type ?type.
}
-----------
Output:
113715893
上面的输出给了我很大的数字。我只是想知道获取实体数量的正确查询是吗?
我还必须获取实例的数量。我不确定“实例”是什么意思。我认为这是子类或其他东西。 谁能帮我完成这个任务吗?
最佳答案
嘿,实体和实例这两个术语的问题是它们经常以不同的含义使用。我假设实体是指每个可以作为主题的 uri。而实例意味着作为 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}
也许你在我想计算的变量之前提到了不同的?这对你来说非常重要。因为为了坚持您的尝试,一个实体可以有多种类型。对于每种类型,您都将获得实体和类型变量组合的绑定(bind)。这至少导致您将对查询中找到的每种类型的实体进行计数。因此具有两种类型的实体会被计数两次。但我假设您只想对实体进行一次计数 - 因此您需要对要计数的变量使用 unique 关键字。这可确保您只计算绑定(bind)到该变量的不同实体。
关于Sparql-实体和实例的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51323057/