2015-11-22 4 views
0

Я пытаюсь запросить данные из <http://dbpedia.org/ontology/Person> с использованием SPARQL в DBpedia. Однако свойство, которое я пытаюсь найти, приведено как dbp:children of (пример здесь: http://dbpedia.org/page/Angelina_Jolie).SPARQL и [свойство] запроса

Однако при выполнении запроса dbp:childrenOf, dbo:children_of и аналогичные другие не работают. Как я должен попросить об этом?

Спасибо!

Вот мой пример запроса:

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>   
PREFIX type: <http://dbpedia.org/class/yago/> 
PREFIX dbp: <http://dbpedia.org/property/> 

SELECT DISTINCT ?person ?birthDate ?birthPlace ?parents 
WHERE { 
      ?person a    dbo:Person . 
     { ?person rdfs:label  "Angelina Jolie"@en } 
    UNION { ?person dbp:name  "Angelina Jolie"@en } . 

      ?person dbo:birthDate ?birthDate. 
      ?person dbo:birthPlace ?bp. 
      ?bp  rdfs:label  ?birthPlace. 
OPTIONAL { ?person dbp:childrenOf ?parents} 
    FILTER (LANG(?birthPlace)='en') 
} 

Линия Я пытаюсь исправить это положение OPTIONAL.

+0

Имущество, которое вы ищете, на самом деле является «dbp: children», но оно обратно используется на этой странице, в котором говорится, что Jolie ** является «dbp: children» ** ее родителей (т. Е. {dbr: Jon_Voight dbp: children dbr: Angelina_Jolie. dbr: Marcheline_Bertrand dbp: children dbr: Angelina_Jolie} '). – TallTed

ответ

0

К сожалению, я не думаю, что у детей Анджелины есть страницы Википедии (поэтому нет страниц в DBpedia), поэтому вам будет сложно решить любые ответы с помощью этого конкретного примера.

Вот несколько иная версия запроса для получения родителей другого человека -

PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>   
PREFIX type: <http://dbpedia.org/class/yago/> 
PREFIX dbp: <http://dbpedia.org/property/> 

SELECT DISTINCT ?person ?birthDate ?birthPlace ?parents 
WHERE { 
     ?person a dbo:Person . 

     {?person rdfs:label "Ras Barker"@en} 
     UNION 
     {?person dbp:name "Ras Barker"@en} 
     UNION 
     {?person dbo:birthName "Ras Barker"@en} 

     OPTIONAL { ?person dbo:birthDate ?birthDate. } 
     OPTIONAL { ?person dbo:birthPlace ?bp . ?bp rdfs:label ?birthPlace. } 
     #OPTIONAL { ?person dbo:parent ?parents } 
     OPTIONAL { ?parents dbo:child ?person } 
     FILTER (LANG(?birthPlace)='en') 
} 

Я решил использовать dbo предикат child вместо childrenOf (не уверен, что этот предикат используется). И обернул материал, связанный с рождением, в статью OPTIONAL, так как вы не можете на 100% полагаться на данные экземпляра, имеющие эти предикаты.

+0

Но childrenOF относится к dbr: JonVoight, у которого есть страница (не ищите детей Анджелины, кроме их родителей). –

+0

В этом случае может помочь замена последнего необязательного предложения. своп это - ФАКУЛЬТАТИВНЫЕ {человек ДБО:? Родительская родители} для - ФАКУЛЬТАТИВНЫМ {? Родители ДБО: ребенок человек} –

+0

Просто для уточнения в вас исходном запросе (http://dbpedia.org/property/childrenOf) это не настоящий предикат, который используется. –