Ontology
comment: genpol.owl 7th April 2014 (C) Gavin A. Campbell (www.cs.stir.ac.uk/~gca) and Kenneth J. Turner (www.cs.stir.ac.uk/~kjt) Computing Science and Mathematics University of Stirling This ontology defines the core, generic aspects of the APPEL policy description language. OWLDoc documentation for this ontology may be accessed at: http://www.cs.stir.ac.uk/schemas/doc/genpol Updates: Version 3.3: o provided goal-related information Version 3.4: o used "schemas" directory throughout Version 3.5: o converted "matchValue" and "displayName" DatatypeProperty to AnnotationProperty (fixed definition error) Version 3.6: o "hasTypicalRange" property added Version 3.7: o "receive_message" trigger added Version 3.8: o fuzzy input variables and fuzzy output actions added ("FuzzyInput" and "FuzzyOutput" classes with "hasFuzzySets" datatype property) o "apply_firmer" and "apply_looser" resolution actions added Version 3.9 (14th June 2013): o parameter prefixes removed for "restart_timer", "set_variable", "start_timer", "stop_timer" and "unset_variable" o parameter types given initial capitals o "hasSimilarActions" property defined for "log_event", "restart_timer", "send_message", "stop_timer" and "unset_variable" Version 4.0 (7th April 2014): o "hasPartialParameters" property defined for "set_timer" and "start_timer" o "hasSimilarActions" property defined for "send_message", "set_timer" and "start_timer"
version info: Version 4.0

preference2
type: Class
disjoint with: preference9
disjoint with: preference1
disjoint with: preference6
disjoint with: preference4
disjoint with: preference3
disjoint with: preference5
subclass of: ResVarPreference
disjoint with: preference8
disjoint with: preference7

preference9
type: Class
disjoint with: preference3
disjoint with: preference7
subclass of: ResVarPreference
disjoint with: preference5
disjoint with: preference1
disjoint with: preference2
disjoint with: preference8
disjoint with: preference6
disjoint with: preference4

preference1
type: Class
disjoint with: preference8
disjoint with: preference2
disjoint with: preference5
disjoint with: preference7
disjoint with: preference9
disjoint with: preference6
disjoint with: preference3
subclass of: ResVarPreference
disjoint with: preference4

preference6
type: Class
disjoint with: preference1
disjoint with: preference9
subclass of: ResVarPreference
disjoint with: preference7
disjoint with: preference2
disjoint with: preference8
disjoint with: preference5
disjoint with: preference4
disjoint with: preference3

preference4
type: Class
disjoint with: preference6
disjoint with: preference1
subclass of: ResVarPreference
disjoint with: preference8
disjoint with: preference9
disjoint with: preference3
disjoint with: preference7
disjoint with: preference2
disjoint with: preference5

preference3
type: Class
disjoint with: preference6
disjoint with: preference7
subclass of: ResVarPreference
disjoint with: preference5
disjoint with: preference2
disjoint with: preference1
disjoint with: preference8
disjoint with: preference9
disjoint with: preference4

preference5
type: Class
disjoint with: preference9
disjoint with: preference4
disjoint with: preference3
subclass of: ResVarPreference
disjoint with: preference7
disjoint with: preference8
disjoint with: preference2
disjoint with: preference1
disjoint with: preference6

preference8
type: Class
disjoint with: preference5
disjoint with: preference4
subclass of: ResVarPreference
disjoint with: preference7
disjoint with: preference6
disjoint with: preference1
disjoint with: preference2
disjoint with: preference9
disjoint with: preference3

preference7
type: Class
disjoint with: preference6
disjoint with: preference3
subclass of: ResVarPreference
disjoint with: preference4
disjoint with: preference8
disjoint with: preference5
disjoint with: preference2
disjoint with: preference9
disjoint with: preference1

variable5
type: Class
disjoint with: variable3
disjoint with: variable8
disjoint with: variable4
disjoint with: variable7
disjoint with: variable9
disjoint with: variable2
subclass of: ResVarVariable
disjoint with: variable6
disjoint with: variable1

variable3
type: Class
disjoint with: variable1
disjoint with: variable2
disjoint with: variable9
disjoint with: variable5
subclass of: ResVarVariable
disjoint with: variable7
disjoint with: variable8
disjoint with: variable4
disjoint with: variable6

variable8
type: Class
disjoint with: variable3
disjoint with: variable4
disjoint with: variable5
disjoint with: variable9
subclass of: ResVarVariable
disjoint with: variable7
disjoint with: variable6
disjoint with: variable2
disjoint with: variable1

variable4
type: Class
disjoint with: variable9
disjoint with: variable6
disjoint with: variable5
disjoint with: variable1
disjoint with: variable8
subclass of: ResVarVariable
disjoint with: variable3
disjoint with: variable7
disjoint with: variable2

variable7
type: Class
disjoint with: variable1
disjoint with: variable5
disjoint with: variable9
disjoint with: variable6
disjoint with: variable4
subclass of: ResVarVariable
disjoint with: variable8
disjoint with: variable2
disjoint with: variable3

