如果您正在寻找快速的性能,那么我建议您使用Raptor 和Redland Python Bindings。用 C 语言编写的 Raptor 的性能比 RDFLib 好得多。如果你不想处理 C,你可以使用 python 绑定。
另一个提高性能的建议,忘记解析 RDF/XML,使用其他类型的 RDF,如 Turtle 或 NTriples。专门解析 ntriples 比解析 RDF/XML 快得多。这是因为 ntriples 语法更简单。
您可以使用 rapper(rapper 附带的一个工具)将您的 RDF/XML 转换为 ntriples:
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,以防您在 RDF 文档中使用相对 URI。您可以在here 中查看有关 Python Redland 绑定 API 的文档
如果你不太在意性能,那就用RDFLib吧,简单好用。