@base <http://www.purl.org/drammar> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <#> .
@prefix cc: <http://creativecommons.org/ns#> .
@prefix olo: <http://purl.org/ontology/olo/core#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix voaf: <http://purl.org/vocommons/voaf#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .

cc:license
    a owl:AnnotationProperty .

dc:contributor
    a owl:AnnotationProperty .

dc:creator
    a owl:AnnotationProperty .

dc:date
    a owl:AnnotationProperty .

dc:description
    a owl:AnnotationProperty .

dc:issued
    a owl:AnnotationProperty .

dc:modified
    a owl:AnnotationProperty .

dc:publisher
    a owl:AnnotationProperty .

dc:rights
    a owl:AnnotationProperty .

dc:title
    a owl:AnnotationProperty .

<http://purl.org/ontology/olo/core#olo:OrderedList>
    a owl:Class .

<http://purl.org/ontology/olo/core#olo:Slot>
    a owl:Class .

<http://purl.org/ontology/olo/core#olo:item>
    a owl:ObjectProperty .

<http://purl.org/ontology/olo/core#olo:next>
    a owl:ObjectProperty .

<http://purl.org/ontology/olo/core#olo:previous>
    a owl:ObjectProperty .

<http://purl.org/ontology/olo/core#olo:slot>
    a owl:ObjectProperty .

vann:preferredNamespacePrefix
    a owl:AnnotationProperty .

vann:preferredNamespaceUri
    a owl:AnnotationProperty .

voaf:Vocabulary
    a owl:Class .

<http://www.loa-cnr.it/ontologies/DOLCE-Lite.owl#endurant>
    a owl:Class .

<http://www.loa-cnr.it/ontologies/DOLCE-Lite.owl#perdurant>
    a owl:Class .

<http://www.loa-cnr.it/ontologies/DOLCE-Lite.owl#process>
    a owl:Class .

<http://www.loa-cnr.it/ontologies/DOLCE-Lite.owl#state>
    a owl:Class .

<>
    cc:license "Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)" ;
    dc:contributor "Carmi Terzulli", "Mario Cataldi" ;
    dc:creator "Antonio Pizzo", "Rossana Damiano", "Vincenzo Lombardo" ;
    dc:date "2018-03-01" ;
    dc:description """Designed with the goals to describe and encode the core dramatic qualities and to serve as a knowledge base underlying a number of applications, Drammar is a comprehensive ontology of drama, realized through a collaboration of computer scientists and drama scholars. It makes the knowledge about drama available as a vocabulary for the linked interchange of drama encodings and readily usable by automatic reasoners.
By avoinding references to style and artistic qualities Drammar aims at representing the elements shared by different, cross-media manifestations of drama, the so–called intangible elements of drama as an intangible cultural heritage form.""" ;
    dc:issued "2018-06-11" ;
    dc:modified "2018-06-11" ;
    dc:publisher "Centro Interdipartimentale di Ricerca per la Multimedialità e l'Audiovisivo - Interdeparmental Center for Research on Multimedia and Audivideo  (www.cirma.unito.it)" ;
    dc:rights "Ontology Drammar is available at the url http://purl.org/drammar, under the license Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0). The canonical citation for Drammar is \"Vincenzo Lombardo, Rossana Damiano, Antonio Pizzo. Drammar: a comprehensive ontology of drama (2018). http://purl.org/drammar\"" ;
    dc:title "Drammar: a comprehensive ontology of drama" ;
    vann:preferredNamespacePrefix "drammar" ;
    vann:preferredNamespaceUri <#> ;
    a voaf:Vocabulary, owl:NamedIndividual, owl:Ontology ;
    rdfs:label "Drammar"@en ;
    rdfs:seeAlso "https://www.di.unito.it/wikidrammar" ;
    owl:versionIRI <drammar/0.9> ;
    owl:versionInfo 0.9 .

:ADTComponent
    a owl:Class ;
    rdfs:comment """ADTComponent This class includes the entities which provide the components of
            abstract data types. Currently, only the list data type includes a component, the
            OrderedListElement. The mapping on the AbstractDataType class is given by the
            hasADTComponent object property, which has the AbstractDataType class as its domain, and
            the ADTComponent class as its range.""" ;
    rdfs:label "ADTComponent" ;
    rdfs:subClassOf :DataStructure .

:AbstractDataType
    a owl:Class ;
    rdfs:comment """AbstractDataType The data types needed for describing drama are sets, lists
            and trees (more precisely, tree nodes).""" ;
    rdfs:label "AbstractDataType" ;
    rdfs:subClassOf :DataStructure .

:AbstractPlan
    a owl:Class ;
    rdfs:comment """Abstract Plan An abstract plan is a recursive plan, i.e., a plan whose
            elements are plans. Formally, an AbstractPlan is a list (List class) containing
            (containsOLE) elements (OrderedListElements) that have plans as their data (hasData).
            The plans contained in an abstract plan can be either abstract plans or directly
            executable plans.""" ;
    rdfs:label "AbstractPlan" ;
    rdfs:subClassOf :Plan ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:Plan
            [
                a owl:Restriction ;
                owl:onProperty :achieves ;
                owl:someValuesFrom :Goal
            ]
            [
                a owl:Restriction ;
                owl:onProperty :containsOLE ;
                owl:someValuesFrom [
                    a owl:Class ;
                    owl:intersectionOf (:OrderedListElement
                        [
                            a owl:Restriction ;
                            owl:onProperty :hasData ;
                            owl:someValuesFrom :Plan
                        ]
                    )
                ]
            ]
            [
                a owl:Restriction ;
                owl:onProperty :isMotivationFor ;
                owl:someValuesFrom :Timeline
            ]
        )
    ] .

:Action
    a owl:Class ;
    rdfs:comment """An Action is an intentional Process, which is a type of Process. Formally, an
            action is an Process which is constrained to be contained (isMemberOf) some Unit. In
            Drammar, an Action can be part of a plan of an agent (formally, a plan ia a list of
            actions), or can be included in a Unit (ordered into some timeline). Only direct
            executable plans (DirectlyExecutablePlan class) contain actions The Action class is
            formally disjoint with the UnintentionalEventiveProcess class. We have introduced an
            explicit boolean datatype property isIntentional, because it could be that the
            annotators will use actions directly in the units (i.e. without explicitly introducing a
            plan for it).""" ;
    rdfs:label "Action" ;
    rdfs:subClassOf :Process ;
    owl:disjointWith :UnintentionalProcess ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:Process
            [
                a owl:Restriction ;
                owl:onProperty :isDataOf ;
                owl:someValuesFrom [
                    a owl:Class ;
                    owl:intersectionOf (:SetMember
                        [
                            a owl:Restriction ;
                            owl:onProperty :isMemberOf ;
                            owl:someValuesFrom :Unit
                        ]
                    )
                ]
            ]
            [
                a owl:Restriction ;
                owl:hasValue true ;
                owl:onProperty :isIntentional
            ]
        )
    ] .

:Agent
    a owl:Class ;
    rdfs:comment """Agent. Derived from BDI model, a mentalist model of agent which sees the agent
            as a rational entity who form intentions, or plans, (based on her beliefs) to achieve
            her desires (or goals). See Bratman et al. 1988 and Cohen and Levesque 1995. Agents are
            those entities in drama, that potentially - have goals (object property hasGoal); -
            intend plans to achieve goals (object property intends); - participate in actions with
            some role (object property isFillerOf); In addition, agents have emotional states (as a
            result of targeted emotions appraisal processes) and have moral values (hasValue): -
            feel emotions as a result of a cognitive appraisal process (specific object properties
            link each the appraisal of each emotion type to the agent); - have values (object
            property hasValue); The requirement, in drama, is that an agent has a plan, since the
            fact of having a goal would not be sufficient to ensure that the goal is translated into
            some concrete, perceivable behavior in drama. Having a plan, instead, implies that the
            agent also has goal. Notice that some Agent (e.g. Polonius) is involved in an action
            without being intentional (e.g., being the topic of a conversation), it remains
            classified as an Agent in Drammar, though it fills a different role in the frame (e.g.,
            Topic of Conversation). References: Bratman, M. E., Israel, D. J., & Pollack, M. E.
            (1988). Plans and resource‐bounded practical reasoning. Computational intelligence,
            4(3), 349-355. Cohen, P. R., & Levesque, H. J. (1995, June). Communicative Actions
            for Artificial Agents. In ICMAS (Vol. 95, pp. 65-72).""" ;
    rdfs:label "Agent" ;
    rdfs:subClassOf :DramaEndurant ;
    owl:disjointWith :Object ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:DramaEndurant
            [
                a owl:Restriction ;
                owl:onProperty :intends ;
                owl:someValuesFrom :Plan
            ]
        )
    ] .

:Belief
    a owl:Class ;
    rdfs:comment """A belief is what an agent believes (which may be true or not in the world) In
            the BDI model, beliefs form the agent's knowledge about the world that the agent
            relies on for devising plans to achieve her goals. In Drammar there is no distinction
            between knowing and believing, because reasoning concerns the agent motivations for
            acting, rather than the relationship between single agent knowledge and shared
            knowledge. A belief is formally defined as the type of MentalState described by a
            BeliefSchema. In the annotation, it is in the scope a ConsistenStateSet, that is
            precondition or effect of a Plan. SWRL rules for mapping project a belief onto some
            ConsistentStateSet which precedes or follows a timeline.""" ;
    rdfs:label "Belief" ;
    rdfs:subClassOf :MentalState ;
    owl:disjointWith :Goal ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:MentalState
            [
                a owl:Restriction ;
                owl:onProperty :isKnownBy ;
                owl:someValuesFrom :Agent
            ]
            [
                a owl:Restriction ;
                owl:onClass :BeliefSchema ;
                owl:onProperty :isDescribedBy ;
                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
            ]
            [
                a owl:Restriction ;
                owl:onClass :Agent ;
                owl:onProperty :isKnownBy ;
                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
            ]
        )
    ] .