variable9
type: Class
disjoint with: variable2
disjoint with: variable7
disjoint with: variable6
disjoint with: variable5
disjoint with: variable1
subclass of: ResVarVariable
disjoint with: variable4
disjoint with: variable8
disjoint with: variable3

variable2
type: Class
subclass of: ResVarVariable
disjoint with: variable9
disjoint with: variable6
disjoint with: variable5
disjoint with: variable7
disjoint with: variable4
disjoint with: variable8
disjoint with: variable1
disjoint with: variable3

variable6
type: Class
disjoint with: variable7
disjoint with: variable9
disjoint with: variable8
disjoint with: variable2
disjoint with: variable1
disjoint with: variable4
disjoint with: variable3
subclass of: ResVarVariable
disjoint with: variable5

variable1
type: Class
disjoint with: variable7
disjoint with: variable4
disjoint with: variable8
disjoint with: variable5
disjoint with: variable9
disjoint with: variable6
subclass of: ResVarVariable
disjoint with: variable2
disjoint with: variable3

ResPolicyRule
type: Class
subclass of: PolicyRule
subclass of: Restriction
  on property: hasTriggerEvent
  min cardinality: 2
subclass of: Restriction
  some values from: ResTriggerEvent
  on property: hasTriggerEvent
subclass of: Restriction
  some values from: ResCondition
  on property: hasCondition
subclass of: Restriction
  min cardinality: 0
  on property: hasCondition
subclass of: Restriction
  some values from: res_action
  on property: hasAction
subclass of: Restriction
  on property: hasAction
  min cardinality: 1

ResTriggerEvent
type: Class
subclass of: TriggerEvent
subclass of: Restriction
  on property: hasPermissibleParameter
  some values from: ResVarPreference
subclass of: Restriction
  max cardinality: 2
  on property: hasTriggerArgument
subclass of: Restriction
  some values from: ResVarVariable
  on property: hasPermissibleParameter
subclass of: Restriction
  on property: hasTriggerArgument
  min cardinality: 0
subclass of: Restriction
  some values from: generic_res_action
  on property: hasPermissibleAction
equivalent class: pol_action
subclass of: Restriction
  on property: hasPermissibleParameter
  some values from: PolConditionParameter
subclass of: Restriction
  some values from: specific_res_action
  on property: hasPermissibleAction
subclass of: Restriction
  on property: hasTriggerArgument
  some values from: ResTriggerArgument

res_action
type: Class
subclass of: Action

ConditionCombOp
type: Class
disjoint with: TriggerCombOp
disjoint with: ActionCombOp
disjoint with: PolicyRuleCombOp
subclass of: CombinationOperator
comment: Combination operators used to combine pairs of Condition rules.

TriggerCombOp
type: Class
comment: Combination operators used to combine pairs of TriggerEvent rules.
subclass of: CombinationOperator
disjoint with: ConditionCombOp
disjoint with: ActionCombOp
disjoint with: PolicyRuleCombOp

ActionCombOp
type: Class
subclass of: CombinationOperator
comment: An Operator used to define the order in which pairs of Action rules are applied.
disjoint with: ConditionCombOp
disjoint with: TriggerCombOp
disjoint with: PolicyRuleCombOp

PolicyRuleCombOp
type: Class
subclass of: CombinationOperator
comment: Operators which combine pairs of PolicyRule instances (policy rules). Valid combinators are subclassed: GuardedRuleCombOp (guarded choice), UnguardedRuleCombOp (unguarded choice), ParallelRuleCombOp (parallel application) and SequentialRuleCombOp (sequential order).
disjoint with: ConditionCombOp
disjoint with: TriggerCombOp
disjoint with: ActionCombOp

CombinationOperator
type: Class
comment: An Operator which may be used to govern the execution sequence of pairs of Action, Condition or TriggerEvent rules as well as a pair of olicyRule instances. Different types of rule are associated with different sets of combinatory operators - as defined by the various subclasses. The use of such combinatory operators is useful in policy conflict resolution - where the order of rule execution may be altered in order to avoid or resolve conflicting policies.
disjoint with: ConditionOperator

res_variable
type: Class
subclass of: PolicyVariable
comment: A resolution variable is a variable(1-9) which can be bound to the trigger argument within a resolution policy, or a preference(1-9) which can be implicitly bound to the preferences of associated policies.

and
type: Class
disjoint with: orelse
disjoint with: or
disjoint with: andthen
disjoint with: else
comment: The 'and' operator specifies that the policy should lead to the execution of both actions in either order.
subclass of: NamedActionCombOp

orelse
type: Class
subclass of: NamedActionCombOp
disjoint with: and
disjoint with: else
disjoint with: andthen
disjoint with: or
comment: The 'or else' operator is the 'or' operator with a prescribed order.It means that the user feels more strongly about the first action specified. The else part implies the order may still be reversed (i.e. by a conflict resolution engine).

or
type: Class
comment: The 'or' operator specifies that either one of a pair of actions may be executed.
disjoint with: andthen
disjoint with: orelse
disjoint with: and
disjoint with: else
subclass of: NamedActionCombOp

andthen
type: Class
subclass of: NamedActionCombOp
comment: The 'and then' operator is a stronger version of 'and', since the first action must precede the second in any execution. The order of the action rules may not be rearranged.
disjoint with: else
disjoint with: and
disjoint with: orelse
disjoint with: or

else
type: Class
disjoint with: or
disjoint with: orelse
disjoint with: andthen
disjoint with: and
subclass of: NamedActionCombOp
comment: If there is a condition and the 'else' operator governs the top level of actions, the effect is that of a conventional 'if...else'. If the condition is true then the first action is taken, otherwise the second action is chosen. If there is no condition, or the 'else' does not appear at the top level of actions, 'else' behaves like the 'or' operator. Note that this allows a single choice at the top level of a policy; multiple 'else' operators cannot be used in a switch-like fashion.

PolTriggerArgument
type: Class
disjoint with: PolActionArgument
comment: Value passed to a TriggerEvent as a parameter.
subclass of: Argument

apply_older
type: Class
disjoint with: apply_looser
disjoint with: apply_firmer
disjoint with: apply_inferior
disjoint with: apply_superior
disjoint with: apply_default
disjoint with: apply_weaker
disjoint with: apply_stronger
subclass of: generic_res_action
disjoint with: apply_negative
disjoint with: apply_positive
disjoint with: apply_one
disjoint with: apply_newer

apply_looser
type: Class
disjoint with: apply_firmer
disjoint with: apply_newer
subclass of: generic_res_action
disjoint with: apply_positive
disjoint with: apply_inferior
disjoint with: apply_stronger
disjoint with: apply_older
disjoint with: apply_weaker
disjoint with: apply_one
disjoint with: apply_negative
disjoint with: apply_superior
disjoint with: apply_default

apply_firmer
type: Class
disjoint with: apply_newer
disjoint with: apply_inferior
disjoint with: apply_looser
disjoint with: apply_weaker
disjoint with: apply_default
subclass of: generic_res_action
disjoint with: apply_older
disjoint with: apply_negative
disjoint with: apply_one
disjoint with: apply_stronger
disjoint with: apply_superior
disjoint with: apply_positive

apply_inferior
type: Class
disjoint with: apply_default
disjoint with: apply_positive
disjoint with: apply_firmer
disjoint with: apply_superior
disjoint with: apply_newer
disjoint with: apply_one
disjoint with: apply_weaker
disjoint with: apply_looser
disjoint with: apply_negative
subclass of: generic_res_action
disjoint with: apply_stronger
disjoint with: apply_older

apply_superior
type: Class
disjoint with: apply_newer
disjoint with: apply_stronger
disjoint with: apply_firmer
disjoint with: apply_looser
disjoint with: apply_older
disjoint with: apply_inferior
disjoint with: apply_negative
disjoint with: apply_default
disjoint with: apply_one
subclass of: generic_res_action
disjoint with: apply_positive
disjoint with: apply_weaker

apply_default
type: Class
disjoint with: apply_superior
disjoint with: apply_stronger
disjoint with: apply_firmer
subclass of: generic_res_action
disjoint with: apply_older
disjoint with: apply_newer
disjoint with: apply_inferior
disjoint with: apply_looser
disjoint with: apply_positive
disjoint with: apply_negative
disjoint with: apply_one
disjoint with: apply_weaker

apply_weaker
type: Class
disjoint with: apply_superior
disjoint with: apply_newer
disjoint with: apply_older
disjoint with: apply_negative
disjoint with: apply_firmer
disjoint with: apply_inferior
disjoint with: apply_looser
subclass of: generic_res_action
disjoint with: apply_stronger
disjoint with: apply_positive
disjoint with: apply_default
disjoint with: apply_one

apply_stronger
type: Class
disjoint with: apply_superior
subclass of: generic_res_action
disjoint with: apply_looser
disjoint with: apply_older
disjoint with: apply_weaker
disjoint with: apply_firmer
disjoint with: apply_inferior
disjoint with: apply_negative
disjoint with: apply_one
disjoint with: apply_newer
disjoint with: apply_default
disjoint with: apply_positive

generic_res_action
type: Class
subclass of: res_action

apply_negative
type: Class
disjoint with: apply_weaker
disjoint with: apply_looser
disjoint with: apply_default
disjoint with: apply_older
disjoint with: apply_newer
disjoint with: apply_positive
disjoint with: apply_stronger
disjoint with: apply_inferior
disjoint with: apply_one
disjoint with: apply_superior
disjoint with: apply_firmer
subclass of: generic_res_action

apply_positive
type: Class
disjoint with: apply_looser
disjoint with: apply_one
disjoint with: apply_newer
disjoint with: apply_default
disjoint with: apply_negative
disjoint with: apply_superior
subclass of: generic_res_action
disjoint with: apply_older
disjoint with: apply_stronger
disjoint with: apply_weaker
disjoint with: apply_inferior
disjoint with: apply_firmer

