Извличане на типове данни и имена на етикети от 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