簡體   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