apply_one
type: Class
disjoint with: apply_positive
disjoint with: apply_default
disjoint with: apply_newer
disjoint with: apply_weaker
disjoint with: apply_looser
disjoint with: apply_superior
disjoint with: apply_older
disjoint with: apply_firmer
disjoint with: apply_stronger
disjoint with: apply_negative
disjoint with: apply_inferior
subclass of: generic_res_action

apply_newer
type: Class
disjoint with: apply_looser
disjoint with: apply_superior
disjoint with: apply_firmer
disjoint with: apply_default
disjoint with: apply_older
disjoint with: apply_weaker
disjoint with: apply_positive
disjoint with: apply_one
disjoint with: apply_negative
disjoint with: apply_inferior
subclass of: generic_res_action
disjoint with: apply_stronger

should
type: Class
comment: Middle negative preference.
disjoint with: prefer
disjoint with: must_not
disjoint with: prefer_not
disjoint with: must
disjoint with: should_not
subclass of: policy_preference

prefer
type: Class
disjoint with: should
disjoint with: must
disjoint with: prefer_not
disjoint with: must_not
disjoint with: should_not
subclass of: policy_preference
comment: Weakest positive preference.

must_not
type: Class
comment: Middle positive preference.
subclass of: policy_preference
disjoint with: should
disjoint with: should_not
disjoint with: prefer_not
disjoint with: prefer
disjoint with: must

prefer_not
type: Class
comment: Weakest negative preference.
subclass of: policy_preference
disjoint with: must
disjoint with: must_not
disjoint with: should
disjoint with: prefer
disjoint with: should_not

must
type: Class
subclass of: policy_preference
disjoint with: must_not
disjoint with: prefer_not
disjoint with: should_not
disjoint with: should
disjoint with: prefer
comment: Strongest positive preference.

should_not
type: Class
subclass of: policy_preference
disjoint with: prefer
disjoint with: should
disjoint with: prefer_not
disjoint with: must_not
disjoint with: must
comment: Strongest negative preference.

policy_preference
type: Class
disjoint with: policy_end_date
disjoint with: user_profile
disjoint with: policy_start_date
comment: Policy preference attribute is optional. It specifies how strongly the policy designer feels about its execution and is intended for use during conflict resolution. The ordering is from strongly positive to strongly negative (must...must_not).
subclass of: Class
  union of: should_not
  union of: should
  union of: prefer_not
  union of: prefer
  union of: must_not
  union of: must
subclass of: OptionalAttribute

OptionalAttribute
type: Class
comment: Item of policy information which may be ommited.
equivalent class: Class
  intersection of: PolicyAttribute
  intersection of: Class
    union of: user_profile
    union of: policy_start_date
    union of: policy_preference
    union of: policy_end_date
disjoint with: RequiredAttribute

PolicyAttribute
type: Class
subclass of: Class
  union of: RequiredAttribute
  union of: OptionalAttribute
subclass of: Thing
comment: Common element of information about a Policy. A Policy has a number of required attributes and may have additional optional attributes.

user_profile
type: Class
comment: Optional association with a particular user profile - an identifier which groups policies. e.g. profiles could include 'at home' 'at work'. If a particular profile is specified, then the policy document may only be executed if the users profile being used.
subclass of: OptionalAttribute
disjoint with: policy_preference
disjoint with: policy_end_date
disjoint with: policy_start_date

policy_start_date
type: Class
disjoint with: policy_preference
disjoint with: policy_end_date
disjoint with: user_profile
subclass of: OptionalAttribute
comment: The date and time the policy is valid from.

policy_end_date
type: Class
disjoint with: user_profile
disjoint with: policy_preference
disjoint with: policy_start_date
comment: The date and time the policy ceases to be valid.
subclass of: OptionalAttribute

RequiredAttribute
type: Class
equivalent class: Class
  intersection of: PolicyAttribute
  intersection of: Class
    union of: policy_owner
    union of: policy_last_modified_date
    union of: policy_id
    union of: policy_enabled
    union of: policy_applies_to
comment: Item of Policy information which must be associated with each Policy.
disjoint with: OptionalAttribute

SimilarAction
type: Class
comment: A value used as a parameter to a component such as an Action or TriggerEvent rule. The argument may take the form a PolicyVariable.

PartialParameter
type: Class
comment: A value used as a parameter to a component such as an Action.

restart_timer
type: Class
comment: restarts the timer with the given identifier
subclass of: Restriction
  on property: hasSimilarActions
  some values from: SimilarAction
subclass of: pol_action
subclass of: Restriction
  on property: hasActionArgument
  some values from: timer_identifier
subclass of: Restriction
  on property: hasActionArgument
  cardinality: 1

pol_action
type: Class
comment: An Action is the result of executing a PolicyRule - typically some outcome event. An Action may be Internal or External to the policy system.
subclass of: Action
subclass of: Restriction
  some values from: PolActionArgument
  on property: hasActionArgument
equivalent class: ResTriggerEvent

timer_identifier
type: Class
subclass of: PolActionArgument

variable0
type: Class
subclass of: ResVarVariable

