Search code examples
owl

owl: how to express AllFemaleGame


AllFemaleGame is a class that corresponds to the class of every game whose players and observers are all women.

Classes:

Declaration(Class(ns:Game))

Declaration(Class(ns:Person))

Declaration(Class(ns:Female))

Declaration(Class(ns:Observer))

SubClasses:

SubClassOf(ns:Female ns:Person)

Object Properties:

ObjectProperty(ns:isPlayerOf)

ObjectPropertyDomain(ns:isPlayerOf ns:Person)

ObjectPropertyRange(ns:isPlayerOf ns:Game)

EquivalentClasses(m:AllFemaleGame ObjectIntersectionOf(m:Game ObjectAllValuesFrom(m:isPlayerOf m:Female) ObjectAllValueFrom(m:isObserverOf m:Female)))

Am I doing it correctly?


Solution

  • The class expression ObjectAllValuesFrom(m:isPlayerOf m:Female) describes the things x such that if x m:isPlayerOf y, then y is m:Female. Moreover, the domain of m:isPlayerOf is m:Person, and the range is m:Game, so if such a y existed, then x would be a person, and y a game. It seems you have it in the wrong direction. Try this:

    EquivalentClasses(
        m:AllFemaleGame
        ObjectIntersectionOf(
            m:Game
            ObjectAllValuesFrom(ObjectInverseOf(m:isPlayerOf) m:Female)
            ObjectAllValueFrom(ObjectInverseOf(m:isObserverOf) m:Female)
        )
    )
    

    Note that this class also contains games that do not have players or observers.