2015-04-25 4 views
1

Я использую RDF lib для извлечения значений из онлайн-магазина в три раза.Python RDF lib - Строковое значение для узлов

Мне было интересно, что представляет собой идеальный способ превратить URIRef и литералы в простые струнные объекты?

Например:

value = g.value(s,FOAF.page) 

Должен ли я использовать value.n3() или value.__str__()? Есть ли разница? На моих тестах оба возвращают жало, которое выглядит одинаково.

Первоначально я только что хранил значение, но выясняет, что он вызывает проблемы во время сравнения строк, поэтому я хотел бы просто сохранить строку, так как после извлечения обработки, связанной с rdf, нет.

ответ

1

Если вы хотите, чтобы строка содержала литерал, используйте str(value). Обратите внимание, что это отбрасывает некоторую информацию - тип данных и язык - которые являются частью модели RDF.

Для сравнения:

lit = rdflib.term.Literal('Literal\nvalue', lang='en') 

print(str(lit)) 
print('---') 
print(lit.n3()) 

дает:

Literal 
value 
--- 
"""Literal 
value"""@en 

Это звучит, как вы хотите, чтобы бывший.

См. pydoc3 rdflib.term.Literal.n3 для получения более подробной информации о том, что возвращает метод n3().

 Смежные вопросы

  • Нет связанных вопросов^_^