variable_id
type: Class
disjoint with: variable_value
disjoint with: variable_last_modified_date
disjoint with: variable_applies_to
disjoint with: variable_owner
subclass of: PolicyVariableAttribute
comment: A PolicyVariable must have an ID to identify it uniquely for each VariableOwner. A VariableID must not begin with a numerical digit and must not contain the following special characters: ? / [ ] : , In addition, the identifier '*' is reserved for internal use (to mean all identifiers). An identifier may contain embedded spaces, and may also contain non-English characters (i.e. from the UTF-8 character set).

variable_value
type: Class
comment: The value of a variable is what it stands for.
disjoint with: variable_owner
disjoint with: variable_id
disjoint with: variable_last_modified_date
disjoint with: variable_applies_to
subclass of: PolicyVariableAttribute

variable_last_modified_date
type: Class
comment: The date the PolicyVariable was last changed.
disjoint with: variable_owner
disjoint with: variable_id
disjoint with: variable_applies_to
disjoint with: variable_value
subclass of: PolicyVariableAttribute

variable_applies_to
type: Class
subclass of: PolicyVariableAttribute
comment: The user or user group (domain) the PolicyVariable may apply to and be used by in policy construction.
disjoint with: variable_owner
disjoint with: variable_value
disjoint with: variable_id
disjoint with: variable_last_modified_date

variable_owner
type: Class
disjoint with: variable_applies_to
disjoint with: variable_last_modified_date
disjoint with: variable_value
disjoint with: variable_id
comment: VariableOwner is the address of the user that defined the variable. Can be the same as the VariableAppliesTo attribute, but may be different if one user (typically an administrator) defines variables that apply to other users. For example, the variabe 'holidays' may list the public holidays for a current year in a particular organisation.
subclass of: PolicyVariableAttribute

PolicyVariableAttribute
type: Class
equivalent class: Class
  union of: variable_value
  union of: variable_owner
  union of: variable_last_modified_date
  union of: variable_id
  union of: variable_applies_to
comment: Attribute associated with a PolicyVariable.

policy_owner
type: Class
subclass of: RequiredAttribute
disjoint with: policy_last_modified_date
disjoint with: policy_enabled
disjoint with: policy_applies_to
disjoint with: policy_id
comment: Address of person the policy document belongs to.

policy_last_modified_date
type: Class
subclass of: RequiredAttribute
comment: The date and time the policy document was last modified/changed.
disjoint with: policy_enabled
disjoint with: policy_applies_to
disjoint with: policy_owner
disjoint with: policy_id

policy_enabled
type: Class
comment: A Boolean flag to indicate whether the Policy is enabled. If enabled, the system should consider the Policy, otherwise the Policy will be ignored.
disjoint with: policy_applies_to
disjoint with: policy_owner
disjoint with: policy_last_modified_date
disjoint with: policy_id
subclass of: RequiredAttribute

policy_applies_to
type: Class
disjoint with: policy_last_modified_date
disjoint with: policy_id
disjoint with: policy_owner
disjoint with: policy_enabled
subclass of: RequiredAttribute
comment: The address of the person or group the Policy applies to. In general, this will refer to a domain. It can be one user, one domain, or a list of users and domiains. It can also refer to a domain symbolically by a PolicyVariable name (e.g. @stir.ac.uk refers to anyone in Stirling University).

policy_id
type: Class
disjoint with: policy_last_modified_date
disjoint with: policy_owner
disjoint with: policy_enabled
disjoint with: policy_applies_to
comment: The ID uniquely identifies the PolicyOwner.
subclass of: RequiredAttribute

PolActionArgument
type: Class
subclass of: Argument
comment: Value passed to an Action as a parameter.
disjoint with: PolTriggerArgument

Argument
type: Class
comment: A value used as a parameter to a compnent such as an Action or TriggerEvent rule. The argument may take the form a PolicyVariable.

ge
type: Class
disjoint with: out
disjoint with: lt
disjoint with: eq
disjoint with: gt
disjoint with: le
disjoint with: in
disjoint with: ne
subclass of: NamedConditionOp
comment: Comparison operator.

out
type: Class
disjoint with: ne
disjoint with: gt
disjoint with: eq
subclass of: NamedConditionOp
disjoint with: lt
disjoint with: le
disjoint with: in
comment: Has meaning 'not a substring of' or 'not among values in a list'. Meaning is dependant on the type of ConditionParameter used. Inverse meaning to 'In' operator.
disjoint with: ge

lt
type: Class
disjoint with: ne
comment: Comparison operator.
disjoint with: out
disjoint with: eq
disjoint with: le
disjoint with: in
subclass of: NamedConditionOp
disjoint with: gt
disjoint with: ge

eq
type: Class
disjoint with: lt
disjoint with: le
disjoint with: gt
disjoint with: out
disjoint with: in
disjoint with: ne
comment: Comparison operator.
disjoint with: ge
subclass of: NamedConditionOp

gt
type: Class
disjoint with: eq
disjoint with: in
comment: Comparison operator.
disjoint with: out
disjoint with: le
disjoint with: ge
disjoint with: ne
subclass of: NamedConditionOp
disjoint with: lt

