0

I am playing around with TopBraid Composer to learn how to make ontologies using Semantic Web technologies.

What I did:

  • I created an ontology of airplanes, cities, airports, states etc.
  • Now that the ontology is getting a bit complicated, I ran into a problem

Ontology

The graph of my current ontology can be found on my drive.

What I want:

Since I am learning, I thought it would be great to try to have a property hasCity both for the country and the airport. This should result in linking the aiport with the city and also the city with a country only having one property.

What I tried (and failed to understand)

  1. I modified the hasCity property to be in the domain Airport
  2. Another modification I did was that the property hasCity is also a functionalInverseOf hasAirport

In TopBraid you can run inferences to see what happened with your data. Included printscreen

It seems, that by modifying the hasCity property I stated that Object rdfs:type is also Aiport.

Can somebody, please, point me in the right direction?

Here is the whole 333 lines of my RDF, if it can help.

Igor L.
  • 3,159
  • 7
  • 40
  • 61

1 Answers1

0

You have declared hasCity to have domains both Airport and Country. This means that, for every Airport with a hasCity filler, the Airport is also inferred to be a Country. This is unlikely to be what you mean to express.

Also, this assertion is dubious as well - the range of a datatype property is supposed to be a datatype, not a class.

<owl:DatatypeProperty rdf:ID="Destination">
    <rdfs:range rdf:resource="#City"/>
    <rdfs:domain rdf:resource="#Transportation"/>
    <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Destination</rdfs:label>
</owl:DatatypeProperty>
Joshua Taylor
  • 84,998
  • 9
  • 154
  • 353
Ignazio
  • 10,504
  • 1
  • 14
  • 25