繁体   English   中英

使用最多谓词计算DBPedia资源

[英]Calculating DBPedia resources with the most predicates

我认为询问DBPedia哪个资源是最丰富的谓词会很有趣。

我尝试运行以下查询:

SELECT DISTINCT ?s (count(?p) AS ?info)
WHERE {
  ?s ?p ?o .
}
GROUP BY ?s ?p
ORDER BY desc(?info)
LIMIT 50

并且它超时了,所以我无法验证它是否是正确的查询。

因此,我剩下以下两个问题:

  1. 这是问这个问题的正确方法吗?
  2. 该查询在计算上是否过于昂贵而无法运行(即使在较小的数据集上,DBP是2.46b三元组)?

提出这个问题的正确方法

假设您有如下数据:

@prefix : <http://stackoverflow.com/q/22391927/1281433/> .

:a :p 1, 2, 3 ;
   :q 4, 5 .

:b :p 1, 2 ;
   :q 3, 4 ;
   :r 5, 6 .

:c :p 1 ;
   :q 2 ;
   :r 3 .

然后,您可以使用以下查询来询问每个资源要包含多少个三元组:

prefix : <http://stackoverflow.com/q/22391927/1281433/>

select ?s (count(*) as ?n) where {
  ?s ?p ?o
}
group by ?s
order by desc(?n)
----------
| s  | n |
==========
| :b | 6 |
| :a | 5 |
| :c | 3 |
----------

请注意,如果您对每种资源的主题数是多少三倍感兴趣,则只想group by ?s 在原始查询中,将group by ?s ?p ,您将根据对具有多少个值对(主题,谓词)进行排序。 例如,

prefix : <http://stackoverflow.com/q/22391927/1281433/>

select ?s ?p (count(*) as ?n) where {
  ?s ?p ?o
}
group by ?s ?p
order by desc(?n)
---------------
| s  | p  | n |
===============
| :a | :p | 3 |
| :b | :p | 2 |
| :a | :q | 2 |
| :b | :q | 2 |
| :b | :r | 2 |
| :c | :p | 1 |
| :c | :q | 1 |
| :c | :r | 1 |
---------------

为DBpedia执行此操作

我不希望您能够在DBpedia上运行这样的查询。 它需要触摸数据中的每个三元组,然后按资源所属的三元组顺序对资源进行排序。 这听起来像很多工作。 您也许可以下载数据,将其加载到本地端点并运行查询,从而避免超时,但是如果仍然需要一段时间,我也不会感到惊讶。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM