Ontology(<http://example.com/ontology/AssociationClass>
Import(<http://nomagic.com/ConceptModeler/ConceptModelingSupportLibrary>)
Import(<http://nomagic.com/ConceptModeler/ConceptModelingSupportLibrary/>)

Declaration(Class(:Enrollment))
Declaration(Class(:Organization))
Declaration(Class(:Person))
Declaration(Class(:Student))
Declaration(Class(:University))
Declaration(ObjectProperty(:enrolledBy))
Declaration(ObjectProperty(:enrollment_enrolledBy))
Declaration(ObjectProperty(:enrollment_enrolls))
Declaration(ObjectProperty(:enrolls))
Declaration(ObjectProperty(:isEnrollment))

############################
#   Object Properties
############################

# Object Property: :enrolledBy (enrolled by)

AnnotationAssertion(rdfs:label :enrolledBy "enrolled by"^^xsd:string)
InverseObjectProperties(:enrolls :enrolledBy)
ObjectPropertyDomain(:enrolledBy :Student)
ObjectPropertyRange(:enrolledBy :University)

# Object Property: :enrollment_enrolledBy (:enrollment_enrolledBy)

SubObjectPropertyOf(:enrollment_enrolledBy <http://nomagic.com/ConceptModeler/ConceptModelingSupportLibrary/mediates>)
ObjectPropertyDomain(:enrollment_enrolledBy :Enrollment)
ObjectPropertyRange(:enrollment_enrolledBy :University)

# Object Property: :enrollment_enrolls (:enrollment_enrolls)

SubObjectPropertyOf(:enrollment_enrolls <http://nomagic.com/ConceptModeler/ConceptModelingSupportLibrary/mediates>)
ObjectPropertyDomain(:enrollment_enrolls :Enrollment)
ObjectPropertyRange(:enrollment_enrolls :Student)

# Object Property: :enrolls (:enrolls)

ObjectPropertyDomain(:enrolls :University)
ObjectPropertyRange(:enrolls :Student)

# Object Property: :isEnrollment (is Enrollment)

AnnotationAssertion(rdfs:label :isEnrollment "is Enrollment"^^xsd:string)
SubObjectPropertyOf(:isEnrollment <http://nomagic.com/ConceptModeler/ConceptModelingSupportLibrary/isMediatingThing>)
ObjectPropertyDomain(:isEnrollment :Enrollment)
ObjectPropertyRange(:isEnrollment :Enrollment)



############################
#   Classes
############################

# Class: :Enrollment (:Enrollment)

SubClassOf(:Enrollment <http://nomagic.com/ConceptModeler/ConceptModelingSupportLibrary/MediatingThing>)
SubClassOf(:Enrollment ObjectExactCardinality(1 :enrollment_enrolledBy))
SubClassOf(:Enrollment ObjectExactCardinality(1 :enrollment_enrolls))
SubClassOf(:Enrollment ObjectExactCardinality(1 :isEnrollment))
SubClassOf(:Enrollment ObjectHasSelf(:isEnrollment))

# Class: :Student (:Student)

SubClassOf(:Student :Person)
SubClassOf(:Student ObjectMinCardinality(1 ObjectInverseOf(:enrollment_enrolls)))

# Class: :University (:University)

SubClassOf(:University :Organization)
SubClassOf(:University ObjectExactCardinality(3 ObjectInverseOf(:enrollment_enrolledBy)))


SubObjectPropertyOf(ObjectPropertyChain(ObjectInverseOf(:enrollment_enrolledBy) :isEnrollment :enrollment_enrolls) :enrolls)
SubObjectPropertyOf(ObjectPropertyChain(ObjectInverseOf(:enrollment_enrolls) :isEnrollment :enrollment_enrolledBy) :enrolledBy)
)

## Generated using the No Magic Cameo Concept Modeler (19.0 SP2 Local, build 201902272256) on 2019-02-28 at 03:56:37 GMT