2011-10-25 16 views
6

Có thể ai đó có thể cho tôi gợi ý. Có thể đo khoảng cách giữa 2 khái niệm/lớp thuộc cùng một bản thể luận không?Đo khoảng cách giữa các lớp trong đồ thị RDF/OWL

Ví dụ: giả sử tôi có bản thể luận với lớp học Thiên văn học và lớp Kính viễn vọng. Có một liên kết giữa cả hai, nhưng nó không phải là một liên kết trực tiếp. Thiên văn học có một lớp cha được gọi là Khoa học, và Kính viễn vọng có một lớp cha gọi là Dụng cụ quang học thuộc về cha mẹ của nó được gọi là Instrumentation, có liên quan đến một lớp gọi là Khoa học thực nghiệm mà cuối cùng thuộc về một lớp gọi là Khoa học.

Vì vậy, có một liên kết gián tiếp giữa Kính viễn vọng và Thiên văn học, và tôi muốn tìm hiểu số bước cần thiết để đạt được một lớp học bắt đầu từ một lớp khác.

Có truy vấn SPARQL dễ dàng giải quyết câu hỏi đó không? Hay có cách nào tốt hơn để làm công việc đó? Hoặc không thể tìm ra điều đó bằng cách sử dụng mô hình Web Ngữ nghĩa?

Bất kỳ gợi ý nào cũng sẽ được đánh giá cao.

Trả lời

4

Trong SPARQL sự hiểu biết của tôi không chứa bất kỳ cấu trúc đệ quy nào để có thể đo lường liên kết gián tiếp có độ dài tùy ý. Điều tốt nhất bạn có thể làm là chuẩn bị bộ truy vấn distance_1(a, b), distance_2(a, b) ... để kiểm tra khoảng cách cụ thể giữa hai khái niệm.

Một giải pháp thay thế khác là khám phá thông tin này bằng công nghệ không SPARQL, ví dụ viết thuật toán truyền tải đồ thị trong Python bằng RDFlib.

5

SPARQL cung cấp khả năng tìm kiếm các đường dẫn chiều dài tùy ý trong biểu đồ nhưng không có cơ chế để cho bạn biết độ dài của đường dẫn đó.

Vì vậy, bạn có thể làm điều gì đó như:

SELECT * WHERE { ?s ex:property+ ?o } 

Cú pháp rất giống với regex để bạn có thể làm giải pháp thay thế, cardinalities hạn chế vv

2

Vì bạn một cách rõ ràng nói rằng bạn đang nói về lớp học và họ sẽ ở trong cùng bản thể luận, nó là an toàn để giả định rằng chúng sẽ luôn luôn được kết nối (bởi vì cuối cùng cả hai sẽ là một phân lớp của "Thing", phải không?). Mặt khác, con đường mà tôi đã đề cập trong ngoặc đơn (Class1 -> ... -> Thing < - ... < - Class2) là một thứ tầm thường, vì vậy tôi cho rằng bạn muốn tìm ... tất cả các đường dẫn giữa hai lớp, nói cách khác, tất cả các đường dẫn hiện có giữa hai đỉnh. Điều đó có đúng không? Hay bạn đang tìm kiếm con đường ngắn nhất? Câu hỏi của bạn không phải là rất rõ ràng trong khía cạnh đó, bạn có thể làm rõ nó?

Theo như tôi biết không có cấu trúc SPARQL đơn giản nào sẽ liệt kê tất cả các đường dẫn giữa các lớp hoặc đường đi ngắn nhất. Tuy nhiên một số cửa hàng ba web ngữ nghĩa đi kèm với các thuật toán đồ thị traversal như chiều rộng đầu tiên tìm kiếm hoặc sâu-đầu-tìm kiếm, vui lòng tham khảo:

Bạn cũng có thể tìm ra mã nguồn của các dự án sau đây rất hữu ích:

Các vấn đề liên quan