Analysieren von großen RDF in Python
Möchte ich parse eine sehr große (über 200MB) RDF-Datei in python. Soll ich mich mit sax-oder eine andere Bibliothek? Ich würde schätzen, einige sehr grundlegende code, den ich bauen können, sagen, rufen Sie einen tag.
Vielen Dank im Voraus.
InformationsquelleAutor der Frage usertest | 2010-10-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie auf der Suche für schnelle Leistung, dann würde ich Ihnen empfehlen, Raptor mit der Redland Python-Bindings. Die Leistung des Raptor, der in C geschrieben ist, ist viel besser als die RDFLib. Und Sie können die python-Bindungen im Fall, Sie wollen nicht zu behandeln mit C.
Weiteren Beratung zur Verbesserung der Leistung, vergessen Sie das Parsen von RDF/XML, gehen mit anderen Geschmack von RDF wie Schildkröte oder NTriples. Speziell analysieren ntriples ist viel schneller als das Parsen von RDF/XML. Dies ist, weil die ntriples-syntax ist einfacher.
Verwandeln Sie Ihre RDF/XML ntriples mit rapper, ein Werkzeug, das bei raptor:
Den ntriples-Datei enthalten verdreifacht wie:
und Parser sind in der Regel sehr effizienten Umgang mit dieser Struktur. Darüber hinaus memory-wise ist effizienter als RDF/XML, weil, wie Sie sehen können, diese Daten-Struktur ist kleiner.
Dem folgenden code wird ein einfaches Beispiel mit der redland python-bindings:
Der base-URI ist der URI-Präfix, im Falle der Verwendung von relativen URIs in Ihrem RDF-Dokument. Sie können überprüfen Sie die Dokumentation zu den Python Redland Bindungen API in hier
Wenn Sie don ' T Pflege viel über die Leistung dann verwenden RDFLibes ist einfach und leicht zu bedienen.
InformationsquelleAutor der Antwort Manuel Salvadores
Ich zweiten den Vorschlag, dass du versuchen aus rdflib. Es ist schön und das schnelle prototyping und die BerkeleyDB-backend-store skaliert ziemlich gut in die Millionen verdreifacht, wenn Sie nicht wollen, zu laden, wird das gesamte Diagramm in den Speicher.
InformationsquelleAutor der Antwort Ed Summers
Meiner Erfahrung, SAX ist ideal für die Leistung, aber es ist ein Schmerz zu schreiben. Es sei denn, ich habe Probleme, ich Neige dazu, zu vermeiden, Programmierung.
"Sehr groß" ist abhängig von der RAM der Maschine. Vorausgesetzt Ihr computer verfügt über 1 GB Speicher,
lxml
pyxml
oder eine andere Bibliothek e wird gut für die 200mb-Dateien.InformationsquelleAutor der Antwort Tim McNamara
Nicht sicher, ob sax ist die beste Lösung, aber IBM scheint zu glauben, es funktioniert für high-performance-XML-Parsen mit Python: http://www.ibm.com/developerworks/xml/library/x-hiperfparse/. Ihr Beispiel RDF Zwerge Ihnen in der Größe (200 MB vs. 1.9 GB), so dass Ihre Lösung sollte auch bei dir funktionieren.
In diesem Artikel Beispiele beginnen ziemlich einfach und abholen schnell.
InformationsquelleAutor der Antwort Rafe Kettler
Zur RDF-Verarbeitung in Python, sollten Sie verwenden eine RDF-Bibliothek wie RDFLib. Wenn Sie brauchen auch einen triplestore, komplexere Lösungen sind verfügbar, aber möglicherweise nicht erforderlich hier (PySesameneo4jrdf mit neo4jpy).
Vor dem schreiben Ihrer eigenen SAX-parser für RDF, check-out rdfxml.py:
InformationsquelleAutor der Antwort jsalonen