Python 如何以可读的方式从rdflib打印术语文字?

Python 如何以可读的方式从rdflib打印术语文字?,python,printing,sparql,dbpedia,rdflib,Python,Printing,Sparql,Dbpedia,Rdflib,我刚开始使用rdflib,我有一个程序,需要得到这个例子中一个人的出生日期,Lewis Carroll。但是,当我尝试打印它打印的日期时,我的程序会这样做: rdflib.term.Literal'1832-01-27',数据类型=rdflib.term.URIRef 我相信有一种简单的方法可以打印日期,但我还没有找到方法。 如果有任何关联,我的代码如下: # open a graph graph = rdflib.Graph() # load some data graph.parse('h

我刚开始使用rdflib,我有一个程序,需要得到这个例子中一个人的出生日期,Lewis Carroll。但是,当我尝试打印它打印的日期时,我的程序会这样做: rdflib.term.Literal'1832-01-27',数据类型=rdflib.term.URIRef

我相信有一种简单的方法可以打印日期,但我还没有找到方法。 如果有任何关联,我的代码如下:

# open a graph
graph = rdflib.Graph()

# load some data
graph.parse('http://dbpedia.org/resource/Lewis_Carroll')

qres = graph.query(
    ("PREFIX dbpedia: <http://dbpedia.org/resource/>\n"
     "PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>\n"
     "PREFIX foaf: <http://xmlns.com/foaf/0.1/>\n"
     "SELECT ?birth WHERE {\n"
     "        ?person dbpedia-owl:birthDate ?birth . \n"
     "        ?person foaf:givenName ?givenName  . \n"
     "        ?person foaf:surname ?surname . \n"
     "        VALUES ?person { dbpedia:Lewis_Carroll }\n"
     "       }"
     ))

print("the graph has %s statements" % len(qres))

for row in qres:
    print(row)

以下是一种打印查询日期的方法:

>>> for row in qres:
...     d = str(row.asdict()['birth'].toPython())
...     print(d)
...
1832-01-27
>>>
我从中得到的一些线索是中记录的rdflib.query.ResultRow.asDict和中记录的rdflib.term.Literal.toPython


请注意,row.asdict['birth'].toPython是一个datetime.date对象。

您可以通过如下方式访问它:row[0][rdflib.term.Literal][0]?我不知道,asdict方法是不必要的。您可以打印行['birth'].topyton或打印行.birth.topyton。假设这些值可以通过变量名访问,或者作为属性,或者作为项:行.b和行[b]是等效的。。