SPARQL - Извлечение Директора и В ролях из DBPedia - PullRequest
0 голосов
/ 22 октября 2019

Может кто-нибудь, пожалуйста, помогите мне с этим кодом. Это не дает никакого вывода, но без ошибок.

q = """SELECT DISTINCT ?label ?abstract ?director ?starring
WHERE {
    <http://dbpedia.org/resource/Seven_Beauties> rdfs:label ?label.
    ?label dbo:abstract ?abstract. 
    ?label dbo:director ?director. 
    ?label dbo:starring ?starring. 
    FILTER (lang(?label) = "en")
    FILTER (lang(?abstract) = "en")
}"""

from textwrap import wrap

for result in query(q): 
    print(result['label'],
      "\n----Director----\n",result['director'],
      "\n----Starring----\n",result['starring'],
      "\n----Abstract----\n",
      "\n".join(wrap(result['abstract'])))

1 Ответ

0 голосов
/ 22 октября 2019

<http://dbpedia.org/resource/Seven_Beauties> - это сущность, у которой есть Метка, Абстракт, Директор, Звезда и т. Д.

Метка этой сущности является литералом и не имеет Директора, Звезды, Абстракта и т. Д.

Попробуйте изменить ваш запрос на -

SELECT DISTINCT ?label ?abstract ?director ?starring
WHERE 
  {
    <http://dbpedia.org/resource/Seven_Beauties> 
       rdfs:label   ?label ;
       dbo:abstract ?abstract ;
       dbo:director ?director ;
       dbo:starring ?starring 
    FILTER ( lang(?label) = "en" )
    FILTER ( lang(?abstract) = "en" )
  }

- и посмотреть результаты DBpedia .

DBpedia Live доставляетничего для запроса выше - потому что описания фильмов варьируются. Возможность сделать некоторые вещи необязательными даст вам больше результатов на DBpedia Live -

SELECT DISTINCT ?label ?abstract ?director ?starring
WHERE
{
             <http://dbpedia.org/resource/Seven_Beauties> rdfs:label   ?label 
  OPTIONAL { <http://dbpedia.org/resource/Seven_Beauties> dbo:abstract ?abstract }
  OPTIONAL { <http://dbpedia.org/resource/Seven_Beauties> dbo:director ?director }
  OPTIONAL { <http://dbpedia.org/resource/Seven_Beauties> dbo:starring ?starring }
  FILTER ( lang(?label) = "en" )
  FILTER ( lang(?abstract) = "en" )
}
...