:BeliefSchema
    a owl:Class ;
    rdfs:comment """The BeliefSchema class describes a Belief (a type of MentalState). This class
            is formally defined as the subclass of MentalStateSchema having as its quale_schemaType
            value the string \"belief\". A BeliefSchema has as its propositional content
            (via the propositionalContent object property) a factual process (FactualProcess class)
            or state (FactualState class).""" ;
    rdfs:label "BeliefSchema" ;
    rdfs:subClassOf :MentalStateSchema ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:MentalStateSchema
            [
                a owl:Restriction ;
                owl:hasValue "belief" ;
                owl:onProperty :Schema_type
            ]
        )
    ] .

:ConflictSet
    a owl:Class ;
    rdfs:comment """This class represents the relation of conflict distributed over a set of
            plans. It represents the orchestration of conflicts in drama. Although conflict may
            occur, in drama, between (or within) entities of different types (characters may be in
            conflict with each other, ir the same character may experience conflicting emotions),
            here we reduce the notion of conflict to this single class.""" ;
    rdfs:label "ConflictSet" ;
    rdfs:subClassOf :Set ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:Set
            [
                a owl:Restriction ;
                owl:onProperty :hasMember ;
                owl:someValuesFrom [
                    a owl:Class ;
                    owl:intersectionOf (:SetMember
                        [
                            a owl:Restriction ;
                            owl:onProperty :hasData ;
                            owl:someValuesFrom :Plan
                        ]
                    )
                ]
            ]
        )
    ] .

:ConsistentStateSet
    a owl:Class ;
    rdfs:comment """A ConsistentStateSet is a set of states held consistent by definition. It can
            be a set of states bordering a timeline (i.e., the state of affairs holding before and
            after the timeline) or it can be the state of affairs that holds before and after a plan
            (in this case, it represents the plan precondintions and effects). The
            isTimelinePreconditionOf (isTimelineEffectOf) property connects a ConsistentStateSet
            with a Timeline. The isPlanPreconditionOf (isPlanEffectOf) property connects a
            ConsistentStateSet with a Plan. A ConsistentStateSet has one or more states as its
            members (hasMember property)""" ;
    rdfs:label "ConsistentStateSet" ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:Set
            [
                a owl:Class ;
                owl:unionOf ([
                        a owl:Restriction ;
                        owl:onClass :Plan ;
                        owl:onProperty :isPlanEffectOf ;
                        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
                    ]
                    [
                        a owl:Restriction ;
                        owl:onClass :Plan ;
                        owl:onProperty :isPlanPreconditionOf ;
                        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
                    ]
                    [
                        a owl:Restriction ;
                        owl:onClass :Timeline ;
                        owl:onProperty :isTimelineEffectOf ;
                        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
                    ]
                    [
                        a owl:Restriction ;
                        owl:onClass :Timeline ;
                        owl:onProperty :isTimelinePreconditionOf ;
                        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
                    ]
                )
            ]
            [
                a owl:Restriction ;
                owl:onProperty :hasMember ;
                owl:someValuesFrom [
                    a owl:Class ;
                    owl:intersectionOf (:SetMember
                        [
                            a owl:Restriction ;
                            owl:onProperty :hasData ;
                            owl:someValuesFrom :State
                        ]
                    )
                ]
            ]
        )
    ] .

:DataStructure
    a owl:Class ;
    rdfs:comment """DataStructure This class encodes the data structures that provide structural
            organization to the other entities. It includes abstract data types (namely sets, lists
            and trees) and data type components.""" ;
    rdfs:label "DataStructure" .

:DescriptionTemplate
    a owl:Class ;
    rdfs:comment """DescriptionTemplate This class contains a well known role-based pattern for
            representing the linguistic schemata that describe the elements of drama, such as the
            entities and dynamics. Drammar imports this pattern from other ontologies, namely DOLCE.
            The class DescriptionTemplate contains two classes: - Role - SituationSchema The class
            SituationSchema provides the specific pattern for the description of incidents and
            states, generically termed here as \"situations\". A situation can be either a
            process or a state, usually described by a linguistic expression consisting of a verb
            (\"giving\") for processes, such as in the expression \"Ophelia gives the
            gift back to Hamlet\", or a by a preposition (\"behind\") for states, such
            as in the expression \"Polonius is behind the tapestry\"). The Role class
            provides the pattern for the roles that play a part in the state or process (in the
            above example, the role of the \"donor\" filled by Ophelia, the role of the
            \"recipient\" filled by Hamlet, etc.). The linguistic counterpart of the
            role-based structure of the description templates is provided by a frame-like accounts
            of the linguistic descriptions of events, such as Framenet or Verbnet
            (https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml). Based on a lexical
            semantics perspective, these initiatives are aimed at grouping verbs (including
            statives) into \"frames of action\", i.e., linguistic structures representing a
            group of semantically similar verbs with the complements that accompany them. Following
            a design choice that characterizes the Drammar ontology, all references to the external
            (linguistic or commonsense) knowledge are mediated by the ExternalReference class, a top
            level class whose function is specifically to act as a bridge to the external knowledge
            (see the documentation of the class). So, neither the Roles nor the Situation Schemata
            directly refer to the external linguistic knowledge they assume: rather, the hasExtRef
            property links each component of the pattern onto its corresponding class within the
            ExternalReference class: the SituationSchema class is related to the ExternalRefSchema,
            the Role class is related to the ExternalRefRole class. Each ExternalReference subclass,
            then, bridges each pattern component onto the corresponding component within the
            external knowledge source via a specific data type property.""" ;
    rdfs:label "DescriptionTemplate" ;
    owl:disjointWith :DramaEntity .

:DirectlyExecutablePlan
    a owl:Class ;
    rdfs:comment """DirectlyExecutablePlans Directly executable plans are plans that contain only
            actions. Formally, a directly executale plan is a list (List class) that contains
            (containsOLE) only elements (OrderedListElement) that have actions as their data
            (hasData).""" ;
    rdfs:label "DirectlyExecutablePlan" ;
    rdfs:subClassOf :Plan ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:Plan
            [
                a owl:Restriction ;
                owl:onProperty :achieves ;
                owl:someValuesFrom :Goal
            ]
            [
                a owl:Restriction ;
                owl:onProperty :containsOLE ;
                owl:someValuesFrom [
                    a owl:Class ;
                    owl:intersectionOf (:OrderedListElement
                        [
                            a owl:Restriction ;
                            owl:onProperty :hasData ;
                            owl:someValuesFrom :Action
                        ]
                    )
                ]
            ]
            [
                a owl:Restriction ;
                owl:onProperty :isMotivationFor ;
                owl:someValuesFrom :Timeline
            ]
        )
    ] .

:DramaEndurant
    a owl:Class ;
    rdfs:comment """DramaEndurant is an entity of drama that can be described as an endurant
            following Gangemi et al. 2002. In Gangemi et al. 2002 \"Endurants are wholly present
            (i.e., all their proper parts are present) at any time they are present\",
            differently from perdurants, which are only partially present at any time they are
            present. Endurants (and Perdurants, in some cases) play a role in processes and states:
            an Endurant is connected to a role (Role class) in the description of a given process or
            state by the hasRole object property. The class of drama endurants encompasses more
            specific drama entities such as Agent and Object. This bipartite distinction is derived
            from the drama literature, where - Agents that intentionally perform actions; - Objects
            are involved in the actions in an unintentional way. For instance, in Hamlet, the King
            of England is a drama endurant (but non an agent) because it is the filler of a role in
            Claudius' actions (sending ... ) but does not intend any plan (a feature would
            locate it in the Agent class). The difference beteween the King of England and a coffee
            machine is entrusted to common sense knowlegde (e.g., the external lexical knowledge
            stating the sementic type of these two entities). Reference: Gangemi, A., Guarino, N.,
            Masolo, C., Oltramari, A., & Schneider, L. (2002). Sweetening ontologies with DOLCE.
            In Knowledge engineering and knowledge management: Ontologies and the semantic Web (pp.
            166-181). Springer Berlin Heidelberg.""" ;
    rdfs:label "DramaEndurant" ;
    rdfs:subClassOf <http://www.loa-cnr.it/ontologies/DOLCE-Lite.owl#endurant>, :DramaEntity .

:DramaEntity
    a owl:Class ;
    rdfs:comment """DramaEntity Class of all the dramatic entities, that is, of all the entities
            that are peculiar to drama. Its sisters are classes that are not peculiar to drama, but
            concern templates, (DescriptionTemplate), references to external lexical and semantic
            systems (ExternalReference) and data structures (DataStructure) from computer
            science.""" ;
    rdfs:label "DramaEntity" .

:DramaPerdurant
    a owl:Class ;
    rdfs:comment """The DramaPerdurant class contains the entities of drama that can described as
            perdurants in DOLCE (Gangemi et al. 2002): \"Perdurants [...] just extend in time by
            accumulating different temporal parts, so that, at any time they are present, they are
            only partially present, in the sense that some of their proper temporal parts (e.g.,
            their previous or future phases) may be not present.\" In other words, perdurants,
            namaly processes, are not entirely present at any time they are present, differently
            from endurants. The DramaEdurant is the class of elements of Drama that describe the
            story dynamics, i.e. Processes and States. In the context of Drammar, the individuals of
            this class describe the story advancement in terms of incidents and states holding
            between incidents. Each has a specific relation to the segmentation of drama: processes
            are grouped in units, states precedes and follows timelines (which contain units).
            Notice that processes and states are not distinct in Framenet, the knowledge source we
            refer to for describing perdurants outside of Drammar. Reference: Gangemi, A., Guarino,
            N., Masolo, C., Oltramari, A., & Schneider, L. (2002). Sweetening ontologies with
            DOLCE. In Knowledge engineering and knowledge management: Ontologies and the semantic
            Web (pp. 166-181). Springer Berlin Heidelberg.""" ;
    rdfs:label "DramaPerdurant" ;
    rdfs:subClassOf <http://www.loa-cnr.it/ontologies/DOLCE-Lite.owl#perdurant>, :DramaEntity, [
        a owl:Restriction ;
        owl:onClass :SituationSchema ;
        owl:onProperty :isDescribedBy ;
        owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
    ] .