le
type: Class
disjoint with: lt
disjoint with: out
disjoint with: ne
disjoint with: eq
subclass of: NamedConditionOp
disjoint with: gt
disjoint with: ge
comment: Comparison operator.
disjoint with: in

in
type: Class
subclass of: NamedConditionOp
comment: Has meaning 'a substring of' or 'among values in a list'. Meaning is dependant on the type of ConditionParameter used. Inverse meaning to 'Out' operator.
disjoint with: le
disjoint with: out
disjoint with: ge
disjoint with: ne
disjoint with: eq
disjoint with: lt
disjoint with: gt

ne
type: Class
disjoint with: lt
disjoint with: gt
disjoint with: out
disjoint with: le
disjoint with: eq
disjoint with: ge
comment: Comparison operator.
disjoint with: in
subclass of: NamedConditionOp

address
type: Class
subclass of: PolActionArgument

PolicyDocument
type: Class
subclass of: Restriction
  on property: hasPolicyVariable
  min cardinality: 0
subclass of: Restriction
  on property: hasPolicy
  min cardinality: 0
subclass of: Restriction
  some values from: PolicyVariable
  on property: hasPolicyVariable
subclass of: Thing
subclass of: Restriction
  on property: hasPolicy
  some values from: Policy
comment: The highest level at which zero or more policies or policy variables are defined.

hasPermissibleParameter
type: ObjectProperty
comment: Links a TriggerEvent with a permitted ConditionParameter.
inverse of: isPermissibleParameterOf

hasPermissibleAction
type: ObjectProperty
comment: Links a TriggerEvent with a permitted Action.
inverse of: isPermissibleActionOf

PolConditionParameter
type: Class
comment: Value established by a TriggerEvent.
subclass of: ConditionParameter

specific_res_action
type: Class
subclass of: res_action

duration
type: Class
index: 2
subclass of: PolConditionArgument

preference0
type: Class
subclass of: ResVarPreference

unguarded
type: Class
comment: Unguarded choice provides more flexibility over guarded choice as both rules will be tested for applicability. If only one of the two policy rules is applicable, this will be chosen. If both are applicable, one may be chosen at random.
disjoint with: parallel
disjoint with: guarded
disjoint with: sequential
subclass of: NamedPolicyRuleCombOp

parallel
type: Class
disjoint with: unguarded
disjoint with: guarded
disjoint with: sequential
comment: Parallel composition of two rules allows indifference to be expressed with respect to the order of the two rules. Both rules are enforced, but the order in which this is done is not important.
subclass of: NamedPolicyRuleCombOp

guarded
type: Class
comment: When two rules are joined by the guarded choice operator, the execution engine will first evaluate the nested condition. If the guard evaluates to TRUE, the first of the two rules will be applied, otherwise the second. Once made, a guarded choice may not be undone even if confilct prevents the resulting rule from being executed.
disjoint with: sequential
disjoint with: parallel
disjoint with: unguarded
subclass of: NamedPolicyRuleCombOp

sequential
type: Class
subclass of: NamedPolicyRuleCombOp
comment: With sequentially composed policy rules, the rules are enforced in the specified order. This involves traversing the structure, determining if the first rule in the sequence is applicable. If so the first rule is applied, otherwise we check the second rule. Note the sencond rule will only be checked if the first rule is not applicable.
disjoint with: guarded
disjoint with: unguarded
disjoint with: parallel

PolTriggerEvent
type: Class
comment: A TriggerEvent is some internal or external event which a policy can act upon. An TriggerEvent may be Internal or External to the policy system. A TriggerEvent must hold also reference to a particular UserLevel and, optionally, one or two arguments.
subclass of: Restriction
  on property: hasPermissibleAction
  some values from: pol_action
subclass of: TriggerEvent
subclass of: Restriction
  on property: hasPermissibleParameter
  some values from: PolConditionParameter
subclass of: Restriction
  on property: hasTriggerArgument
  some values from: PolTriggerArgument

stop_timer
type: Class
comment: stop the timer with the given identifier
subclass of: Restriction
  on property: hasSimilarActions
  some values from: SimilarAction
subclass of: pol_action
subclass of: Restriction
  on property: hasActionArgument
  some values from: timer_identifier
subclass of: Restriction
  on property: hasActionArgument
  cardinality: 1

StandardPolicy
type: Class
subclass of: Restriction
  some values from: RequiredAttribute
  on property: hasPolicyAttribute
subclass of: Restriction
  on property: hasPolicyAttribute
  some values from: OptionalAttribute
subclass of: Restriction
  on property: hasOptionalPolicyAttribute
  min cardinality: 0
subclass of: Restriction
  min cardinality: 1
  on property: hasPolicyRule
subclass of: Restriction
  on property: hasPolicyRule
  some values from: Policy Rule
subclass of: Policy
comment: The main object of the policy description language. A Policy must have an instance of every defined RequiredPolicyAttribute, and may have additional instances of OptionalPolicyAttribute.

