Если вы ищете высокую скорость работы, то я бы рекомендовал использовать Raptor с Redland Python Bindings. Производительность Raptor, написанная на C, намного лучше, чем RDFLib. И вы можете использовать привязки python в случае, если вы не хотите иметь дело с C.
Еще один совет для улучшения производительности, забудьте о разборе RDF/XML, идите с другим вкусом RDF, например, Turtle или NTriples. Специально разбирающиеся ntriples намного быстрее, чем разбор RDF/XML. Это связано с тем, что синтаксис ntriples проще.
Вы можете превратить ваш RDF/XML в ntriples с использованием рэпера, инструмента, который поставляется с хищником:
rapper -i rdfxml -o ntriples YOUR_FILE.rdf > YOUR_FILE.ntriples
Файл ntriples будет содержать тройки, как:
<s1> <p> <o> .
<s2> <p2> "literal" .
и парсеры, как правило, очень эффективная обработка этой структуры. Более того, разумная память более эффективна, чем RDF/XML, поскольку, как вы видите, эта структура данных меньше.
Код ниже приведен простой пример использования питона привязок Redland:
import RDF
parser=RDF.Parser(name="ntriples") #as name for parser you can use ntriples, turtle, rdfxml, ...
model=RDF.Model()
stream=parser.parse_into_model(model,"file://file_path","http://your_base_uri.org")
for triple in model:
print triple.subject, triple.predicate, triple.object
Базовый URI является префиксом URI в случае, если использовать относительные URI, в документе RDF. Вы можете проверить документацию о API-интерфейсах Python Redland bindings в here
Если вам не все равно о производительности, то используйте RDFLib, он прост и прост в использовании.
Видео о том, как использовать SAX из Стэнфорда доступна здесь http://timmcnamara.co.nz/post/386007776/learning-about-xml-in-python-this-was-a-great –
@ user201140 Что вы имеете в виду с 'retrieve the tag'? Обычно при разборе RDF вы должны искать тройки в нем. Мог ли я объяснить немного больше вашего случая использования RDF? –