Trong Jena, Resource
đối tượng tự không trong mô hình. Mô hình chỉ chứa bộ ba - Statement
đối tượng chứa chủ đề, vị từ và đối tượng (thường là chữ viết tắt SPO). Bất kỳ một trong S, P hoặc O có thể là một nguồn tài nguyên (lưu ý rằng Property
là một loại phụ của Resource
trong Jena và trong tiêu chuẩn RDF). Vì vậy, bạn cần phải tinh chỉnh câu hỏi của mình từ "mô hình này có chứa tài nguyên này" hay không:
Mô hình M có chứa tài nguyên R làm chủ đề không?
mô hình M có chứa tài nguyên R làm chủ đề, vị từ hoặc đối tượng không?
này có thể đạt được như:
Resource r = ... ;
Model m = ... ;
// does m contain r as a subject?
if (m.contains(r, null, (RDFNode) null)) {
..
}
// does m contain r as s, p or o?
if (m.containsResource(r)) {
..
}
Ngẫu nhiên, trong mẫu mã của bạn, bạn có
model.getResource("example")
này trả về một đối tượng Resource
tương ứng với URI nhất định, nhưng không làm phụ -Hiệu quả gấp ba trong mô hình. Đây là lý do mà Model
có cả hai getResource
và createResource
- có khả năng có hiệu quả hơn một chút vì nó tái sử dụng các đối tượng tài nguyên, nhưng ngữ nghĩa về cơ bản là giống hệt nhau. Tuy nhiên, đối số bạn chuyển đến getResource
hoặc createResource
phải là URI. Bạn đang vay rắc rối từ tương lai nếu bạn bắt đầu sử dụng thẻ như "example"
thay cho URI đầy đủ, vì vậy tôi khuyên bạn nên dừng thói quen xấu này trước khi bạn cảm thấy thoải mái với nó!
Nguồn
2013-03-14 10:12:24
có thể liên kết này [Mô hình giao diện] (http://jena.apache.org/documentation/javadoc/jena/com/hp/hpl/jena/rdf/model/Model.html) rất hữu ích. –
Sau khi nghiên cứu một chút, tôi đã tìm thấy cách tiếp theo. Tôi không biết đây có phải là cách tốt nhất để đạt được nó hay không, nhưng hoạt động: Tài nguyên toSearch = ResourceFactory.createResource ("example"); nếu (! Model.containsResource (toSearch)) ...; – jevora
Nếu nó được giải quyết sau đó gửi một câu trả lời và chấp nhận nó, vì vậy người tiếp theo với cùng một vấn đề sẽ tìm thấy câu trả lời, bạn cũng nhận được một huy hiệu! :) – Boaz