2012-06-20 23 views
2

我想通過SPARQL在DBPedia.org上運行查詢。基本上,這是我想做的事:此查詢的正確SPARQL版本是什麼?

  • DBpedia中獲取資源的鏈接列表

WHERE

  • FOAF:名稱(http://xmlns.com/foaf /0.1/name)等於PARAMETER1
  • 或dbpprop:companyName(http://dbpedia.org/property/companyName)等於PARAMETER1
  • 或者dbpprop:名稱(http://dbpedia.org/property/name)等於PARAMETER1

  • RDF:類型(http://www.w3.org/1999/02/22 RDF-語法納秒#型)等於PARAMETER2
  • 或者DBpedia中-貓頭鷹:類型(http://dbpedia.org/ontology/type)等於PARAMETER2

我已經嘗試過自己做這件事,但完全沒有取得任何成功sults。

任何幫助將不勝感激 - 謝謝!

編輯: 下面是我一直工作在一個查詢:

SELECT ?s 
WHERE { 
    { 
     ?s <http://xmlns.com/foaf/0.1/name> "Google Inc." . 
    } UNION { 
     ?s <http://dbpedia.org/property/companyName> "Google Inc." . 
    } UNION { 
     ?s <http://dbpedia.org/property/name> "Google Inc." . 
    } 

    { 
     ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbpedia.org/ontology/Company> . 
    } UNION { 
     ?s <http://dbpedia.org/ontology/type> <http://dbpedia.org/resource/Public_company> . 
    } 
} 
+0

你可以發佈你試過查詢? – Alex

+0

嗨,亞歷克斯,我發佈了一個查詢,我一直在努力。 – Nikko

回答

3

你幾乎擁有了,唯一的問題是,在DBpedia中的屬性值使用語言標記和您的查詢似乎與普通的名字文字值。此查詢的工作對我來說:

SELECT DISTINCT ?s 
WHERE { 
    { 
     ?s <http://xmlns.com/foaf/0.1/name> "Google Inc."@en . 
    } UNION { 
     ?s <http://dbpedia.org/property/companyName> "Google Inc."@en . 
    } UNION { 
     ?s <http://dbpedia.org/property/name> "Google Inc."@en . 
    } 

    { 
     ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbpedia.org/ontology/Company> . 
    } UNION { 
     ?s <http://dbpedia.org/ontology/type> <http://dbpedia.org/resource/Public_company> . 
    } 
} 

注意,我添加了一個DISTINCT以消除出現在資源有多個值,例如重複的答案對於foaf:namedbpprop:companyName

1

這可以使用的值乾淨地寫得更清楚。您可以使用指定可能標識名稱的屬性。此外,Google沒有dbpprop資源值:類型(至少不再是);最好堅持使用rdf:型號dbpedia-owl:公司。這意味着您的查詢可以成爲:

select distinct ?s where { 
    values ?name { foaf:name dbpprop:companyName dbpprop:name } 
    ?s a dbpedia-owl:Company ; 
    ?name "Google Inc."@en . 
} 

SPARQL results

相關問題