:DrammarScene
    a owl:Class ;
    rdfs:comment """DrammarScene A DrammarScene is a type of scene that hinges on characters'
            conflicting plans. In Drammar, the conflict over plans is represented by a class, the
            ConflictSet, which contains the set of plans in conflict. The hingesOn object property
            connects the DrammarScene with the Conflict Set.""" ;
    rdfs:label "DrammarScene" ;
    rdfs:subClassOf :Scene ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:Scene
            [
                a owl:Restriction ;
                owl:onProperty :hingesOn ;
                owl:someValuesFrom :ConflictSet
            ]
        )
    ] .

:Emotion
    a owl:Class ;
    rdfs:comment """Emotion is the class of emotions felt by an agent in a scene. Formally, it is
            described as the subclass of MentalState described by an EmotionSchema. The emotions
            refer to OCC emotion ontology (22 emotions types). Emotion type is an external resource
            (ExternalRefEmotionType). An Emotion has an appraising agent (appraisingAgent object
            property) and, when appraised, is an emotion of (isEmotionOf object property) that
            agent. An emotion also has a target (the agent or object that is the target of the
            emotion): a specifi object property connects each emotion type with its target (e.g.,
            shame_target, love_target, etc.).""" ;
    rdfs:label "Emotion" ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:MentalState
            [
                a owl:Restriction ;
                owl:onClass :EmotionSchema ;
                owl:onProperty :isDescribedBy ;
                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
            ]
        )
    ] .

:EmotionSchema
    a owl:Class ;
    rdfs:comment """An EmotionSchema represents the description of an EmotionState, bridged onto
            some external linguistic or semantic system through the mediation of the
            ExternalRefEmotionType class. The EmotionSchema is a MentalStateSchema for describing an
            Emotion. Formally, it is constrained to the value \"emotion\" for the
            quale_schemaType data property. The hasExtRef property links the EmotionSchema to the
            ExternalRefEmotionType class which in turn links the description of the Emotion to a
            reference theory of emotions.""" ;
    rdfs:label "EmotionSchema" ;
    rdfs:subClassOf :MentalStateSchema ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:MentalStateSchema
            [
                a owl:Restriction ;
                owl:hasValue "emotion" ;
                owl:onProperty :Schema_type
            ]
        )
    ] .

:ExternalRefEmotionType
    a owl:Class ;
    rdfs:comment """This class includes individuals for all the 22 emotion types referred by OCC
            theory. The individuals are bridge individuals to some external formal OCC-based
            knowledge source, which does not exist yet but is assumed here. These individuals could
            also be a bridge to some commonsense ontology, such as YagoSumo for Values, but it would
            be different from the adoption of the OCC theory, as committed in
            Drammar.""" ;
    rdfs:label "ExternalRefEmotionType" ;
    rdfs:subClassOf :ExternalReference .

:ExternalRefEntity
    a owl:Class ;
    rdfs:comment """The ExternalRefEntity class has the function of bridging the description of a
            DramaEntity (not an entity in general) to some external linguistic or semantic resource
            such a dictionary or an ontology. An entity can be linked to its ExternalReference by
            the hasExtRef object property, which has the ExternalReference as its range. The
            ExternalRefEntity iherits the \"quale\" data property from its direct ancestor,
            ExternalReference class.""" ;
    rdfs:label "ExternalRefEntity" ;
    rdfs:subClassOf :ExternalReference .

:ExternalRefRole
    a owl:Class ;
    rdfs:comment """The ExternalRefRole class has the function of bridging the description of a
            Role (not an entity in general) to a description of the role in some external linguistic
            that represents the argument structure of an event. An Role can be linked to its
            ExternalRefRole by the hasExtRef object property, which has the ExternalRefRole as its
            range. The ExternalRefRole class has three data properties which connect it to the
            reference system: - role_framenetRoleID: connects the Role to the id of the
            corresponding role in FrameNet - role_verbnetRoleType: connects the Role to the name of
            the corresponding role in VerdNet (a string) - role_ID_resource""" ;
    rdfs:label "ExternalRefRole" ;
    rdfs:subClassOf :ExternalReference .

:ExternalRefSchema
    a owl:Class ;
    rdfs:comment """The ExternalRefSchema class has the function of bridging the description of a
            SituationSchema to some external lexical-semantic resource representing apt to represent
            the role structure of a process or state. An SituationSchema (or, better, a subclass of
            it) can be linked to its ExternalRefSchema by the hasExtRef object property, which has
            the ExternalReference as its range. The quale_frame_URI data property connects the
            SituationSchema with the FrameNet frame which correponds to it, following the paradigm
            of Linked Data.""" ;
    rdfs:label "ExternalRefSchema" ;
    rdfs:subClassOf :ExternalReference .

:ExternalReference
    a owl:Class ;
    rdfs:comment """ExternalReference This is a class that provides the service of accumulating
            all the \"quale\" datatype properties that refer to external linguistic or
            commonsense knowledge sources. Through this class, the description of the drama entities
            is bridged onto some external lexicon or ontology. Its subclasses are useful in
            grouping, but do not represent specific issues in support.""" ;
    rdfs:label "ExternalReference" .

:FrameNetSchema
    a owl:Class ;
    rdfs:comment """A FrameNetSchema corresponds to a process or state describable by a frame in
            Framenet (https://framenet2.icsi.berkeley.edu/fnReports/data/frameIndex.xml). The
            reference of the schema to the external linguistic reality (the FrameNet frame) is
            mediated through an apposite class subsumed by the ExternalReference class, the
            ExternalRefSchema class: the SituationSchema class (and, by inheritance, also the
            FrameNetSchema class) is linked to the ExternalRefSchema class via the hasExtRef
            property. The quale_frame_URI, then, bridges the ExternalRefSchema class onto the URI of
            the appropriate frame.""" ;
    rdfs:label "FrameNetSchema" ;
    rdfs:subClassOf :SituationSchema ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:SituationSchema
            [
                a owl:Restriction ;
                owl:hasValue "framenet" ;
                owl:onProperty :Schema_type
            ]
        )
    ] .

:Goal
    a owl:Class ;
    rdfs:comment """The Goal class represents the objectives of an agent. In the BDI model, the
            agent is driven by her desires, or goal, and forms plans to achieve them. In Drammar, a
            goal is achieved by a plan; the achives object property connects a plan with the goal it
            achieves (a single goal, since the achieves property is functional). An agent intends
            (intends object property) a goal. Formally, the Goal class is a defined as a subclass of
            the MentalState class which is constrained: - to be the goal of some agent - to be part
            of some ConsistentStateState - to be described by a GoalSchema Goal has a propositional
            content that is - a process in the case of perform goal PG (Hamlet wants to ask Ophelia
            ...) - a state in the case of - achievement (Hamlet wants Ophelia goes to a nunnery) -
            maintenance (Hamlet wants Claudius (keeps) believing Hamlet is mad) - query (Hamlet
            wants to know whether Ophelia is honest) In these various cases the propositional
            content is different: - Perform Goal - PC: Action - AG - PC: State, embedded in one
            Belief, with status false or Process, embedded in Belief, with accomplishment false - MG
            - PC: State or Process, embedded in Belief, with status/accomplishment true - Query Goal
            - PC: depends on query; e.g.: - Y/N question: the boolean status of a state (currently
            implemented as a State with status TRUE) - Wh question: the filler of a role in some
            state or process (currently not implemented) These are guidelines for writing the plans
            correctly.""" ;
    rdfs:label "Goal" ;
    rdfs:subClassOf :MentalState ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:MentalState
            [
                a owl:Restriction ;
                owl:onProperty :isGoalOf ;
                owl:someValuesFrom :Agent
            ]
            [
                a owl:Restriction ;
                owl:onClass :GoalSchema ;
                owl:onProperty :isDescribedBy ;
                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
            ]
            [
                a owl:Restriction ;
                owl:onClass :Agent ;
                owl:onProperty :isGoalOf ;
                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
            ]
        )
    ] .

:GoalSchema
    a owl:Class ;
    rdfs:comment """The GoalSchema class describes a Goal (a type of MentalState). This class is
            formally defined as the subclass of MentalStateSchema having as its quale_schemaType
            value the string \"goal\". A GoalSchema has as its propositional content (via
            the propositionalContent object property) a factual process (FactualProcess class) or
            state (FactualState class).""" ;
    rdfs:label "GoalSchema" ;
    rdfs:subClassOf :MentalStateSchema ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:MentalStateSchema
            [
                a owl:Restriction ;
                owl:hasValue "goal" ;
                owl:onProperty :Schema_type
            ]
        )
    ] .

:Goal_type
    a owl:DatatypeProperty ;
    rdfs:comment """Type of the goal: one of the strings \"Achievement\"
            \"Maintainance\" \"Perform\" \"Query\"""" ;
    rdfs:domain :Goal ;
    rdfs:label "Goal_type" ;
    rdfs:range [
        a rdfs:Datatype ;
        owl:oneOf ("Achievement"
            "Maintenance"
            "Perform"
            "Query"
        )
    ] .

:List
    a owl:Class ;
    rdfs:comment """List List is inspired by a well known ontology
            (http://smiy.sourceforge.net/olo/spec/orderedlistontology.html#ordered_list); however,
            its implementation in Drammar makes some simplifications (e.g., indexes are not
            included) and renames some entities according to the terminology of the drama domain.
            List in drama: - Plan: sequence of plans (abstract plans) or single actions (directly
            executable plans); - Timeline: sequence of units.""" ;
    rdfs:label "List" ;
    rdfs:subClassOf <http://purl.org/ontology/olo/core#olo:OrderedList>, :AbstractDataType, [
        a owl:Restriction ;
        owl:allValuesFrom :OrderedListElement ;
        owl:onProperty :containsFirstOLE
    ], [
        a owl:Restriction ;
        owl:allValuesFrom :OrderedListElement ;
        owl:onProperty :containsLastOLE
    ], [
        a owl:Restriction ;
        owl:allValuesFrom :OrderedListElement ;
        owl:onProperty :containsOLE
    ] .

