2013-09-03 1 views
1

Я пытаюсь решить эту задачу, когда мне нужно получить список участников для данного названия фильма. Я новичок в SPARQL и dbpedia.Получение списка участников из dbpedia с использованием SPARQL

После прочтения некоторых уроков, до сих пор у меня есть следующий:

PREFIX dbpo: <http://dbpedia.org/ontology/> 

SELECT ?actor_name 
WHERE { 
    SERVICE <http://dbpedia.org/sparql> { 
    "Total Recall" dbpo:movieTitle ?movieName . 
    ?movieName dbpo:actor ?actor. 
    ?actor dbpo:actor_name ?actor_name. 
    } 
} 

Возможно, я получаю имена неправильно.

В целом обратите внимание, как мне нужно найти определенные точки обслуживания из dbpedia, например, описанные в этом вопросе.

ответ

1

Я не уверен, где вы получали свойства, которые вы использовали в своем запросе, поскольку они, похоже, не используются в соответствующих ресурсах. Дополнительная проблема состоит в том, что, хотя SPARQL позволяет как тройной шаблон, литералы не могут быть субъектами RDF троек, которые вам нужны для того, чтобы соответствовать

"Total Recall" dbpo:movieTitle ?movieName . 

Этой тройку, если бы оно было законным, будет это утверждение, что строка «Total Recall» имеет название фильма и привязывает переменную ?movieName к этому названию. Строка не является фильмом, поэтому, вероятно, у него тоже не будет названия фильма.

В данном конкретном случае, обратите внимание на информацию, которая DBpedia имеет на Total Recall, посетив

Вы увидите некоторые троек в форме

dbpprop:starring dbpedia:Ronny_Cox 
dbpprop:starring dbpedia:Arnold_Schwarzenegger 

, который предполагает, что вы хотите, запрос типа:

select ?actorName where { 
    ?film rdfs:label "Total Recall"@en ; 
     dbpprop:starring ?actor . 
    ?actor rdfs:label ?actorName . 
    filter(langMatches(lang(?actorName),"en")) 
} 

SPARQL results

Этот запрос подходит для подключения к public DBpedia SPARQL endpoint, но если вы работаете на местном уровне и хотите использовать service ключевое слово федеративные запрос, вы могли бы сделать это с service <http://dbpedia.org/sparql>:

prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
prefix dbpprop: <http://dbpedia.org/property/> 

select ?actorName where { 
    service <http://dbpedia.org/sparql> { 
    ?film rdfs:label "Total Recall"@en ; 
      dbpprop:starring ?actor . 
    ?actor rdfs:label ?actorName . 
    filter(langMatches(lang(?actorName),"en")) 
    } 
} 

в общем, один из лучших способов увидеть, какие классы и свойства используются в DBpedia является использовать тот факт, что DBpedia имеет соглашение об именах для ресурсов, как описано в DBpedia resource name standard, поэтому, учитывая статью Википедии XYZ, вы можете получить http://dbpedia.org/resource/XYZ и посмотреть данные. Для классов и свойств онтологии вы также можете увидеть documentation about the ontology и browse the ontology classes. Для интерактивных запросов полезно использовать public SPARQL endpoint.

+0

Один из моих запросов заключается в том, как я мог получить доступные свойства. –

+1

Я только что обновил свой ответ с некоторыми ссылками на документацию онтологии. Для поиска свойств я обнаружил, что самое полезное для этого - посетить некоторые интересующие вас ресурсы и посмотреть на свойства, которые были с ними использованы. –

+0

поэтому для конечной точки обслуживания я должен использовать: «http://dbpedia.org/resource/Total_Recall» –

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

  • Нет связанных вопросов^_^