2012-06-20 3 views
2

Я пытаюсь запустить запрос на DBPedia.org через SPARQL. В принципе, вот что я хочу сделать:Какая версия SPARQL для этого запроса?

  • Получить список DBpedia ресурса ссылки

ГДЕ

  • FOAF: имя (http://xmlns.com/foaf /0.1/name) равно PARAMETER1
  • Или dbpprop: companyName (http://dbpedia.org/property/companyName) равно PARAMETER1
  • Или dbpprop: имя (http://dbpedia.org/property/name) равно параметр1

И

  • РДФ: тип (http://www.w3.org/1999/02/22-РДФ-синтаксисом нс # тип) равен pARAMETER2
  • Или DBpedia сова: тип (http://dbpedia.org/ontology/type) равно pARAMETER2

Я пробовал сделать это сам, но совершенно не смог добиться успеха зультаты.

Любая помощь будет оценена - спасибо!

Edit: Вот запрос, который я работал на:

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 использовать языковые теги и ваш запрос ищет имена с простым литеральные значения. Этот запрос работает для меня:

, что я добавил DISTINCT
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> . 
    } 
} 

Примечание дублирует ответы, которые возникают, когда ресурс имеет несколько значений, например, для foaf:name и dbpprop:companyName.

1

Это можно сделать гораздо более чисто, используя значения. Вы можете использовать значения, чтобы указать свойства, которые могут идентифицировать имя. Кроме того, Google не имеет значения ресурса для dbpprop: type (по крайней мере, больше нет); лучше придерживаться 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

Смежные вопросы