:MentalState
    a owl:Class ;
    rdfs:comment """MentalStates are EventiveStates that are attributed to the mind of an agent.
            There are four types of mental states: 1. Emotion 2. Belief 3. Goal 4. Value Belief and
            Goal are traditionally described as having a propositional content because they both
            concern some attitude of the agent toward a proposition; in Drammar, we don't
            enforce this distinction because the reference theoriesd we adopt for emotion and values
            also enforce some time of propositional content. The only difference is that only the
            schema types for beliefs and goals (BeliefSchema and GoalSchema) have a propositional
            content attached to it (through the propositionalContent object property). A MentalState
            is defined as an EventiveState that is described by a MentalStateSchema. The latter are
            to be specified as EmotionSchema, BeliefSchema, GoalSchema, ValueSchema,
            depending on the MentalState type: so, the MentalStateSchema type works as a selector
            for the right trait of the mental schema.""" ;
    rdfs:label "MentalState" ;
    rdfs:subClassOf :State ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:State
            [
                a owl:Restriction ;
                owl:onClass :MentalStateSchema ;
                owl:onProperty :isDescribedBy ;
                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
            ]
        )
    ] .

:MentalStateSchema
    a owl:Class ;
    rdfs:comment """The MentalStateSchema class collects all the schemata that license the
            behavior of the mental states. Following the guidelines for describing mental states in
            Ferrario, R., & Oltramari, A. (2005, March). Towards a computational ontology of
            mind. In Aerospace Conference, 2005 IEEE (pp. 1-9). IEEE, propositional attitudes such
            as beliefs and goals are considered mental states in Drammar. The MentalState class
            includes: - BeliefSchema - EmotionSchema - GoalSchema - ValueSchema The schemata
            match the mental states included in Drammar. Mental states are grouped in the
            DramaPerdurant class as eventive mental states (MentalState class) or as factual mental
            states (F_MentalState class).""" ;
    rdfs:label "MentalStateSchema" ;
    rdfs:subClassOf :SituationSchema ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:SituationSchema
            [
                a owl:Restriction ;
                owl:onProperty :isMentalStateOf ;
                owl:someValuesFrom :Agent
            ]
        )
    ] .

:Object
    a owl:Class ;
    rdfs:comment """Object Class of entities (endurant) that participates into Perdurants, but
            without having intentions. An object is formally defined as a subclass of DramaEndurant
            whose member do not have plans. Objects can be filler of roles in the description of
            processes and states (for example, a book can be \"theme\" in a giving action
            (i.e. the entity that changes ownership as a consequence of a giving act). This class is
            formally disjoint from Agents (Disjoint property).""" ;
    rdfs:label "Object" ;
    rdfs:subClassOf :DramaEndurant ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:DramaEndurant
            [
                a owl:Class ;
                owl:complementOf [
                    a owl:Restriction ;
                    owl:onProperty :intends ;
                    owl:someValuesFrom :Plan
                ]
            ]
        )
    ] .

:OrderedListElement
    a owl:Class ;
    rdfs:comment """Class of the elements of the ordered lists (lists are plans and timelines).
            Sometimes referred to as OLE. The hasOrderedListElement object property has the List
            class as its domain and the OrderedListElement as its range. Notice that this class
            works as a placeholder that represents the single item in a list (it is not the list
            content itself): the property hasData links the OrderedListElement with the actual data,
            i.e. the content of the item. For example, the OrderedListElements Plans have other
            plans or actions as their data.""" ;
    rdfs:label "OrderedListElement" ;
    rdfs:subClassOf <http://purl.org/ontology/olo/core#olo:Slot>, :ADTComponent .

:Plan
    a owl:Class ;
    rdfs:comment """Plan A plan is a sequence of actions devised by an agent to achieve some Goal.
            In the BDI model, the agent's 'intention' to execute a plan is the bridge
            between goals and practical actions. In Drammar, a plan is intended by (intendedBy
            object property) an Agent to achieve (achieve property) some Goal. As a consequence, the
            plan motivates (isMotivationFor object property) a timeline (i.e. a given extent of the
            drama text). These are the necessary and sufficient conditions of class. Following the
            paradigm of hierarchical planning, plans are recursive. So plans can contains actions or
            other, simpler plans. Formally, a Plan is a list (namely, it is a subclass of the List
            class) whose elements are simpler plans (for abstract plans) or actions (for directly
            executable plans). A plan is related to its elements by the containsOLE
            property.""" ;
    rdfs:label "Plan" ;
    rdfs:subClassOf :List ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:List
            [
                a owl:Restriction ;
                owl:onProperty :isIntendedBy ;
                owl:someValuesFrom :Agent
            ]
        )
    ] .

:Process
    a owl:Class ;
    rdfs:comment """Processes represents the dynamic class of the perdurants: they are gathered
            into units, which are contained into ordered timelines bordered by states. Process is
            the class that bridges to the concept of Process in upper ontologies, externally to
            Drammar (like DOLCE, where States and Processes are types of Statives: here, we include
            also the event types called accomplishments and achievements in DOLCE). Consider that
            such resources are not of linguistic type. The DescriptionTemplate class (or, better,
            its subclass FrameNetSchema), in fact, drives the behavior of the process inside a Plan
            or a Unit, linking it (via the ExternalReference Class) to: 1. a Wordnet sense 2. a
            Frame (from Framenet or Verbnet) 3. a set of Roles, played by roles encompassed in the
            frame All these links are bridged by the ExternalReference Class, which has
            \"quale\" properties that link the reference to specific resources. In the
            external ontology, a process may be logically defined through the use of axioms: for
            example, in the action of asking, it is assumed that Speaker and Addressee are connected
            through some communication medium, e.g. co-presence in a room or a telephone. In
            Drammar, the DramaStructures that contain the Processes are Units (subclasses of
            DramaSets) and Plans (subclasses of DramaLists). They are then subdivided through a
            further trait, that is whether the process is intentional (of an agent) or not (Action
            or UnintentionalProcess). This trait is defined through a specific Datatype property, of
            boolean type, called isIntentional. So, its subclasses are: - Action: with isIntentional
            property valued TRUE; - UnintentionalProcess: with isIntentional property valued FALSE.
            Same happens in parallel to the States, although in that case the trait concerns the
            state schema.""" ;
    rdfs:label "Process" ;
    rdfs:subClassOf <http://www.loa-cnr.it/ontologies/DOLCE-Lite.owl#process>, :DramaPerdurant .

:Role
    a owl:Class ;
    rdfs:comment """Role provides the pattern for the role fillers in a frame instantiation, that
            occurs in SituationSchema, for describing processes and states. A Role is filled by a
            DramaEntity: the fact that a given role has an entity as a filler is represented by the
            hasFiller property and its inverse isFillerOf property. A Role belongs (isRoleOf) to a
            given SituationSchema, namely a ProcessSchema or a StateSchema (hasRole property). The
            Role class is related to its filler by the hasFiller property, whose range is the
            DramaEntity class. For example, given the incident describable as \"Ophelia gives
            the gift back to Hamlet\", the roles of \"donor\" (the one who does the
            action of giving), \"recipient\" (the one wjho receives the object to be given)
            and \"theme\" (the object of giving action) are all instance of the Role class
            connected to the same Situation, each labeled with a linguistic label
            (\"donor\", \"recipient\", etc.) and each connected to its filler via
            the hasFiller property. Roles can also be intended as thematic roles of verbs following
            the description contained in the Verbnet resource
            (http://verbs.colorado.edu/verb-index/index.php). The Role class, via the hasExtRef
            object property, is linked to the subclass of the top level ExternalReference class, the
            ExternalRefRole class, whose function is to connect the description of the role with the
            appropriate role name or URI in a linguistic account of roles through apposite data
            properties (namely, the Role_framenetRoleID and Role_verbnetRoleType data properties
            respectively for FrameNet and VerbNet).""" ;
    rdfs:label "Role" ;
    rdfs:subClassOf :DescriptionTemplate ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:DescriptionTemplate
            [
                a owl:Restriction ;
                owl:onProperty :hasFiller ;
                owl:someValuesFrom [
                    a owl:Class ;
                    owl:unionOf (:DramaEndurant
                        :DramaPerdurant
                    )
                ]
            ]
            [
                a owl:Restriction ;
                owl:onClass :FrameNetSchema ;
                owl:onProperty :isRoleOf ;
                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
            ]
        )
    ] .

:Scene
    a owl:Class ;
    rdfs:comment """Scene Drama is divided into scenes, which correspond to an extent of the
            'text' of drama. Scenes (as a type of TreeNode) form a hierarchy, which
            represents the recursive nature of drama. This is obtained by implementing the Scene
            class as a subclass of the TreeNode class. Scenes contains children scenes: this
            relation is modeled through the hasChild property. All scenes span some timeline (spans
            object property), i.e., they have a correspondance with some extent of the drama text
            (represented by the Timeline class).""" ;
    rdfs:label "Scene" ;
    rdfs:subClassOf :TreeNode ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:TreeNode
            [
                a owl:Restriction ;
                owl:onProperty :spans ;
                owl:someValuesFrom :Timeline
            ]
            [
                a owl:Restriction ;
                owl:allValuesFrom :Scene ;
                owl:onProperty :hasChild
            ]
        )
    ] .

:Schema_type
    a owl:DatatypeProperty ;
    rdfs:comment """This datatype property represents the type of schema for some construct. Its
            value correspond to the different types of state acknowledged in Drammar : beliefs,
            goals, etc. Each value correspond to a state type: e.g., \"belief\" for the
            Belief class. In particular, framenet is the magic word for the schemata extracted from
            Framenet.""" ;
    rdfs:domain :SituationSchema ;
    rdfs:label "Schema_type" ;
    rdfs:range [
        a rdfs:Datatype ;
        owl:oneOf ("belief"
            "emotion"
            "framenet"
            "goal"
            "value"
        )
    ] ;
    rdfs:subPropertyOf owl:topDataProperty .

:Set
    a owl:Class ;
    rdfs:comment """Set The class of set structures. The relation between sets and set members is
            represented by the hasMember object property. It includes specific subclasses, with each
            subclass characterized by a specific type of members. Sets include: - ConflictsSets:
            sets of conflicting plans; - ConsistentStateSets: sets of consistent states (left and
            right boundaries of timelines and plans). - Units: sets of actions.""" ;
    rdfs:label "Set" ;
    rdfs:subClassOf :AbstractDataType, [
        a owl:Restriction ;
        owl:allValuesFrom :SetMember ;
        owl:onProperty :hasMember
    ] .

