Se siete alla ricerca di prestazioni veloci, allora vi consiglio di utilizzare Raptor con il Redland Python Bindings. Le prestazioni di Raptor, scritte in C, sono decisamente migliori di quelle di RDFLib. Ed è possibile utilizzare i collegamenti Python nel caso in cui non si voglia gestire C.
Un altro consiglio per migliorare le prestazioni, dimenticare l'analisi di RDF/XML, andare con altri gusti di RDF come Turtle o NTriples. L'analisi speciale di ntriple è molto più rapida dell'analisi di RDF/XML. Questo perché la sintassi ntriples è più semplice.
È possibile trasformare il vostro RDF/XML in ntriples utilizzando rapper, uno strumento che viene fornito con rapace:
rapper -i rdfxml -o ntriples YOUR_FILE.rdf > YOUR_FILE.ntriples
Il file ntriples conterrà triple come:
<s1> <p> <o> .
<s2> <p2> "literal" .
e parser tendono ad essere gestione molto efficiente di questa struttura. Inoltre, la memoria è più efficiente di RDF/XML perché, come puoi vedere, questa struttura dati è più piccola.
Il codice sotto è un semplice esempio utilizzando i binding 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
L'URI di base è l'URI prefissato nel caso in cui si utilizza URI relativi all'interno del documento RDF. È possibile controllare la documentazione sull'API di collegamenti Python Redland in here
Se non si cura molto delle prestazioni, utilizzare RDFLib, è semplice e facile da usare.
Un video su come utilizzare SAX presso la Stanford è disponibile qui http://timmcnamara.co.nz/post/386007776/learning-about-xml-in-python-this-was-a-great –
@ user201140 cosa intendi con 'recuperare un tag'? Normalmente durante l'analisi di RDF dovresti cercare le triple in esso. Potresti spiegare un po 'di più il tuo caso d'uso di RDF? –