I'm trying to build a very simlpe ontology to represent an RPG game with protege and owl.
I'm fairly new to ontologies so probably I'm not really getting many things (for example, the open world assumption I suppose).
Here you can download it -> LINK
There are two type of unit classes, enchanters and melee fighters.
Enchanters are split in arcane magic and divine magic.
Spells are divided in 4 schools (evocation, healing, elemental, protection).
Arcane magic enchanters can use only elemental and evocation spells, divine magic enchanters only the other two.
Units can have a single class.
Units, spells and unit classes are individuals.
There are a number of queries that I'd like to execute but do not return anything, for example:
canCast some ArcaneMagicSpell
Expected: List of unit classes that can cast arcane spells.
Returns: The unit classes, but I also want the units (individuals).canCast value SpellFireball
Expected: List of unit classes that can cast fireballs.
Returns: Nothing.canBeCastedBy some ArcaneMagicClass
Expected: All spells castable by an arcane mage.
Returns:: Nothing.canBeCastedBy value UnitClassBlackMage
Expected: All spells that a black mage can cast.
Returns: Nothing.hasClass some (canCast some Spell) Expected: All the unit that can cast a particular spell.
Returns: Nothing.
I'm obviously doing something wrong here but I really don't get it. How can improve my ontology to support those queries (or better formed queries to get the same expected results)?