:SetMember
    a owl:Class ;
    rdfs:comment """Class of the elements
            of the sets (sets are conflict sets, consistent state sets, and units). Sometimes
            referred to as SM. The hasMember object property has the Set class as its domain and the
            SetMember as its range. Notice that this class works as a placeholder that represents
            the single element in a set (it is not the content itself): the property hasData links
            the SetMember with the actual data, i.e. the content of the item. For example, the
            specific Set that is a Unit hasMember some SetMember that hasData some
            Action."""^^xsd:string ;
    rdfs:label "SetMember" ;
    rdfs:subClassOf :ADTComponent .

:SituationSchema
    a owl:Class ;
    rdfs:comment """The situation schema provides the pattern for the description of incidents and states. It is inspired by the Situation ontology Pattern of the Ontology Design Pattern initiative (http://ontologydesignpatterns.org/). So, a SituationSchema describes (\"describes\" object property) a DramaPerdurant (either a State or a Process).
The schema works as a hub for the roles involved in a situation. The property hasRole links the Situation class (its domain) with the Role class (the range of the property). Also, notice that, as illustrated in the documentation of the SituationSchema class, a Situation Schema (or, better, its subclasses) does not directly refer to the external linguistic knowledge employed to describe drama: rather, it refers to the ExternalRefSchema class (subclass of the top level ExternalReference class), which in  turn refers to the linguistic knowledge. The SituationSchema class specializes into specific schemata for describing specific type of situations: 
- FrameNetSchema: for describing processes, like giving or killing (in Drammar, they are grouped into units arranged on timelines), and states, like being behind some object or being dead (in Drammar, they are bundled into sets that border timelines and plans). 
- MentalStateSchema: this class groups the specific types of schemata for describing the mental states of the agents in Drammar, namely beliefs, goals, emotions and values. 
Technically, the subtypes of SituationSchema are characterized by different values of the quale_schemaType data property: \"belief\", \"emotion\", \"framenet\", \"goal\",  \"value\". 
Finally, it is worth mentioning that is a specific design choice of Drammar not to represent the nesting of states: only the type of the top level state, e.g., a belief, is represented, independent of what that belief contains in turn. This flat style of representation is determined by the decision not to commit to a specific logical account of state types. When Drammar is employed for annotation, the content nested into a state is described informally in natural language description accompanying the state, if needed. 
Refs: Gangemi, A., & Presutti, V. (2009). Ontology design patterns. In Handbook on ontologies (pp. 221-243). Springer Berlin, Heidelberg.""" ;
    rdfs:label "SituationSchema" ;
    rdfs:subClassOf :DescriptionTemplate .

:State
    a owl:Class ;
    rdfs:comment """State represents the static class of the Perdurant. State is the class that
            bridges to the concept of State in upper ontologies, externally to Drammar. For example,
            in DOLCE, states and process are the two distinct types of statives. Both factual and
            eventive states are further divided into different state types: - MentalStates, namely
            Belief, Goals, Values and Emotions (all sharing some propositional content in their
            description); - StateOfAffairs, namely situations holding in the world. States participate
            to some structure. In Drammar, these structures are ConsistenStateSets (types of Sets),
            which borders timelines and plans. The specific type pf States are defined through the
            use of specific types of StateSchema (subclass of DescriptionTemplate). So, its
            subclasses are: - MentalState: the mental state of an agent; - StateOfAffairs: an
            objective state of the story world.""" ;
    rdfs:label "State" ;
    rdfs:subClassOf <http://www.loa-cnr.it/ontologies/DOLCE-Lite.owl#state>, :DramaPerdurant ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:DramaPerdurant
            [
                a owl:Restriction ;
                owl:onProperty :isDataOf ;
                owl:someValuesFrom [
                    a owl:Class ;
                    owl:intersectionOf (:SetMember
                        [
                            a owl:Restriction ;
                            owl:onProperty :isMemberOf ;
                            owl:someValuesFrom :ConsistentStateSet
                        ]
                    )
                ]
            ]
        )
    ] .

:StateOfAffairs
    a owl:Class ;
    rdfs:comment """StateofAffairs are states that concern the storyworld as a whole; they are
            described by a FrameNetSchema, namely a SituationSchema that points (through the
            ExternalRefSchema class) points to a specific frame. This class gathers all states that
            are external to the characters' mental states, and can be linguistically described
            through some external resources such as FrameNet.""" ;
    rdfs:label "StateOfAffairs" ;
    rdfs:subClassOf :State ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:State
            [
                a owl:Restriction ;
                owl:onClass :FrameNetSchema ;
                owl:onProperty :isDescribedBy ;
                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
            ]
        )
    ] .

:Timeline
    a owl:Class ;
    rdfs:comment """Timeline Timeline is a subclass of List whose function is to impose some
            ordering on the units in a drama. Notice that the notion of timeline cannot be collapsed
            onto the actual text: rather, it is simply an indexing posed upon units (which
            correspond to a manifestation of drama in FRBR sense). In formal terms, the orders
            object property has Timeline as its domain and units as its range, so a unit
            \"orders\" some units. A Timeline contains unit. Formally, the elements
            (OrderedListElements class) contained in a timeline (containsOLE property) are units. A
            Timeline is surrounded by states of affairs that hold before and after it, namely
            instances of the ConsistentSateSets class that precede and follow a given timeline.
            Formally, the Timeline class is the domain of the hasTimelineEffect(Precondition)
            properties, which have the ConsistentStateSet class as their range. A timeline is
            motivated by some plan (motivates object property) and is spanned by some unit (span
            object property). The relation between units and timelines is independent of the
            scene/timeline relation.""" ;
    rdfs:label "Timeline" ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:List
            [
                a owl:Restriction ;
                owl:onProperty :hasTimelineEffect ;
                owl:someValuesFrom :ConsistentStateSet
            ]
            [
                a owl:Restriction ;
                owl:onProperty :hasTimelinePrecondition ;
                owl:someValuesFrom :ConsistentStateSet
            ]
            [
                a owl:Restriction ;
                owl:allValuesFrom [
                    a owl:Class ;
                    owl:intersectionOf (:OrderedListElement
                        [
                            a owl:Restriction ;
                            owl:onProperty :hasData ;
                            owl:someValuesFrom :Unit
                        ]
                    )
                ] ;
                owl:onProperty :containsOLE
            ]
        )
    ] .

:Tree
    a owl:Class ;
    rdfs:comment """Tree The class of tree
            structures. The relation between trees and tree nodes is represented by the containsTN
            abd hasRoot object properties. A drama is actually a tree, composed recursively of
            subtrees, which are scenes at different levels. The subtree relationship is established
            between scenes (property hasChild), which are actually tree nodes."""^^xsd:string ;
    rdfs:label "Tree" ;
    rdfs:subClassOf :AbstractDataType, [
        a owl:Restriction ;
        owl:allValuesFrom :TreeNode ;
        owl:onProperty :containsTN
    ], [
        a owl:Restriction ;
        owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
        owl:onClass :TreeNode ;
        owl:onProperty :hasRoot
    ] .

:TreeNode
    a owl:Class ;
    rdfs:comment """TreeNode The TreeNode class represents tree-like structures in drama, namely
            Scenes. This class only represents the recursive structure of drama without an explicit
            commitment to the notion of 'drama as a tree'.""" ;
    rdfs:label "TreeNode" ;
    rdfs:subClassOf :ADTComponent, [
        a owl:Restriction ;
        owl:allValuesFrom :TreeNode ;
        owl:onProperty :hasChild
    ] .

:UnderspecifiedPlan
    a owl:Class ;
    rdfs:comment """An UnderspecifiedPlan is a plan that is part of a larger plan to achieve some
            goal, but has not been executed. In drama, it represents the unobservable part of a plan
            that has not been fully carried out by some agent. Its existence (in the agent's
            mind) can only be conjectured - remember that a Plan is intended by some agent by
            definition. As the object of a conjecture, it does not contain any details in the
            representation of drama (this does not mean that it does not contain them in the
            agent's mind). As such, an UnderspecifiedPlan: - does *not* motivate a timeline (it
            has not taken place); - does *not* achieve a goal (the actions/subplans composing it and
            its specific goal are not known); - does *not* contain any actions. These conditions,
            part of its definition as an Equivalent Class, distinguish it from Abstract and Directly
            Executable Plans.""" ;
    rdfs:label "UnderspecifiedPlan" ;
    rdfs:subClassOf :Plan ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:Plan
            [
                a owl:Class ;
                owl:complementOf [
                    a owl:Restriction ;
                    owl:onProperty :achieves ;
                    owl:someValuesFrom :Goal
                ]
            ]
            [
                a owl:Class ;
                owl:complementOf [
                    a owl:Restriction ;
                    owl:onProperty :containsOLE ;
                    owl:someValuesFrom :OrderedListElement
                ]
            ]
            [
                a owl:Class ;
                owl:complementOf [
                    a owl:Restriction ;
                    owl:onProperty :isMotivationFor ;
                    owl:someValuesFrom :Timeline
                ]
            ]
        )
    ] .

:UnintentionalProcess
    a owl:Class ;
    rdfs:comment """UnintentionalProcess is an unintentional Process. So, an UnintentionalProcess
            is a Process with the property isIntentional that values FALSE.""" ;
    rdfs:label "UnintentionalProcess" ;
    rdfs:subClassOf :Process ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:Process
            [
                a owl:Restriction ;
                owl:onProperty :isDataOf ;
                owl:someValuesFrom [
                    a owl:Class ;
                    owl:intersectionOf (:SetMember
                        [
                            a owl:Restriction ;
                            owl:onProperty :isMemberOf ;
                            owl:someValuesFrom :Unit
                        ]
                    )
                ]
            ]
            [
                a owl:Restriction ;
                owl:hasValue false ;
                owl:onProperty :isIntentional
            ]
        )
    ] .

