2012-10-28 42 views
7

Tôi hiện đang chơi một chút với OWL và đặc biệt là với các hạn chế. Tôi đang cố gắng tạo truy vấn thực hiện như sau:Hạn chế OWL - xác định các lớp chỉ chứa các thuộc tính có giá trị thuộc tính cụ thể

Giả sử rằng tôi có một lớp 'Rạp chiếu phim' có thuộc tính 'phim' (chứa các đối tượng thuộc loại 'Phim'). Lớp 'Phim' chứa thuộc tính có tên 'thể loại'. Bây giờ tôi muốn tạo một lớp ActionCinemas chỉ có các bộ phim với thể loại 'hành động'.

Tôi thực sự không chắc chắn cách thực hiện việc này. Tôi đã suy nghĩ về việc làm một cái gì đó với giao lộ hoặc cardinality nhưng tôi không chắc chắn về điều đó.

Có ai cho tôi một tay trong việc này không?

Trả lời

9

Bạn cần một sự kết hợp của một hạn chế allValuesFrom và hạn chế hasValue, ví dụ như thế này:

Rùa cú pháp:

my:ActionCinema a owl:Class ; 
     rdfs:subClassOf my:Cinema, 
         [ a owl:Restriction; 
         owl:onProperty my:hasMovie ; 
         owl:allValuesFrom [ a owl:Restriction ; 
              owl:onProperty my:hasGenre ; 
              owl:hasValue my:Action ] 
         ] . 

Manchester OWL cú pháp:

Class: ActionCinema 
    SubClassOf: Cinema that hasMovie only (hasGenre value Action) 
+0

Tại sao bạn sử dụng kết hợp ('that') thay vì dấu phẩy giữa' Cinema' và 'hasMovie' trong cú pháp Cú pháp của Manchester? – whirlwin

+0

@whirlwin Cả hai đều nói về cơ bản cùng một điều, vì vậy nó là một vấn đề của hương vị, tôi chỉ nghĩ rằng đầu tiên (sử dụng 'đó') là rõ ràng hơn và súc tích. –

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