How to constraint OWL ObjectProperty values with SKOS Concepts from a specific ConceptScheme?

269 Views Asked by At

I need to express the fact that the allowed values of an ObjectProperty in my ontology are "controlled" by Concepts from a specific SKOS ConceptScheme.

EDIT:

Here is an example:

ex:colours rdf:type skos:ConceptScheme ;
  skos:hasTopConcept ex:teal ;
  skos:hasTopConcept ex:green .

ex:teal rdf:type skos:Concept ;
  skos:inScheme ex:colours ;
  skos:topConceptOf ex:colours .

ex:green rdf:type skos:Concept ;
  skos:inScheme ex:colours ;
  skos:topConceptOf ex:colours .

ex:P_has_colour rdf:type owl:ObjectProperty ;
  rdfs:domain ex:ColoredStuff ;
  rdfs:range ??? .

I want to express the fact that the values of the ex:P_has_colour ObjectProperty must be a Concept from the ex:colours SKOS ConceptScheme. I think I can add a type to each and every SKOS Concept which denotes a colour (something like ex:teal rdf:type ex:ColourConcept ;), and set the range of my property: ex:P_has_colour rdfs:range ex:ColourConcept. Is this the right way to go?

1

There are 1 best solutions below

0
Amleth On

Translated from Manchester syntax to turtle, this seems to be the answer:

ex:colours rdf:type skos:ConceptScheme ;
  skos:hasTopConcept ex:teal ;
  skos:hasTopConcept ex:green .

ex:teal rdf:type skos:Concept ;
  skos:inScheme ex:colours ;
  skos:topConceptOf ex:colours .

ex:green rdf:type skos:Concept ;
  skos:inScheme ex:colours ;
  skos:topConceptOf ex:colours .

ex:P_has_colour rdf:type owl:ObjectProperty ;
  rdfs:domain ex:ColoredStuff ;
  rdfs:range [ owl:intersectionOf ( :ConceptScheme
                                  [ rdf:type owl:Restriction ;
                                    owl:onProperty :inScheme ;
                                    owl:hasValue :colours
                                  ]
                                ) ;
             rdf:type owl:Class
           ] .