Если вы ищете высокую производительность, то я бы порекомендовал вам использовать Raptor с Redland Python Bindings .Производительность Raptor, написанного на C, намного лучше, чем RDFLib.И вы можете использовать привязки python, если вы не хотите иметь дело с C.
Еще один совет по повышению производительности, забудьте о разборе RDF / XML, используйте другой вариант RDF, например Turtle или NTriples .Специально разбор ntriples намного быстрее, чем разбор RDF / XML.Это потому, что синтаксис ntriples проще.
Вы можете преобразовать свой RDF / XML в ntriples, используя rapper, инструмент, который поставляется с raptor:
rapper -i rdfxml -o ntriples YOUR_FILE.rdf > YOUR_FILE.ntriples
Файл ntriples будет содержать тройки, такие как:
<s1> <p> <o> .
<s2> <p2> "literal" .
и синтаксические анализаторы, как правило, очень эффективно обрабатывают эту структуру.Более того, память более эффективна, чем RDF / XML, потому что, как вы можете видеть, эта структура данных меньше.
Приведенный ниже код является простым примером использования привязок redland python:
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 в здесь
Если вам не важна производительность, используйте RDFLib , она проста и удобна в использовании.