OWL restrictions - defining classes that only contains properties with a specific property value
Asked Answered
S

1

9

I'm currently playing a bit with the OWL and especially with restrictions. I'm trying to create a query that does the following:

Suppose that I have a class 'Cinema' that has a property 'movies' (that contains objects of type 'Movie'). The class 'Movie' contains a property named 'genre'. Now I want to create a class ActionCinemas that only has movies with the genre 'action'.

I'm really not sure how to do this. I was thinking about doing something with intersections or the cardinality but I'm not sure of that.

Could anyone give me a hand in this?

Socinus answered 28/10, 2012 at 16:45 Comment(0)
S
13

You need a combination of an allValuesFrom restriction and a hasValue restriction, e.g like this:

Turtle syntax:

 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 syntax:

Class: ActionCinema
   SubClassOf: Cinema that hasMovie only ( hasGenre value Action )
Stranglehold answered 28/10, 2012 at 21:45 Comment(2)
Why do you use conjunction (that) instead a comma between Cinema and hasMovie in Manchester OWL syntax?Berrios
@Berrios Both say the basically the same thing, so it's a matter of taste, I just think the first (using 'that') is more clear and concise.Stranglehold

© 2022 - 2024 — McMap. All rights reserved.