2017-06-19 16 views
0

我有一個語義網練習。我必須從DBpedia中提取一些個人。必須將這些人插入我必須創建的本體中。我的問題是。我可以從DBedia中檢索個人嗎?來自DBpedia的個人

讓我澄清!

當我發送此SPARQL查詢

PREFIX dbo: <http://dbpedia.org/ontology> 
SELECT distinct * WHERE 
{ 
    ?album a dbo:Album . 
} LIMIT 10 

我得到10頁的URI。我應該得到整個實例嗎?我的意思是,標籤,對象屬性,數據屬性等,以便將它們插入我的本體?

我希望他們作爲一個完整的實例。我不想添加更多變量,例如

?album dbo:artist ?artist . 

我可以使用Java api耶拿?

編輯:

讓我給你舉個例子。假設你得到一個相冊與URI

http://dbpedia.org/resource/...Baby_One_More_Time_(album) 

這張專輯還與例如它們的值的一些性質

dbo:artist dbr:Britney_Spears 
dbo:releaseDate 1999-01-12 (xsd:date) 
... 

如何我能得到所有的人都在爲了創造我的本體的indivual專輯特性藝術家和RELEASEDATE和值分別爲Britney_Spears和1999年1月12日?

+1

您是否嘗試過'描述?專輯{?專輯a dbo:專輯} LIMIT 10'? –

+1

「我該怎麼辦」的表述很奇怪。我們如何決定你應該做什麼。首先,您應該瞭解SPARQL'SELECT'和'CONSTRUCT'查詢之間的區別。 SPARQL文檔是你的朋友。 – AKSW

+0

我認爲DESCRIBE適合這個問題,但看看我的編輯。 –

回答

2

那麼,總是要開始的好點是您的要求!你到底需要什麼?有關於本體模塊抽取(參見例如here)的科學過多研究。

我的經驗法則是:您提取的金額必須與結果的完整性和必要的約束條件一致,從而與您的要求保持一致。爲了清楚起見,請考慮以下內容:DBpedia ArtistsubClassOfPerson。現在考慮你從DBPedia中提取所有Artist的實例,而不是ArtistsubClassOfPerson的信息片段。現在,如果你查詢你的數據集要求Person,你會得到沒有什麼。這是一個良好的結果?是的,但它是否完整?沒有!但是,如果您不關心每個ArtistPerson的事實,那麼它就沒關係。值得一提的是,它取決於DBpedia端點本身以及它執行的推理類型。

結論:指定你真正需要的東西。雖然你可以用它們的實例來滿足幾個類,但你也可以提取整個DBpedia。

關於獲取數據,有多種方式;再次取決於您的要求。爲簡單起見,您可以使用Jena TDB三元組存儲並通過Jena訪問它們。您甚至可以將數據存儲在RDF文件中。例如,您可以在DBpedia端點上使用構造查詢,並將結果格式指定爲RDF,然後將其插入RDF引擎。另一個選項,例如answer指出如何使用INSERT查詢將插入任務執行到本地圖中。

+0

感謝您的評論! –

1
  1. 您可以使用任何您想要的元數據從DBpedia檢索實例,但這取決於您想要創建的本體。請看this文檔,它會幫助你理解一些概念。
  2. 你應該得到整個實例嗎?我想你是在問你是否應該根據主題採取所有的比例和對象。不一定......這取決於你的本體,如第一步所述,你決定採取什麼。
  3. 你應該使用耶拿嗎?你可以但你不必!如果您向端點提交CONSTRUCT查詢,則可以獲取數據,但據我瞭解,您不想添加變量。因此,您可以通過詢問與實例有關的所有元數據來構建查詢。

    CONSTRUCT {?album \ p?o} WHERE { ?album a dbo:Album。 ?專輯?p?o }

  4. 如果您想獲得有限數量的實例,那麼您可以在此查詢結尾再次添加限制。

+0

感謝您的評論 –