:Unit
    a owl:Class ;
    rdfs:comment """Unit Units are the segmentation of drama. A drama can have multiple
            segmentations. Units are ordered by some Timeline. Units are devoted to the
            representation of characters' actions. So, we require that any unit contains at
            least one action whose description (ProcessSchema) encompasses at least one role having
            an agent as a filler. If a building collapses, this action, by itself, can be part of
            Unit only if an agent is involved in it (e.g., an agent dies). This definition
            guarantees that, in the minimal case, at least one agent appears as filler of the roles
            in the description of at least an action of every unit. A Unit has one or more actions
            as its members (hasMember property).""" ;
    rdfs:label "Unit" ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:Set
            [
                a owl:Restriction ;
                owl:onProperty :hasMember ;
                owl:someValuesFrom [
                    a owl:Class ;
                    owl:intersectionOf (:SetMember
                        [
                            a owl:Restriction ;
                            owl:onProperty :hasData ;
                            owl:someValuesFrom [
                                a owl:Class ;
                                owl:intersectionOf (:Action
                                    [
                                        a owl:Restriction ;
                                        owl:onProperty :isDescribedBy ;
                                        owl:someValuesFrom [
                                            a owl:Class ;
                                            owl:intersectionOf (:FrameNetSchema
                                                [
                                                    a owl:Restriction ;
                                                    owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
                                                    owl:onClass [
                                                        a owl:Class ;
                                                        owl:intersectionOf (:Role
                                                            [
                                                                a owl:Restriction ;
                                                                owl:onProperty :hasFiller ;
                                                                owl:someValuesFrom :Agent
                                                            ]
                                                        )
                                                    ] ;
                                                    owl:onProperty :hasRole
                                                ]
                                            )
                                        ]
                                    ]
                                )
                            ]
                        ]
                    )
                ]
            ]
            [
                a owl:Restriction ;
                owl:onProperty :isOrderedBy ;
                owl:someValuesFrom :Timeline
            ]
        )
    ] .

:Value
    a owl:Class ;
    rdfs:comment """The Value Class represents the values of an agent. These values are
            engaged in drama by the execution of the agents' plans. Formally, a Value is
            a subclass of the MentalState class which is constrained to: - be in a given state, true
            or false, of the boolean property atStake - be in a ConsistentStateSet (namely, the
            consequences of some plan that puts the value at stake or brings it back to balance) -
            be described by a ValueSchema. For example, in the nunnery scene, Ophelia's
            answer \"At home, my Lord\", being a lie, results in a state that puts at stake
            Hamlet's value of honesty.""" ;
    rdfs:label "Value" ;
    rdfs:subClassOf :MentalState ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:MentalState
            [
                a owl:Class ;
                owl:unionOf ([
                        a owl:Restriction ;
                        owl:hasValue false ;
                        owl:onProperty :atStake
                    ]
                    [
                        a owl:Restriction ;
                        owl:hasValue true ;
                        owl:onProperty :atStake
                    ]
                )
            ]
            [
                a owl:Restriction ;
                owl:onProperty :isValueEngagedOf ;
                owl:someValuesFrom :Agent
            ]
            [
                a owl:Restriction ;
                owl:onClass :ValueSchema ;
                owl:onProperty :isDescribedBy ;
                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
            ]
            [
                a owl:Restriction ;
                owl:onClass :Agent ;
                owl:onProperty :isValueEngagedOf ;
                owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger
            ]
        )
    ] .

:ValueSchema
    a owl:Class ;
    rdfs:comment """The ValueSchema class describes an agent's Value. Formally,
            it is a subclass of MentalStateSchema whose property quale_schemaType is constrained to
            the string \"value\".""" ;
    rdfs:label "ValueSchema" ;
    rdfs:subClassOf :MentalStateSchema ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:MentalStateSchema
            [
                a owl:Restriction ;
                owl:hasValue "value" ;
                owl:onProperty :Schema_type
            ]
        )
    ] .

:accomplished
    a owl:DatatypeProperty ;
    rdfs:comment """Accomplished = true stands for entirely executed and goal achieved
            Accomplished = false stands for entirely executed and goal not achieved When missing,
            nothing is said about execution.""" ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:AbstractPlan
            :DirectlyExecutablePlan
        )
    ] ;
    rdfs:label "accomplished" ;
    rdfs:range xsd:boolean ;
    rdfs:subPropertyOf owl:topDataProperty .

:achieves
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment "achieves links a Plan to the Goal it aims at achieving" ;
    rdfs:label "achieves" ;
    rdfs:subPropertyOf owl:topObjectProperty ;
    owl:inverseOf :isAchievedBy .

:appraisingAgent
    a owl:ObjectProperty ;
    rdfs:comment """The appraisingAgent property connects an Emotion with the Agent who appraises
            it. It encompasses specific subproperties for the specific emotion types (in OCC theory,
            there are 22 emotion types such as Love or Shame)""" ;
    rdfs:domain :Emotion ;
    rdfs:label "appraisingAgent" ;
    rdfs:range :Agent .

:atStake
    a owl:DatatypeProperty ;
    rdfs:comment """Boolean property of a Value: - true, if the value is at stake; - false,
            if the value is balanced.""" ;
    rdfs:domain :Value ;
    rdfs:label "atStake" ;
    rdfs:range xsd:boolean .

:coOccurInScene
    a owl:ObjectProperty, owl:SymmetricProperty ;
    rdfs:comment """coOccurInScene can be used to describe the fact that two Plans co-occur in the
            same Scene.""" ;
    rdfs:domain :Plan ;
    rdfs:label "coOccurInScene" ;
    rdfs:range :Plan .

:containsFirstOLE
    a owl:ObjectProperty ;
    rdfs:comment """First OLE of a
            List."""^^xsd:string ;
    rdfs:domain :List ;
    rdfs:label "containsFirstOLE" ;
    rdfs:range :OrderedListElement ;
    rdfs:subPropertyOf :containsOLE .

:containsLastOLE
    a owl:ObjectProperty ;
    rdfs:comment """Last OLE of a
            List."""^^xsd:string ;
    rdfs:domain :List ;
    rdfs:label "containsLastOLE" ;
    rdfs:range :OrderedListElement ;
    rdfs:subPropertyOf :containsOLE .

:containsOLE
    a owl:InverseFunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """Inverse of isOLElementOf. Connects the ordered list to its elements.
        """ ;
    rdfs:domain :List ;
    rdfs:label "containsOLE" ;
    rdfs:range :OrderedListElement ;
    rdfs:subPropertyOf <http://purl.org/ontology/olo/core#olo:slot>, :hasADTComponent ;
    owl:inverseOf :isOLEContained .

:containsTN
    a owl:ObjectProperty ;
    rdfs:comment """Connects the tree to
            its (tree) nodes. E.g., the drama is a tree and the scenes are its tree
            nodes."""^^xsd:string ;
    rdfs:domain :Tree ;
    rdfs:label "containsTN" ;
    rdfs:range :TreeNode ;
    rdfs:subPropertyOf :hasADTComponent .

:describes
    a owl:ObjectProperty ;
    rdfs:comment """A SituationSchema describes a DramaPerdurant, i.e. provides a template for
            describing processes and states.""" ;
    rdfs:domain :SituationSchema ;
    rdfs:label "describes" ;
    rdfs:range :DramaPerdurant ;
    owl:inverseOf :isDescribedBy .

:feels
    a owl:ObjectProperty ;
    rdfs:label "feels" ;
    rdfs:subPropertyOf :hasMentalState ;
    owl:inverseOf :isEmotionOf .

:follows
    a owl:ObjectProperty ;
    rdfs:comment "Inverse of precedes. Sequential order in an ordered list." ;
    rdfs:label "follows" ;
    rdfs:subPropertyOf <http://purl.org/ontology/olo/core#olo:next>, owl:topObjectProperty ;
    owl:inverseOf :precedes .

:happyFor_appraisingAgent
    a owl:ObjectProperty ;
    rdfs:domain :Emotion ;
    rdfs:label "HappyFor_appraisingAgent" ;
    rdfs:range :Agent ;
    rdfs:subPropertyOf :appraisingAgent .

:happyFor_target
    a owl:ObjectProperty ;
    rdfs:domain :Emotion ;
    rdfs:label "happyFor_target" ;
    rdfs:range :Agent ;
    rdfs:subPropertyOf :target .

:hasADTComponent
    a owl:ObjectProperty ;
    rdfs:comment """A generic property for representing the relation among a given abstract
            structure type and its components.""" ;
    rdfs:domain :AbstractDataType ;
    rdfs:label "hasADTComponent" ;
    rdfs:range :ADTComponent .

:hasChild
    a owl:ObjectProperty ;
    rdfs:comment """the basic relation employed for modelling the computational data structure of
            tree.""" ;
    rdfs:domain :TreeNode ;
    rdfs:label "hasChild" ;
    rdfs:range :TreeNode ;
    rdfs:subPropertyOf :hasADTComponent ;
    owl:inverseOf :hasParent .

:hasData
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """Property that connects a structural element (e.g. of the class OLE) with the
            data contained in it. Range is not defined; it is defined for each specific structure
            element. """ ;
    rdfs:domain :ADTComponent ;
    rdfs:label "hasData" ;
    rdfs:range owl:Thing ;
    rdfs:subPropertyOf <http://purl.org/ontology/olo/core#olo:item> ;
    owl:inverseOf :isDataOf .

:hasDoneState
    a owl:ObjectProperty ;
    rdfs:label "hasDoneState" ;
    rdfs:subPropertyOf owl:topObjectProperty ;
    owl:inverseOf :isDoneStateOf .

:hasEmotionType
    a owl:ObjectProperty ;
    rdfs:domain :EmotionSchema ;
    rdfs:label "hasEmotionType" ;
    rdfs:range :ExternalRefEmotionType ;
    rdfs:subPropertyOf owl:topObjectProperty .