Policy Rule
type: Class
subclass of: Restriction
  on property: hasCondition
  some values from: PolCondition
subclass of: Restriction
  on property: hasTriggerEvent
  some values from: PolTriggerEvent
subclass of: Restriction
  some values from: pol_action
  on property: hasAction
subclass of: Restriction
  min cardinality: 0
  on property: hasCondition
comment: Has associated instances of TriggerEvent, Condition and Action. A PolicyRule may omit a TriggerEvent and a Condition, but must be associated with at least one Action.
subclass of: Restriction
  min cardinality: 1
  on property: hasAction
subclass of: PolicyRule
subclass of: Restriction
  on property: hasTriggerEvent
  min cardinality: 0

Condition
type: Class
subclass of: Restriction
  cardinality: 1
  on property: hasConditionValue
subclass of: Restriction
  cardinality: 1
  on property: hasConditionParameter
subclass of: Restriction
  cardinality: 1
  on property: hasConditionOperator
subclass of: Restriction
  on property: hasConditionValue
  some values from: ConditionValue
subclass of: Restriction
  some values from: ConditionOperator
  on property: hasConditionOperator
subclass of: Restriction
  on property: hasConditionParameter
  some values from: ConditionParameter
subclass of: Thing

day
type: Class
comment: A day of the week, numbered from 1 (Sunday) to 7 (Saturday).
subclass of: PolConditionParameter

ConditionOperator
type: Class
comment: An Operator specified as part of a Condition rule to perform some check. There are a number of fixed operators as defined by the various subclasses.
disjoint with: CombinationOperator

message
type: Class
subclass of: PolActionArgument

log_event
type: Class
subclass of: Restriction
  on property: hasSimilarActions
  some values from: SimilarAction
subclass of: pol_action
subclass of: Restriction
  some values from: message
  on property: hasActionArgument
subclass of: Restriction
  on property: hasActionArgument
  cardinality: 1
comment: log the given message

trigger_count
type: Class
comment: trigger_count(trigger,duration). Counts the number of matching triggers in the state history for the given time period. Is incorporated as a policy condition, the parameter being the entire expression count(trigger,duration)
subclass of: Restriction
  cardinality: 2
  on property: hasConditionParameterArgument
subclass of: Restriction
  on property: hasConditionParameterArgument
  some values from: duration
subclass of: Restriction
  on property: hasConditionParameterArgument
  some values from: trigger
subclass of: PolConditionParameter

trigger
type: Class
subclass of: Restriction
  on property: hasConditionParameterArgument
  some values from: PolTriggerEvent
subclass of: PolConditionArgument
index: 1

or
type: Class
comment: Boolean 'or' combination operator.
subclass of: NamedConditionCombOp
disjoint with: and

and
type: Class
disjoint with: or
subclass of: NamedConditionCombOp
comment: Boolean 'and' combination operator.

fuzzy_output
type: Class
comment: fuzzy output value

derived_value
type: Class
comment: derived value

minimise
type: Class
subclass of: GoalAction
subclass of: goal_type

goal_type
type: Class
comment: Type of goal. e.g. Maximise or Minimise. This may be extended to allow other types of goal should the domain allow.

fuzzy_input
type: Class
comment: fuzzy input value

PolVariable
type: Class
subclass of: PolicyVariable
comment: PolicyVariable is a name for a value used within a PolicyDocument.

date
type: Class
comment: The current date (format YYYY-MM-DD) corresponding to the current moment.
subclass of: PolConditionParameter

variable_identifier
type: Class
subclass of: PolActionArgument

unset_variable
type: Class
comment: unset the variable with the given identifier
subclass of: Restriction
  on property: hasSimilarActions
  some values from: SimilarAction
subclass of: pol_action
subclass of: Restriction
  some values from: variable_identifier
  on property: hasActionArgument
subclass of: Restriction
  cardinality: 1
  on property: hasActionArgument

start_timer
type: Class
comment: start a new timer with the given identifier and for the specified duration
subclass of: Restriction
  on property: hasSimilarActions
  some values from: SimilarAction
subclass of: Restriction
  on property: hasPartialParameters
  some values from: PartialParameter
subclass of: pol_action
subclass of: Restriction
  on property: hasActionArgument
  some values from: timer_identifier
subclass of: Restriction
  on property: hasActionArgument
  some values from: timer_period
subclass of: Restriction
  on property: hasActionArgument
  cardinality: 2

timer_period
type: Class
subclass of: PolActionArgument

uncontrolled_value
type: Class
comment: uncontrolled value

and
type: Class
comment: Boolean 'and' combination operator.
subclass of: NamedTriggerCombOp
disjoint with: or

or
type: Class
disjoint with: and
subclass of: NamedTriggerCombOp
comment: Boolean 'or' combination operator.

expression
type: Class
subclass of: PolActionArgument
comment: Intended for use as a parameter argument to the policy action set_variable.

send_message
type: Class
comment: send a message to the given destination URI with the given content
subclass of: Restriction
  on property: hasSimilarActions
  some values from: SimilarAction
subclass of: pol_action
subclass of: Restriction
  on property: hasActionArgument
  some values from: address
