построение графа с использованием rdflib для вывода запроса sparql 'SELECT' с помощью sparqlWrapper - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь построить график из результатов запроса SPARQL. Для построения запроса я использую SparqlWrapper и DBpedia в качестве базы знаний.

from SPARQLWrapper import SPARQLWrapper, JSON
from rdflib import Namespace, Graph, URIRef
from rdflib.namespace import RDF, FOAF
g = Graph()
name = "Asturias"
#labelName = URIRef("<http://dbpedia.org/resource/" + name +">")

sparql = SPARQLWrapper("http://dbpedia.org/sparql")
sparql.setQuery("""
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX dbr:  <http://dbpedia.org/resource/>
    SELECT *
    WHERE { dbr:Asturias ?predicate ?object }
""")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()

for result in results["results"]["bindings"]:
        predicate = result["predicate"]["value"]
        object = result["object"]["value"]
        print(name , predicate , object)
        g.add((name, predicate, object))

print(len(g))
g.serialize(destination='./resources/testg.n3', format='n3')

Это выводит

http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#Thing

и много других результатов, но я ищу способ построить график из результатов, чтобы он был объединен с существующими графиками /

Это выдает ошибку как

in add
    "Predicate %s must be an rdflib term" % (p,)
AssertionError: Predicate http://www.w3.org/1999/02/22-rdf-syntax-ns#type must be an rdflib term

Проблема в том, что выходное значение JSON выглядит примерно так Ссылка

...