2012-05-07 17 views
5

tôi cần phải tạo RDF trông như thế này:Làm thế nào để có được RDF/XML lồng nhau từ Jena?

<rdf:Description rdf:about='uri1'> 
    <namespace:level1> 
    <rdf:Description> 
     <namespace:blankNode rdf:resource='uri2'/> 
     <namespace:text></namespace:text> 
    </rdf:Description> 
    </namespace:level1> 
</rdf:Description> 

<rdf:Description rdf:about="uri2"> 
    some properties here 
</rdf:Description> 

Như bạn có thể thấy, có cấu trúc lồng nhau, cũng như các nút trống. (Tôi không biết nếu đó là thuật ngữ chính xác cho "blankNode" tài sản trong cơ cấu của tôi.) Nếu tôi sử dụng

model.write(System.out, "RDF/XML-ABBREV"); 

sau đó thậm chí nút trống được lồng nhau, mà tôi không muốn. Có cách nào để có được loại cấu trúc này bằng Jena không? Hoặc là có bất kỳ thư viện khác cho Java có thể xử lý tốt hơn?

Trả lời

6

Tôi nghĩ bạn đang đi sai hướng này.

Làm tổ là một khái niệm chỉ có ý nghĩa khi nói về cây cối. Nhưng RDF không phải về cây cối, mà là về ba. Quên một lúc về cấu trúc của XML, và suy nghĩ về các bộ ba được mã hóa trong XML. Tôi tìm thấy model.write(System.out, "N-TRIPLES"); hữu ích nhất cho điều đó.

Trước tiên, bạn cần hiểu những bộ ba bạn muốn tệp RDF/XML của mình thể hiện. Miễn là nó thể hiện đúng ba, nó không quan trọng cho dù một nút được viết lồng nhau bên trong khác hoặc những gì thứ tự xuất hiện trong. Đây hoàn toàn là "mỹ phẩm" câu hỏi, như thụt đầu dòng.

+0

Cảm ơn bạn đã giải thích! Đó là cho một dự án trường học, vì vậy các yêu cầu cho cấu trúc đã được trao cho tôi :). Nhưng tôi đã nói chuyện với giáo sư của tôi bây giờ và đã thay đổi nó. – user1355348

+0

Hoàn toàn đồng ý với cygri, hãy thử model.write (System.out, "TURTLE"); (serialization nhân đạo hơn) và quên đi việc tìm hiểu về RDF xem xét tuần tự hóa RDF/XML của nó. Tốt để yêu cầu 'yêu cầu lạ' được thay đổi. ;-) – castagna

+0

Làm tốt công việc “khai sáng” giáo sư của bạn! Bạn chắc chắn xứng đáng được +1 cho điều đó ;-) – cygri