Извлечение имен типов данных и меток из rdflib.term.Literal

Я выполняю запрос sparql через python rdflib, например

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. Кто-нибудь знает, как я могу это сделать?

Я знаю, что мне нужно преобразовать результат в строку для метки, но что, если тип данных не является строкой, и я хочу получить тип данных


person ankita singh    schedule 05.10.2014    source источник
comment
Пожалуйста, отформатируйте свой вопрос.   -  person dursk    schedule 05.10.2014


Ответы (1)


Я понял это. Поскольку тип результата запроса, т. Е. o, - это «rdflib.query.ResultRow», а o [0] - это класс «rdflib.term.Literal». Следовательно, условие if не работает. Удаление условия if сработало для меня, и для типа данных мне нужно выполнить еще один запрос sparql.

person ankita singh    schedule 05.10.2014
comment
Не забудьте принять ваш ответ, чтобы другие знали, что он сработал. - person Joshua Taylor; 05.10.2014