Получить актерское кино? Linkedmdb
В настоящее время я пытаюсь получить фильмы (мне нужен их URI), в которых действовал актер. Когда я изучаю связанную mdb, я вижу "is" actor "of", но я не могу использовать его в своем запросе SPARQL. Это какое-то специальное пространство имен или что-то? Или это в онтологии OWL? Запрос, который я использую сейчас:
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?actorName ?filmName WHERE{
<http://data.linkedmdb.org/resource/actor/30947> movie:actor_name ?actorName .
<http://data.linkedmdb.org/resource/actor/30947> movie:performance ?film .
?film movie:performance_film ?filmName .
}
Этот код возвращает только заголовок, я хотел бы весь URI фильма.
1 ответ
Говоря это
о п р х
это распространенный способ сказать, что данные содержат тройной
спо
Итак, видя, что
актер32 является актером фильма89
означает, что данные содержат
фильм89 актер актер32
Я бы сказал, что у актера собственности плохое имя. Это больше похоже на features или hasActor, но RDF генерируется отображением из базы данных, поэтому я предполагаю, что некоторые имена генерируются автоматически, и что все они не могут быть хорошими. В любом случае это означает, что запрос, подобный следующему, найдет все фильмы и их названия, которые <http://data.linkedmdb.org/resource/actor/30947>
действовал в.
SELECT ?movie ?movieTitle WHERE{
?movie movie:actor <http://data.linkedmdb.org/resource/actor/30947> .
?movie dc:title ?movieTitle .
}
Кроме того, вы можете немного сократить этот запрос, используя ;
продолжить список объектов предиката, чтобы вам не приходилось повторять тему ?movie
:
SELECT ?movie ?movieTitle WHERE{
?movie movie:actor <http://data.linkedmdb.org/resource/actor/30947> ;
dc:title ?movieTitle .
}
Приложение: об "есть - из"
Обозначение 3 (N3): читаемый синтаксис RDF, который очень похож на Turtle, Terse RDF Triple Language (на самом деле, Turtle является подмножеством N3), но который включает в себя несколько более синтаксических конструкций, фактически позволяет "is - of" Способ написания троек. Производство грамматики для предиката:
predicate
expression
"<="
"="
"=>"
"@a"
"@has" expression
"@is" expression "@of"
Это означает, что в N3 вы можете, например, перечислить некоторые экземпляры класса с
ex:Planet @is rdf:type @of
:Mercury, :Venus, :Earth, :Mars, :Jupiter, :Saturn, :Uranus, :Neptune .
вместо того, чтобы делать
:Mercury rdf:type ex:Planet .
:Venus rdf:type ex:Planet .
:Earth rdf:type ex:Planet .
:Mars rdf:type ex:Planet .
:Jupiter rdf:type ex:Planet .
:Saturn rdf:type ex:Planet .
:Uranus rdf:type ex:Planet .
:Neptune rdf:type ex:Planet .
К сожалению, многие инструменты, которые утверждают, что поддерживают N3, фактически поддерживают только Turtle, и не приняли бы первую форму. Однако, если вы работаете с чем-то, что на самом деле поддерживает N3, вы можете написать
<http://data.linkedmdb.org/resource/actor/30947> @is movie:actor @of ?movie .
?movie dc:title ?movieTitle .
К сожалению, синтаксис SPARQL для тройных шаблонов не поддерживает @is — @of
так что вы не сможете сделать это в своем запросе.