Thomas Kimber
Thomas Kimber

Reputation: 11067

Protégé / OWL make a property refer to another property

I want to create a Container class that contains Node objects. One of the properties I want the Container class to be able to express is SequenceProperty. This object property, I'd like to be able to act as a pointer to some expected property held by each Node associated with the container to be used to determine the order of sequencing of the Nodes in the Container.

I could create some special SequenceOrder property and have the Nodes use this themselves, but I wanted to allow this to be more open so that for some Containers I could reference StartDate as the SequenceProperty and in others, perhaps have a totally different property called ListOrder for example.

So when defining a specific type of Container, I want the modeller to be able to define the method by which the Sequence of Nodes can be determined.

Protégé doesn't seem to allow me to set the range of an ObjectProperty to be something that isn't another Class. But in my use-case, I don't want it to be. Is this something I would have to model outside of Protégé? And if so, would it be to simply add the relationships:

SequenceProperty 
    rdfs:domain Container;
    rdfs:range rdf:Property;

Or is there some rule or specification that forbids this, or is there a preferred way of modelling this kind of "meta" relationship? I had looked into the OWL specification's rdf:Seq and rdfs:ContainerMembershipProperty which offers an alternative way of modelling this, but this seems an even more alien approach to that acceptable or modellable by Protégé. I don't know if that reveals my ignorance of Protégé, or if it's a deliberate design choice on Protégé's part.

Upvotes: 1

Views: 119

Answers (1)

IS4
IS4

Reputation: 13187

This is what is known as punning, or what OWL calls metamodeling. Such a thing is allowed in RDF, RDFS, and OWL (except for DL and Lite), so, as far as I can tell, this might be a limitation of Protégé, since rdf:Property is metamodeled as a class and thus valid as rdfs:range. Perhaps it treats it as a special vocabulary item, more like a special piece of "syntax" outside the universe describable by OWL rather than something to be reasoned about. Nevertheless, it is valid, and there are similar properties in existence, such as foaf:membershipClass.

Note however that while OWL itself may allow you to treat a property as an individual this way, there is nothing that would allow you to cross this gap during reasoning, for example the fact that a specific property is a SequenceProperty of a container will not entail anything about the actual property expansion, i.e. which individuals are linked by the property.

Upvotes: 1

Related Questions