subclass of: Restriction
  some values from: message
  on property: hasActionArgument
subclass of: Restriction
  cardinality: 2
  on property: hasActionArgument

PolCondition
type: Class
subclass of: Restriction
  all values from: NamedConditionOp
  on property: hasConditionOperator
subclass of: Restriction
  all values from: PolConditionValue
  on property: hasConditionValue
subclass of: Condition
subclass of: Restriction
  all values from: PolConditionParameter
  on property: hasConditionParameter
comment: A PolicyRule may contain either a single Condition or a composite of conditions. A Condition must have exactly 1 ConditionParameter, ConditionOperator and ConditionValue associated with it.

PolConditionValue
type: Class
subclass of: ConditionValue
comment: Value defined in the policy.

goal_measure
type: Class

time
type: Class
comment: The current time (format HH:MM:SS) corresponding to the current moment.
subclass of: PolConditionParameter

action
type: Class
subclass of: PolConditionArgument
subclass of: Restriction
  some values from: pol_action
  on property: hasConditionParameterArgument
index: 1

action_count
type: Class
subclass of: Restriction
  on property: hasConditionParameterArgument
  cardinality: 2
subclass of: Restriction
  some values from: duration
  on property: hasConditionParameterArgument
subclass of: PolConditionParameter
subclass of: Restriction
  on property: hasConditionParameterArgument
  some values from: action
comment: action_count(action,duration). Counts the number of matching actions in the state history for the given time period. Is incorporated as a policy condition, the parameter being the entire expression count(action,duration)

maximise
type: Class
subclass of: GoalAction
subclass of: goal_type

set_variable
type: Class
subclass of: pol_action
subclass of: Restriction
  on property: hasSimilarActions
  some values from: SimilarAction
subclass of: Restriction
  on property: hasPartialParameters
  some values from: PartialParameter
subclass of: Restriction
  on property: hasActionArgument
  some values from: variable_identifier
subclass of: Restriction
  on property: hasActionArgument
  some values from: expression
subclass of: Restriction
  cardinality: 2
  on property: hasActionArgument
comment: set the given variable identifier to the given expression

receive_message
type: Class
subclass of: Restriction
  cardinality: 2
  on property: hasTriggerArgument
subclass of: Restriction
  on property: hasPermissibleAction
  some values from: unset_variable
subclass of: Restriction
  on property: hasPermissibleParameter
  some values from: date
comment: Event when a message arrives (e.g. email or SMS)
subclass of: Restriction
  some values from: set_variable
  on property: hasPermissibleAction
subclass of: Restriction
  some values from: URITriggerArg
  on property: hasTriggerArgument
subclass of: PolTriggerEvent
subclass of: Restriction
  on property: hasPermissibleAction
  some values from: restart_timer
subclass of: Restriction
  some values from: log_event
  on property: hasPermissibleAction
subclass of: Restriction
  on property: hasPermissibleParameter
  some values from: action_count
subclass of: Restriction
  on property: hasPermissibleParameter
  some values from: day
subclass of: Restriction
  on property: hasTriggerArgument
  some values from: MessageTriggerArg
subclass of: Restriction
  some values from: start_timer
  on property: hasPermissibleAction
subclass of: Restriction
  some values from: send_message
  on property: hasPermissibleAction
subclass of: Restriction
  some values from: time
  on property: hasPermissibleParameter
subclass of: Restriction
  some values from: stop_timer
  on property: hasPermissibleAction
subclass of: Restriction
  some values from: trigger_count
  on property: hasPermissibleParameter

timer_expiry
type: Class
subclass of: Restriction
  on property: hasTriggerArgument
  some values from: TimerIdentifierTriggerArg
subclass of: Restriction
  some values from: unset_variable
  on property: hasPermissibleAction
subclass of: Restriction
  on property: hasPermissibleParameter
  some values from: date
subclass of: Restriction
  on property: hasPermissibleAction
  some values from: stop_timer
subclass of: Restriction
  some values from: send_message
  on property: hasPermissibleAction
subclass of: Restriction
  some values from: action_count
  on property: hasPermissibleParameter
subclass of: Restriction
  on property: hasPermissibleAction
  some values from: set_variable
subclass of: Restriction
  on property: hasPermissibleParameter
  some values from: trigger_count
subclass of: PolTriggerEvent
comment: Event when a timer with a particular timer identifier counts down to zero
subclass of: Restriction
  on property: hasPermissibleParameter
  some values from: time
subclass of: Restriction
  some values from: day
  on property: hasPermissibleParameter
subclass of: Restriction
  some values from: restart_timer
  on property: hasPermissibleAction
subclass of: Restriction
  cardinality: 1
  on property: hasTriggerArgument
subclass of: Restriction
  some values from: start_timer
  on property: hasPermissibleAction
subclass of: Restriction
  some values from: log_event
  on property: hasPermissibleAction

controlled_value
type: Class
comment: controlled value

index
type: AnnotationProperty
comment: Used to specifiy the index number of an item. e.g. to specify the first, second, etc. parameter in a function