0

我正在通过 python rdflib 执行 sparql 查询,例如

r=sparql.prepareQuery('SELECT ?label WHERE { <%s> rdfs:label ?label . }'%i)

我的目标是以这种方式获得概念的标签。结果我得到了这样的东西:

rdflib.term.Literal(u'primary phloem sieve cell', datatype=rdflib.term.URIRef(u'http://www.w3.org/2001/XMLSchema#string'))

从中我想提取标签和数据类型。(即本例的主韧皮筛细胞和字符串)我正在使用

if type(o) == rdflib.term.Literal:
    output.append(o.toPython())

在哪里

o= rdflib.term.Literal(u'primary phloem sieve cell', datatype=rdflib.term.URIRef(u'http://www.w3.org/2001/XMLSchema#string')) 

但它不起作用。我是 rdflib 的新手。有谁知道我该怎么做?

我知道我需要将结果转换为字符串作为标签,但是如果数据类型不是字符串并且我想获取数据类型怎么办

4

1 回答 1

3

我想通了。因为查询结果的类型,即 o 是 'rdflib.query.ResultRow' 而 o[0] 是类 'rdflib.term.Literal'。因此 if 条件不起作用。删除 if 条件对我有用,对于我需要执行另一个 sparql 查询的数据类型。

于 2014-10-05T15:05:19.807 回答