2017-05-03 107 views
1

我想使用維基百科數據創建名稱實體識別器,我需要獲取單詞的所有超類以查看哪個類別(地點,人員,組織或無)是。我上網習慣了很多,發現像一些網頁:在SPARQL中查找超類實體

,當我執行查詢結果「沒有符合條件的記錄發現,」即使在頁面中提到的字和嘗試其他的命名空間。 和:

這是非常相似,我的工作,但我得到的結果太「沒有找到符合條件的記錄」。

我認爲這些鏈接中提到的查詢在邏輯上是正確的,但我不知道爲什麼它們對我沒有任何結果。我也試圖通過在這些網站上提到的例子來學習SPARQL:

,我沒有找到查找單詞的超類的任何信息。

有,我沒有得到結果代碼的一些例子:

PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> 
PREFIX ns:<http://dbpedia.org/> 

SELECT ?subClass ?label WHERE { 
    ?subClass rdfs:subClassOf ns:Albert . 
    ?subClass rdfs:label ?label . } 

或:

SELECT * WHERE { 
    dbpedia:Albert a ?c1 ; a ?c2 . 
    ?c1 rdfs:subClassOf ?c2 . 
} 

如果你回答我的問題我真的很感激。在先進

+0

你會介意附上確切的查詢,你沒有得到任何結果嗎? –

+0

肯定@msalvadores我加了一些例子。 –

回答

0

也許,你正在尋找的是這樣的查詢:

SELECT DISTINCT ?c WHERE { 
    ?Q wdt:P31/wdt:P279? ?c . 
    ?Q rdfs:label "Tom Hanks"@en 
} 

維基數據(分別wdt:P31wdt:P279)使用它自己的斷言,而不是rdf:typerdfs:subClassOf

+0

謝謝@Stanislav。 –

0
  1. 感謝誰是 「偉業」?您只能查詢DBpedia中存在的數據。沒有資源http://dbpedia.org/resource/Albert

  2. 你的第一個查詢使用了錯誤的命名空間,至少我從來沒有見過http://dbedia.org的命名空間,資源,它通常是http://dbpedia.org/resource/

  3. 你的第一個查詢使用rdfs:subClassOf斷言錯誤的情況下, 「阿爾伯特」應該是一種資源。表示資源「:x」屬於類:C由RDF三元組:x a :C .完成。並且類別:C具有超類:D在RDF中由:C rdfs:subClassOf :D .表示。

  4. 你的第二個查詢再次使用一些舊的命名空間前綴dbpedia:,現在被稱爲dbr:和不正是代表了命名空間http://dbpedia.org/resource/。但正如我在第一點中提到的,「Albert」沒有資源。

  5. 什麼是「一個詞的超類」?爲了澄清,資源屬於一個類,一個類可以有超類。

如果你想讓所有的類包括一個資源所屬的超類,你可以使用例如:對於「湯姆·漢克斯」

PREFIX dbr: <http://dbpedia.org/resource/> 
SELECT DISTINCT ?c WHERE { 
    dbr:Tom_Hanks a/rdfs:subClassOf* ?c . 
} 
+0

非常感謝@AKSW爲您的答案,是「Albert」不存在。我只是想舉個例子。我從DBpedia查詢服務的查詢中獲得結果,但它不適用於wikidata查詢服務。我想讓它在wikidata上工作的原因是它可以通過wd和wdt前綴獲取項目id。我沒有在dbpedia查詢服務中找到這樣的功能。 –

0

所以subClassOf謂語只適用於類的東西一般不會實例。您需要通過rdf:type與班級聯繫。

SELECT * WHERE { 
    <http://dbpedia.org/resource/Albert_Einstein> a ?c1 ; a ?c2 . 
    ?c1 rdfs:subClassOf ?c2 . 
} 

我不確定可以從Albert獲得什麼類型的實體,它可能需要消歧。我的示例查詢使用Albert Einstein作爲DBPEDIA資源。

請記住,根據您感興趣的抽象級別,您可能會多次跳到根類。這第二個查詢上升了兩個級別。

SELECT DISTINCT ?c3 WHERE { 
    <http://dbpedia.org/resource/Albert_Einstein> a ?c1 ; a ?c2 . 
    ?c1 rdfs:subClassOf ?c2 . 
    ?c2 rdfs:subClassOf ?c3 . 
} 
+0

謝謝@msalvadores您的有用答案。你的查詢在DBpedia查詢服務上工作,但我需要它在wikidata查詢服務上工作,這是行不通的。 –