Si usted está buscando para un rendimiento rápido, te recomiendo que uses Raptor con el Redland Python Bindings. El rendimiento de Raptor, escrito en C, es mucho mejor que RDFLib. Y puede usar los enlaces de python en caso de que no desee tratar con C.
Otro consejo para mejorar el rendimiento, olvídese de analizar RDF/XML, vaya con otro sabor de RDF como Turtle o NTriples. El análisis de ntriples es mucho más rápido que el análisis RDF/XML. Esto se debe a que la sintaxis ntriples es más simple.
Usted puede transformar su RDF/XML en N-Triples utilizando rapero, una herramienta que viene con raptor:
rapper -i rdfxml -o ntriples YOUR_FILE.rdf > YOUR_FILE.ntriples
El archivo N-Triples contendrá triples como:
<s1> <p> <o> .
<s2> <p2> "literal" .
y analizadores tienden a ser muy eficiente manejando esta estructura. Además, la memoria inteligente es más eficiente que RDF/XML porque, como puede ver, esta estructura de datos es más pequeña.
El código siguiente es un ejemplo sencillo utilizando los enlaces de Python 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
El URI base es el URI prefijado en el caso de usar URIs relativos dentro de su documento RDF. Puede consultar la documentación sobre la API de enlaces de Python Redland en here
Si no le importa mucho el rendimiento, utilice RDFLib, es simple y fácil de usar.
un vídeo sobre cómo utilizar SAX de Stanford está disponible aquí http://timmcnamara.co.nz/post/386007776/learning-about-xml-in-python-this-was-a-great –
@ user201140 ¿Qué quieres decir con 'recuperar una etiqueta'? Normalmente al analizar RDF debes buscar los triples en él. ¿Podría explicar un poco más su caso de uso de RDF? –