:hasExtRef
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """Quality of an entity (DramaEndurant) In particular: Object_type This property
            provides a URI, in YAGOSUMO or in Wordnet, or a custom string that defines the class of
            some object. E.g., object individual PinkOctopus in Oktapodi is of Object_type
            \"octopus\" in Yago. Environment_periodOfYear Epoch of some environment. E.g.
            summer, january, Easter. Can be a URI or forced custom string. This is why Range is
            empty. Environment_location Can be \"exterior\" or \"interior\". From a
            fixed menu. Environment_timeOfDay Can be \"dawn\" \"morning\"
            \"afternoon\" \"evening\" \"night\". From a fixed menu.
            Environment_type The type of an envrironment. E.g.: forest, kitchen, office, ... . It
            can be custom string or URI. This is why Range is empty. Environment_epoch Epoch of some
            environment. E.g. 20th century, 1710's, 50's. Can be a URI or forced custom
            string. This is why Range is empty. """ ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:DescriptionTemplate
            :DramaEntity
        )
    ] ;
    rdfs:label "hasExtRef" ;
    rdfs:range :ExternalReference ;
    owl:inverseOf :isExtRefOf .

:hasFiller
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """Filler is the property that connects a Role of a FrameNetSchema with the
            DramaEntity (DramaEndurant or DramaPerdurant) that fills that Role.""" ;
    rdfs:domain :Role ;
    rdfs:label "hasFiller" ;
    rdfs:range :DramaEntity ;
    owl:inverseOf :isFillerOf .

:hasGoal
    a owl:ObjectProperty ;
    rdfs:comment "The property which connects an agent with her/his goals." ;
    rdfs:domain :Agent ;
    rdfs:label "hasGoal" ;
    rdfs:range :Goal ;
    rdfs:subPropertyOf :hasMentalState ;
    owl:inverseOf :isGoalOf .

:hasManifestation
    a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:comment """hasManifestation This property connects a Unit to a manifestation of drama
            according to FRBR model. In the real world, a manifestation is represented by a IRI
            (e.g., the URL of a movie, of the recording of a performance, or of the digital edition
            of a novel).""" ;
    rdfs:domain :Unit ;
    rdfs:label "hasManifestation" ;
    rdfs:range xsd:anyURI .

:hasMember
    a owl:ObjectProperty ;
    rdfs:comment """The specific property for modelling Sets (as a data structure). Any entity, in
            Drammar, can be a member of a Set.""" ;
    rdfs:domain :Set ;
    rdfs:label "hasMember" ;
    rdfs:range :SetMember ;
    rdfs:subPropertyOf :hasADTComponent ;
    owl:inverseOf :isMemberOf .

:hasMentalState
    a owl:ObjectProperty ;
    rdfs:domain :Agent ;
    rdfs:label "hasMentalState" ;
    rdfs:range :MentalState .

:hasMessage
    a owl:DatatypeProperty ;
    rdfs:comment """Anything can convey a message. Standard cases: Signpost at a city entrance
            \"Ciudad de Mexico\"; Toothpaste brand name on the object toothpaste:
            \"Colgate\" A specific utterance in a communication action.""" ;
    rdfs:domain owl:Thing ;
    rdfs:label "hasMessage" ;
    rdfs:range xsd:string .

:hasMotivationIn
    a owl:ObjectProperty ;
    rdfs:comment """The hasMotivation property represents the relation bewteen a plan and the
            timeline it motivates (namely, where the actions of the plan are actually
            contained).""" ;
    rdfs:label "hasMotivationIn" ;
    owl:inverseOf :isMotivationFor .

:hasParent
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment "The parent/child relation for modelling tree structures." ;
    rdfs:label "hasParent" .

:hasPlanEffect
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """Property that connects a plan with the consistent set of states that is the
            effect of a plan (ConsistentStateSet).""" ;
    rdfs:domain :Plan ;
    rdfs:label "hasPlanEffect" ;
    rdfs:range :ConsistentStateSet ;
    rdfs:subPropertyOf owl:topObjectProperty ;
    owl:inverseOf :isPlanEffectOf .

:hasPlanPrecondition
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """Property that connect a plan with the ConsistentStateState which forms its
            precondition.""" ;
    rdfs:domain :Plan ;
    rdfs:label "hasPlanPrecondition" ;
    rdfs:range :ConsistentStateSet ;
    rdfs:subPropertyOf owl:topObjectProperty ;
    owl:inverseOf :isPlanPreconditionOf .

:hasPropositionalContent
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """hasPropositionalContent links a BeliefSchema or a GoalSchema to the its
            content (a factual state or process), that is, the Process or State that is the actual
            content of the belief or the goal.""" ;
    rdfs:domain [
        a owl:Class ;
        owl:unionOf (:BeliefSchema
            :GoalSchema
        )
    ] ;
    rdfs:label "hasPropositionalContent" ;
    owl:inverseOf :isPropositionalContentOf .

:hasRole
    a owl:InverseFunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """Connects a SituationSchema ( modelled by a frame-like linguistic structure)
            with each Role of the schema.""" ;
    rdfs:domain :FrameNetSchema ;
    rdfs:label "hasRole" ;
    rdfs:range :Role ;
    owl:inverseOf :isRoleOf .

:hasRoot
    a owl:ObjectProperty ;
    rdfs:comment """Connects the Tree with
            the TreeNode that is its Root."""^^xsd:string ;
    rdfs:domain :Tree ;
    rdfs:label "hasRoot" ;
    rdfs:range :TreeNode ;
    rdfs:subPropertyOf :containsTN .

:hasTimelineEffect
    a owl:FunctionalProperty, owl:InverseFunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """Property that connect a Timeline with the ConsistentStateState which forms its
            effects.""" ;
    rdfs:domain :Timeline ;
    rdfs:label "hasTimelineEffect" ;
    rdfs:range :ConsistentStateSet ;
    rdfs:subPropertyOf owl:topObjectProperty ;
    owl:inverseOf :isTimelineEffectOf .

:hasTimelinePrecondition
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """Property that connect a Timeline with the ConsistentStateState which forms its
            precondition.""" ;
    rdfs:domain :Timeline ;
    rdfs:label "hasTimelinePrecondition" ;
    rdfs:range :ConsistentStateSet ;
    rdfs:subPropertyOf owl:topObjectProperty ;
    owl:inverseOf :isTimelinePreconditionOf .

:hasValueEngaged
    a owl:ObjectProperty ;
    rdfs:comment "The property hasValue connects an agent to her/his values" ;
    rdfs:domain :Agent ;
    rdfs:label "hasValueEngaged" ;
    rdfs:range :Value ;
    rdfs:subPropertyOf :hasMentalState ;
    owl:inverseOf :isValueEngagedOf .

:hingesOn
    a owl:InverseFunctionalProperty, owl:ObjectProperty ;
    rdfs:comment "A DrammarScene hinges on some ConflictSet" ;
    rdfs:domain :DrammarScene ;
    rdfs:label "hingesOn" ;
    rdfs:range :ConflictSet ;
    owl:inverseOf :isHingedOnBy .

:inConflictWith
    a owl:ObjectProperty, owl:SymmetricProperty ;
    rdfs:comment """The conflict relation over plans. The ontology is neutral with respect with
            conflicts over other entity types, such a goals: it only assumes that conflicts over
            plans are observable.""" ;
    rdfs:domain :Plan ;
    rdfs:label "inConflictWith" ;
    rdfs:range :Plan .

:inSupportOf
    a owl:ObjectProperty ;
    rdfs:comment "The support relation over goals (parallel to inConflictWith)" ;
    rdfs:domain :Plan ;
    rdfs:label "inSupportOf" ;
    rdfs:range :Plan ;
    rdfs:subPropertyOf owl:topObjectProperty .

:intends
    a owl:ObjectProperty ;
    rdfs:comment "Intends has as domain an Agent and as range a Plan." ;
    rdfs:domain :Agent ;
    rdfs:label "intends" ;
    rdfs:range :Plan ;
    rdfs:subPropertyOf owl:topObjectProperty ;
    owl:inverseOf :isIntendedBy .

:isAchievedBy
    a owl:ObjectProperty ;
    rdfs:comment "This property connects a goal with the plan that achieves it." ;
    rdfs:domain :Goal ;
    rdfs:label "isAchievedBy" ;
    rdfs:range :Plan ;
    rdfs:subPropertyOf owl:topObjectProperty .

:isDataOf
    a owl:ObjectProperty ;
    rdfs:comment """isDataOf connects some entity to a data structure component (namely, an
            OrderedListElement) of which it is the content.""" ;
    rdfs:label "isDataOf" .

:isDescribedBy
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """Inverse of describes, this property connects a Dynamics (Process or State)
            with the SituationSchema that describes it.""" ;
    rdfs:label "isDescribedBy" ;
    rdfs:subPropertyOf owl:topObjectProperty .

:isDoneStateOf
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """This is the property that connects a process with a particular state, called a
            done state, that holds whether the process has terminated. """ ;
    rdfs:label "isDoneStateOf" ;
    rdfs:range [
        a owl:Class ;
        owl:unionOf (:Plan
            :Process
        )
    ] .

:isEmotionOf
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment "Connects an emotion with the agent who feels it." ;
    rdfs:domain :Emotion ;
    rdfs:label "isEmotionOf" ;
    rdfs:range :Agent ;
    rdfs:subPropertyOf :isMentalStateOf .

:isExtRefOf
    a owl:ObjectProperty ;
    rdfs:label "isExtRefOf" .

:isExtRefRoleOfExtRefSchema
    a owl:ObjectProperty ;
    rdfs:comment """This property chain serves the purpose of connecting a frame role with the
            frame it belongs to, via the following property chain: isExtRefOf o isRoleOf o hasExtRef
            where - isExtRefOf connects ExtRefRole to Role - isRoleOf connects Role to ProcessSchema
            - hasExtRef connects ProcessSchema to ExtRefSchema (remember that the actual reference
            to the frame or frame role in an external resources are dealt with by attaching a
            \"quale\" data property to the classes that represent the external
            references)""" ;
    rdfs:domain :ExternalRefRole ;
    rdfs:label "isExtRefRoleOfExtRefSchema" ;
    rdfs:range :ExternalRefSchema ;
    owl:propertyChainAxiom (:isExtRefOf
        :isRoleOf
        :hasExtRef
    ) .

