Nếu bạn đang tìm kiếm hiệu quả nhanh chóng sau đó tôi muốn khuyên bạn nên sử dụng Raptor với Redland Python Bindings. Hiệu suất của Raptor, được viết bằng C, là cách tốt hơn RDFLib. Và bạn có thể sử dụng các ràng buộc python trong trường hợp bạn không muốn đối phó với C.
Một lời khuyên khác để cải thiện hiệu suất, quên phân tích cú pháp RDF/XML, đi với hương vị khác của RDF như Turtle hoặc NTriples. Các phân tích cú pháp đặc biệt phân tích nhanh hơn nhiều so với phân tích cú pháp RDF/XML. Điều này là do cú pháp ntriples đơn giản hơn.
Bạn có thể chuyển đổi RDF/XML vào ntriples sử dụng rapper, một công cụ mà đi kèm với Raptor:
rapper -i rdfxml -o ntriples YOUR_FILE.rdf > YOUR_FILE.ntriples
File ntriples sẽ chứa gấp ba như:
<s1> <p> <o> .
<s2> <p2> "literal" .
và phân tích cú pháp có xu hướng xử lý rất hiệu quả cấu trúc này. Hơn nữa, trí nhớ thông minh hiệu quả hơn RDF/XML vì bạn có thể thấy cấu trúc dữ liệu này nhỏ hơn.
Đoạn code dưới đây là một ví dụ đơn giản bằng cách sử dụng bindings 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
Các cơ sở URI là URI tiền tố trong trường hợp bạn sử dụng URI tương đối bên trong tài liệu RDF của bạn. Bạn có thể kiểm tra tài liệu về API ràng buộc Python Redland trong here
Nếu bạn không quan tâm nhiều đến hiệu suất thì sử dụng RDFLib, nó rất đơn giản và dễ sử dụng.
Một đoạn video về cách sử dụng SAX từ Stanford có sẵn ở đây http://timmcnamara.co.nz/post/386007776/learning-about-xml-in-python-this-was-a-great –
@ user201140 ý của bạn là gì với 'truy xuất thẻ'? Thông thường khi phân tích cú pháp RDF, bạn nên tìm kiếm các bộ ba trong đó. Yo có thể giải thích thêm một chút trường hợp sử dụng của bạn của RDF? –