:isFillerOf
    a owl:InverseFunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """Connects some DramaEndurant or Perdurant to a Role in a
            SituationSchema""" ;
    rdfs:label "isFillerOf" ;
    rdfs:subPropertyOf owl:topObjectProperty .

:isGoalOf
    a owl:ObjectProperty ;
    rdfs:comment "inverse of hasGoal" ;
    rdfs:label "isGoalOf" ;
    rdfs:range :Agent ;
    rdfs:subPropertyOf :isMentalStateOf .

:isHingedOnBy
    a owl:ObjectProperty ;
    rdfs:comment "Inverse of hingesOn." ;
    rdfs:label "isHingedOnBy" .

:isIntendedBy
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment "Inverse of intends." ;
    rdfs:label "isIntendedBy" ;
    rdfs:subPropertyOf owl:topObjectProperty .

:isIntentional
    a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:comment """Boolean property for Intentionality of processes. Applies to Processes to
            distinguish Action from an UnintentionalProcess.""" ;
    rdfs:domain :Process ;
    rdfs:label "isIntentional" ;
    rdfs:range xsd:boolean .

:isKnownBy
    a owl:ObjectProperty ;
    rdfs:label "isKnownBy" ;
    rdfs:range :Agent ;
    rdfs:subPropertyOf :isMentalStateOf ;
    owl:inverseOf :knows .

:isMemberOf
    a owl:ObjectProperty ;
    rdfs:label "isMemberOf" ;
    rdfs:subPropertyOf owl:topObjectProperty .

:isMentalStateOf
    a owl:ObjectProperty ;
    rdfs:label "isMentalStateOf" .

:isMotivationFor
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment """A plan is the motivation for a timeline, namely for a list of units containing
            actions. This property is functional: so, a plan can motivate only a timeline. Notice
            that this implies that a plan cannot motivate the same timeline motivated by a sub-plan,
            and that a plan cannot motivate the same timeline motivated by a more abstract plan. Of
            course, the fact that this property is functional does not imply that a single timeline
            cannot be motivated by more plans.""" ;
    rdfs:domain :Plan ;
    rdfs:label "isMotivationFor" ;
    rdfs:range :Timeline .

:isOLEContained
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:comment "Connects the element of an ordered list to the ordered list." ;
    rdfs:label "isOleContained" ;
    rdfs:subPropertyOf owl:topObjectProperty .

:isOrderedBy
    a owl:ObjectProperty ;
    rdfs:label "isOrderedBy" ;
    owl:inverseOf :orders .

:isPlanEffectOf
    a owl:ObjectProperty ;
    rdfs:label "isPlanEffectOf" ;
    rdfs:subPropertyOf owl:topObjectProperty .

:isPlanPreconditionOf
    a owl:ObjectProperty ;
    rdfs:label "isPlanPreconditionOf" ;
    rdfs:subPropertyOf owl:topObjectProperty .

:isPropositionalContentOf
    a owl:ObjectProperty ;
    rdfs:comment """Inverse of hasPropositionalContent. It links a BeliefSchema or a GoalSchema to
            a State or Process.""" ;
    rdfs:label "isPropositionalContentOf" .

:isRoleOf
    a owl:ObjectProperty ;
    rdfs:label "isRoleOf" ;
    rdfs:subPropertyOf owl:topObjectProperty .

:isSpannedBy
    a owl:FunctionalProperty, owl:InverseFunctionalProperty, owl:ObjectProperty ;
    rdfs:label "isSpannedBy" ;
    rdfs:subPropertyOf owl:topObjectProperty ;
    owl:inverseOf :spans .

:isTimelineEffectOf
    a owl:FunctionalProperty, owl:InverseFunctionalProperty, owl:ObjectProperty ;
    rdfs:label "isTimelineEffectOf" ;
    rdfs:subPropertyOf owl:topObjectProperty .

:isTimelinePreconditionOf
    a owl:ObjectProperty ;
    rdfs:label "isTimelinePreconditionOf" ;
    rdfs:subPropertyOf owl:topObjectProperty .

:isValueEngagedOf
    a owl:FunctionalProperty, owl:ObjectProperty ;
    rdfs:label "isValueEngagedOf" ;
    rdfs:range :Agent ;
    rdfs:subPropertyOf :isMentalStateOf .

:knows
    a owl:ObjectProperty ;
    rdfs:comment """Property of an agent, who BELIEVES a Belief (a mental state with a
            propositional content). BELIEVES = KNOWS.""" ;
    rdfs:domain :Agent ;
    rdfs:label "knows" ;
    rdfs:range :Belief ;
    rdfs:subPropertyOf :hasMentalState .

:love_appraisingAgent
    a owl:ObjectProperty ;
    rdfs:domain :Emotion ;
    rdfs:label "love_appraisingAgent" ;
    rdfs:range :Agent ;
    rdfs:subPropertyOf :appraisingAgent .

:love_target
    a owl:ObjectProperty ;
    rdfs:domain :Emotion ;
    rdfs:label "love_target" ;
    rdfs:range :Agent ;
    rdfs:subPropertyOf :target .

:orders
    a owl:ObjectProperty ;
    rdfs:comment "A Timeline orders Unit." ;
    rdfs:domain :Timeline ;
    rdfs:label "orders" ;
    rdfs:range :Unit .

:originalTerm
    a owl:DatatypeProperty ;
    rdfs:comment """This is the string originally inserted for searching the URI in the external
            ontology. E.g. \"parlare\" \"eleganza\"""" ;
    rdfs:domain :ExternalReference ;
    rdfs:label "originalTerm" ;
    rdfs:range xsd:string ;
    rdfs:subPropertyOf owl:topDataProperty .

:precedes
    a owl:ObjectProperty ;
    rdfs:comment "Sequential order in an ordered list." ;
    rdfs:domain :OrderedListElement ;
    rdfs:label "precedes" ;
    rdfs:range :OrderedListElement ;
    rdfs:subPropertyOf <http://purl.org/ontology/olo/core#olo:previous> .

:quale
    a owl:DatatypeProperty ;
    rdfs:comment """Any quality associated to anything. Its range is a string (if a URI is needed
            to resolve the reference, this is dealt with when processing the annotation) All its
            subproperties are introduced on the basis of some specific annotation task. So, its
            current subproperties refer to FrameNet, VerbNet, YagoSumo, MWN corpora,
            respectively.""" ;
    rdfs:domain :ExternalReference ;
    rdfs:label "quale" .

:quale_MWNSense
    a owl:DatatypeProperty ;
    rdfs:label "quale_MWNSense" ;
    rdfs:subPropertyOf :quale .

:quale_YAGOSUMOConcept
    a owl:DatatypeProperty ;
    rdfs:comment """The range is a concept in YagoSUMO. E.g. &%Speaking+, &%Arriving=,
            these two probably from SUMO;
            http://www.mpii.de/yago/resource/wordnet_bathing_100427853, probably from
            YAGO.""" ;
    rdfs:domain :ExternalReference ;
    rdfs:label "quale_YAGOSUMOConcept" ;
    rdfs:subPropertyOf :quale .

:quale_framenetFrame
    a owl:DatatypeProperty ;
    rdfs:comment """This property of the ExternalRefSchema links the schema to the frame it
            corresponds to, needed to describe some state or process occurring in drama. The value
            is the ID in Framenet. Currently, in the implementation, it is the string of the number
            of choice in the list of frames returned. E.g. \"1\"""" ;
    rdfs:domain :ExternalRefSchema ;
    rdfs:label "quale_framenetFrame" ;
    rdfs:subPropertyOf :quale .

:quale_framenetRoleID
    a owl:DatatypeProperty ;
    rdfs:comment """Role_framenetRoleID ID of the role as stated by Framenet. It is the string
            returned through the access to Framenet. The string represent the ID of the Frame
            Element. """ ;
    rdfs:domain :ExternalRefRole ;
    rdfs:label "quale_framenetRoleID" ;
    rdfs:subPropertyOf :quale .

:quale_verbnetRoleLabel
    a owl:DatatypeProperty ;
    rdfs:comment """Type of the role as stated by Verbnet. It is the string returned through the
            access to Verbnet. This happens when the access to Framenet fails.""" ;
    rdfs:domain :ExternalRefRole ;
    rdfs:label "quale_verbnetRoleLabel" ;
    rdfs:subPropertyOf :quale .

:shame_appraisingAgent
    a owl:ObjectProperty ;
    rdfs:domain :Emotion ;
    rdfs:label "shame_appraisingAgent" ;
    rdfs:range :Agent ;
    rdfs:subPropertyOf :appraisingAgent .

:shame_target
    a owl:ObjectProperty ;
    rdfs:domain :Emotion ;
    rdfs:label "shame_target" ;
    rdfs:range :Agent ;
    rdfs:subPropertyOf :target .

:spans
    a owl:FunctionalProperty, owl:InverseFunctionalProperty, owl:ObjectProperty ;
    rdfs:comment "The coincidence relation of a Scene on a Timeline." ;
    rdfs:domain :Scene ;
    rdfs:label "spans" ;
    rdfs:range :Timeline ;
    rdfs:subPropertyOf owl:topObjectProperty .

:target
    a owl:ObjectProperty ;
    rdfs:comment """A generic property for describing the relation of an appraised emotional state
            with the target of the emotion, further articulated into more specific target types for
            each emotion type (see appraisingAgent property).""" ;
    rdfs:label "target" .

owl:Thing
    a owl:Class ;
    rdfs:comment """Thing contains four major taxonomies: - DescriptionTemplate - DramaEntity -
            ExternalReference - DataStructure""" .

owl:topDataProperty
    a owl:DatatypeProperty ;
    rdfs:comment """All these properties are data associated with classes. Labels are
            self-explaining (e.g., isIntentional) or have Thing as domain. In
            non-obvious names, the domain class is in the prefix of the name (e.g. Goal_type).""" .

owl:topObjectProperty
    a owl:ObjectProperty .

[]
    a owl:AllDisjointClasses ;
    owl:members (:List
        :Set
        :Tree
    ) .

