;;; This is the first complete version of the Enterprise Ontology code, in the
;;; sense that every term is now defined. There are countless ways that it may
;;; be improved, and there are no doubt errors as yet undiscovered. In many
;;; places, we have noted specific problems that we are aware of and suggest
;;; ways that might help fix them for future versions.
;;; -- Mike Uschold 13 June 1996 --
;;; Copyright AIAI, The University of Edinburgh, 1995 and 1996.
;;; Permission to use this ontology for any non-commercial purpose or
;;; purposes is granted as long as credit is given to AIAI, The University
;;; of Edinburgh, as the authors of this work, and as long as this notice
;;; remains intact on any derivative work.
;;;
;;; The ontology was developed in the Enterprise project (IED4/1/8032),
;;; which is supported by the UK's DTI under the Intelligent Systems
;;; Integration Programme. The project partners are AIAI, IBM, Lloyd's
;;; Register, Logica UK Limited and Unilever.
(in-package "ONTOLINGUA-USER")
(define-ontology
Enterprise-V1.0
(frame-ontology simple-time) ;;; which in turn includes various KIF stuff
"This is the Ontology for the
Enterprise Project .
Conceptually, the Enterprise Ontology it is divided
into a number of main sections -- these are summarised below.
ACTIVITIES and PROCESSES:
The central term is Activity. This is intended to capture the notion of
anything that involves doing, in particular including action. The concept of
Activity is closely linked with the idea of the Doer, which may be a Person,
Organisational-Unit or Machine. These terms are defined in the Organisation
section and are collectively referred to as Potential-Actor s.
Have-Capability denotes the ability of a Potential-Actor
to be the
Doer of an Activity (or Skill if the Doer is a
Person). Actors may have other Roles in respect of an Activity such as
Activity-Owner.
Also closely related to Activity is Resource, which is something used or
consumed in an Activity. An Activity can also have outputs or Effects. An
Activity is linked to a Time-Interval, which is defined in the Time section.
An Activity may be large and complex and take a long
time. This may be represented as composition of many Sub-Activity s.
An Activity can obviously have happened in the past and may be happening in the
present. The term can also be used to refer to a hypothetical future
Activity. However, there is a need to refer explicitly to specifications or
plans for Activities. This is provided by the term Activity-Spec. An
Activity-Spec specifies at some level of detail one or more possible
Activities. If the Activity-Spec has an Intended-Purpose, it is called a Plan.
The concept of repeatability of an Activity or Plan is captured in the term
Process-Specification.
Control of doing of Activities is important to enterprises. This is provided by
the Relationship Hold-Authority denoting that an Actor has the right to
perform the Activities as specified in an Activity-Spec.
ORGANISATION:
Central to the Organisation section are concepts of Legal-Entity and
ORGANISATIONAL UNIT (abbreviated as OU). Both of these refer to things which
have a `gestalt' whether they are individual or composite. They differ in that
a Legal-Entity is recognised as having rights and responsibilities in the world
at large and by legal jurisdictions in particular, whereas Organisational-Unit
need only have full recognition within an organisation.
Legal-Entity includes Person and Corporation. Larger Legal-Entities may wholly
own other smaller Legal-Entities. An Organisational-Unit may be large and
complex, even transcending Legal-Entities. Large OUs will normally be seen as
being made up from smaller ones. The smallest may correspond to a single
Person, in fact a particular Person could be seen as corresponding with more
than one small OU.
A Machine is a non-human, non- Legal-Entity that may play certain Roles
otherwise played by a Person or Ou (e.g. perform an Activity).
The Ownership of rights and responsibilities may only, from the legal point of
view, lie with a Legal-Entity. Within an organisation, rights and
responsibilities for Resources may be allocated to OUs. Therefore Ownership is
defined to include this, with Legal-Ownership and Non-Legal-Ownership defined
to enable the distinction where needed. OUs may be responsible for Activities.
Within an organisation the management structure is represented by Management
Links. The term Manage represents assigning Purposes to OUs. An Organisational
Structure will be defined as a pattern of Management Links between OUs. This
can include multiple Management Links into any one OU with constraints on the
different type of Purposes assigned through each link.
STRATEGY:
The central concept of the Strategy section is Purpose. Purpose captures the
idea either of something which a PLAN can HELP ACHIEVE or that an ORGANISATION
UNIT can be responsible for. In fact it includes any kind of PURPOSE, whether
on a level of organisation and time scale which will normally be called
strategic, or detailed and short term.
Like an OU, a Purpose can be composed or decomposed. That is, one statement of
Purpose may relate to something which can also be seen to Help-Achieve some
grander Purpose. By this means, a spectrum of widely used terms like Vision,
Mission, Goal, and Objective can be represented without there being shared
agreement on precisely how these terms are used.
Strategy is defined as a Plan to Achieve a high-level Purpose.
Based on the concept of PLAN from the Activity section, the concepts key
to Strategic Planning can be represented with the
terms Decision, Assumption, Risk, and various types of Factor.
MARKETING:
The central concept of the Marketing section is Sale. A Sale is an agreement
between two Legal-Entities for the exchange of a Product for a Sale-Price.
Normally the Product is a good or service and the Sale-Price is monetary,
however other possibilities are included. The Legal-Entities play the (usually
distinct) Roles of Vendor and Customer. A Sale can have been agreed in the
past, and a future Potential-Sale can be envisaged, whether or not
the actual Product can be identified, or even exists.
The Market is all Sales and Potential Sales within a scope of interest. The
Market may include Sales by Competitors. The Market may be decomposed into
Market Segments in many ways in many levels of detail. This can be done by any
properties of the Product, Vendor, Customer, Sale-Price or of anything else
associated with a Sale. These properties are Segmentation-Variables.
Analysis of a Market may involve understanding of Features of Products,
Needs of Customers, and Images of Brands, Products, or Vendors.
Promotions are Activities whose Purposes relate to the Image in a
Market."
:io-package
"ONTOLINGUA-USER"
:issues
((:Status "
- This is the first complete version of the Enterprise Ontology code, in the
sense that every term is now defined. There are countless ways that it may
be improved, and there are no doubt errors as yet undiscovered. In many
places, we have noted specific problems that we are aware of and suggest
ways that might help fix them for future versions.
- This version is consistent and up to date with respect to version 1.1 of
the natural language description of the Enterprise Ontology (postscript 100k).
- The main difference between this version and V0.2 is the addition of
various marketing terms.
- Below we give details of a variety of some major and minor
additions, elaborations and alterations from previous versions.
- It has been partially checked by one independent party, but
errors no doubt remain, most (we hope) fairly minor.
")
(:Acknowledgements
"
-
Our experiences using Ontolingua and the Ontology Editor provided by
Stanford University's Knowledge Systems Lab (KSL)
- This formal version of the Enterprise Ontology
has benefited from many useful comments and suggestions by
Martin King, Piet-Hein Speel, Ian Harrison and Austin Tate.
- Martin King, Stuart Moralee and Yannis
Zorgios played a major role in producing the natural language version of the
Enterprise Ontology on which this formal version is based.
")
(:Further-Information "A natural language version of this
ontology, which served as the specification for this formalisation is available
from
The Enterprise Ontology Web Page.")
(:Request-For-Feedback "We encourage feedback of any kind.
Please forward any comments you may have about this ontology to
m.uschold@ed.ac.uk")
(:Copyright "Artificial Intelligence
Applications Institute, The University of Edinburgh 1995 and 1996.
Permission to use this ontology for any non-commercial purpose or
purposes is granted as long as credit is given to AIAI, The University
of Edinburgh, as the authors of this work, and as long as this notice
remains intact on any derivative work.
The ontology was developed in the Enterprise project (IED4/1/8032),
which is supported by the UK's DTI under the Intelligent Systems
Integration Programme. The project partners are AIAI, IBM, Lloyd's
Register, Logica UK Limited and Unilever.")
(:Changes "From Version 0.2
;;; A number of role classes were not specified as instances of
;;; Role-Class or as subclasses of Qua-Entity or Actor.
;;; This has been fixed. Affected classes are:
;;; Stakeholder, Shareholder, Purpose-Holder, Partner and Owner.
;;; OOPS: this was right in 1st place, they were instances of Actor and
;;; thus also of Qua-Entity; it is redundant to also specify as Qua-Entity
- New meta-class called Set-Class used to help define Market_Segment
- TODO: simplify state of affairs stuff to be in line with text document.
")
(:CODING-PROCESS
"This code was created using version 1.0 of
a natural language document as a
specification. A small number of changes to the original specification
identified during the coding process have been incorporated in a new version
(1.1) which is available from
The Enterprise Ontology Web Page. There is a new section describing the
coding process. Here we include a few additional technical details.
Sometimes make something a frame rather than a normal entity. E.g.
ownership, sale, partnership, shareholding etc. but not other things.
Usually there is no particular reason for doing it in one way instead of
the other; it is primarily a matter of convenience.
We do not regard any of these choices as sacred, and we may well have
erred on the side of too much detail. But at least we resisted the
temptation to define Risk as:
(<=> (Risk ?risk)
(exists (?purpose ?actor)
(and (State-of-affairs ?purpose)
(Potential-Actor ?actor)
(Intended-Purpose ?actor ?purpose)
(Believe ?actor
(Possible (Hinder ?risk ?purpose))))) )
which is a fairly direct translation of the text into Highest Order Logic.")
(:TODO "Split up this ontology into modules, if any can be identified.
One obvious
candidate would be for things like State-Of-Affairs and
Role-Class and could be called Enterprise-Meta")
(:TODO "Check every occurrence of the words ENTITY, RELATIONSHIP and
ATTRIBUTE to
make sure is consistent with how these terms are used in the code.
Much of existing text was lifted
directly form natural language version, and is thus out of date. ")
(:TODO "Consider defining the two relations:
Hold-Over-Time-Range between a State-Of-Affairs and a Time-Range
- Holds-At-Time-Point between a State-Of-Affairs and a Time-Point
and using these to get rid of the When-Hold-Spec stuff and model their meaning
more directly and meaningfully.
This would also enable Pre-Condition and Effect to again
be simple binary relations between an Activity and a State-of-Affairs where
the State-Of-Affairs would be restricted to use these new relations.")
(:TODO "Add Opening summary for Meta-Ontology as per other main areas.")
(:BIG-CHANGE "Pre-Condition and Effect changed to be not only the
State-Of-Affairs but also to include the specification of when the
State-Of-Affairs is required to hold. The specific changes required to do this
are:
** Add new class: When-Hold-Spec which is union of Pre-Condition-When-Hold and
Effect-When-Hold
** Add new class: PLANNING-CONSTRAINT which has two slots -- of types:
When-Hold-Spec and State-Of-Affairs
It's two major sub-classes are Pre-Condition and Effect (which inherit both
slots -- but whose slot-value-types are differently restricted i.e.
Precondition-When-Hold and Effect-When-Hold)
** Change the slot-value-type restriction of Actual-Pre-Condition[and Effect]
and Specified-Pre-Condition[and Effect] from State-Of-Affairs to the new
classes: Pre-Condition and Effect (where specified as template-slots in the
definition of Activity and Activity-Spec).
Change definition of Specified-[Actual-]Pre-Condition[Effect] to binary
relations whose second argument is typed be Pre-Condition and Effect instead of
State-Of-Affairs" )
(:BIG-CHANGE "Time Ontology Integrated.
** SIMPLE-TIME replaces JAT-GENERIC due to ontology library re-organisation.
** SIMPLE-TIME defines Time-Range, which is identical to what we were calling
Time-Interval
** I Removed definitions of Specified-[Actual-]T-Begin and
Specified-[Actual-]T-End;
It was replaced by a single slot called Specified-[Actual-]-Activity-Interval
which is of type: Time-Range. The existing slots of Time-Range give the start
and end times which correspond to what T-Begin and T-End were.")
(:BIG-CHANGE "New across the board distinction for relationships involving
Activity-Spec and Activity. Everything for the former is 'Specified' and
everything for the latter is 'Actual'. Any Relationship that involved exactly
one or explicitly both of Activity and/or Activity-Spec now is split into two
separate Relationships, one for each.")
))
(in-ontology (quote Enterprise-V1.0))
;;; **********************************************************************
;;; ENTERPRISE META-ONTOLOGY
;;; **********************************************************************
;;; EO-Entity
(define-class EO-Entity
(?x)
"A fundamental thing in the domain being modelled."
:def
(and (Individual-Thing ?x))
:issues
("An Entity may participate in Relationships with other Entities."
(:Examples "a Person; a Plan")) )
;;; State-Of-Affairs
(define-class State-Of-Affairs
(?soa)
"A situation. It is described by or consists of one or
more statements asserting that a RELATIONSHIP holds
between particular ENTITIES.
Syntactically, a State-Of-Affairs is either
1. a Relational Sentence [Relsent@KIf-Meta] --or--
2. a non-empty list of Relational Sentences.
A Relsent is a list of the form: [R ?x1 ?x2 ... xn] where R is a relation [or
function] constant; each xi is a term; and n>0"
:iff-def
(Restricted-List-Of-Relsents ?soa (setofall ?r (Relation ?r)))
:issues
((:Example "((Hold-Authority joe-bloggs sign-checks)
(Partner-Of Tom Ellen))")
(:Warning "There may be a level problem here mixing up the
linguistic syntactical aspect with the semantics of the relations etc.")
(:IMPORTANT "For the purpose of the Enterprise Ontology, a main use
of the State-of-Affairs class is to restrict the types of arguments in
relations.
This definition is specifically crafted to make it convenient to limit such
type restrictions to subclasses of State-Of-Affairs which only
refer to certain Relations or Classes of Relations.
E.g. For automatic planning applications it may be convenient to define
a sub-class of State-Of-Affairs called World-State that
only included Relations that expressed world state conditions.
This could be done as follows:
* Create a subclass of Relation called World-State-Relation and then make
all world
state relations instances of this Subclass.
* Then define World-State as a subclass of State-Of-Affairs such that:
(<=> (World-State ?soa)
(Restricted-List-Of-Relsents ?soa
(setofall ?r (World-State-Relation ?r))))
Where the restriction applies to a small number of Relations, it may be more
convenient to name each one individually. For example,
the following defines a subclass of state-of-affairs to be restricted
to a single relation:
(define-frame Authority-Condition
:own-slots
((Documentation \"An State-Of-Affairs that expresses information using the
Hold-Authority relation.\")
(Subclass-Of State-Of-Affairs) (Instance-Of Class))
:axioms
(<=> (Authority-Condition ?soa)
(Restricted-List-Of-Relsents ?soa ('Hold-Authority) )
")
(:OOPS "In fact, this is not quite right. The restriction:
(Restricted-List-Of-Relsents ?soa ('Hold-Authority))
precludes things like:
(or (hold-authority joe sign-checks)
(hold-authority jane sign-checks) )
which ought to be allowed. So what is needed is a relation that restricts
all R's to be a certain set; but also allows logical combinations of same.
This may involve re-defining things in a manner very similar to in Kif-Meta.
")
(:See-Also "Relsent, defined in Kif-Meta")
"We use the word 'Achieve' to refer to the realisation or
bringing about of a State-Of-Affairs"
"When the State-Of-Affairs is a Purpose, we might say it is
`Accomplished' when achievement occurs.") )
;;; Restricted-List-Of-Relsents
(define-relation Restricted-List-Of-Relsents (?list ?rs)
"A Relationship between two lists ?List and ?Rs whereby:
1 - the List ?List is either
a. a Relational Sentence [Relsent@KIf-Meta] or
b. a List of Relational Sentences
--and--
2 - in either case, for every Relsent comprising ?List, the corresponding R
is an item in ?Rs, a List of Relation and/or Function constants, "
:iff-def
(and (List ?list)
(or (and (Relsent ?list) ;;; For case when ?list is a single Relsent
(Restricted-Relsent ?list ?rs))
;;; The general case
(and (Forall (?relsent) (=> (Item ?relsent ?list)
(Restricted-Relsent ?relsent ?rs)))
(>= (Length ?list) 1))))
:issues
("This Relation is defined for the purpose of defining the class:
State-Of-Affairs in
a general way. Also, and IMPORTANTLY, it enables convenient definition of
sub-classes of State-Of-Affairs that are restricted to only certain Relations."
(:See-Also "Notes under the definition of State-Of-Affairs")
"The type checking for ?Rs is done in the Relation Restricted-Relsent"))
;;; Restricted-Relsent
(define-relation Restricted-Relsent (?relsent ?rs)
"A Relationship between a Relational Sentence ?Relsent and a list ?Rs
whereby
1. - ?Rs is a list of relation or function constants.
--and--
2. the R in ?Relsent is an item in the list ?Rs"
:iff-def
(and (Relsent ?relsent)
(Forall (?r) (=> (item ?r ?rs)
(or (Relconst ?r) (Funconst ?r))))
(Exists (?r ?args) ;;; note this ?r is independent from the
(and (item ?r ?rs) ;;; previous one
(= ?relsent (Cons ?r ?args))))) )
;;; Role-Class
(define-frame Role-Class
:own-slots
((Documentation "Role-Class is a meta-class. Its instances are classes
defined to be the set of all Entities playing a particular Role in some
Relation.
To the extent that updates may occur which change the particular set of
tuples comprising a relation, being an instance of such a class is dynamically
determined.")
(Subclass-Of Class))
:axioms
(<=> (Role-Class ?rc)
(Exists (?r ?n)
(and (relation ?r)
(natural ?n)
(forall (?z) (<=> (instance-of ?z ?rc)
(exists (?args)
(and (list ?args)
(holds ?r ?args)
(= (nth ?args ?n) ?z))))))))
:issues
("Strictly, this definition is not quite right. It does not cover the case
where a Role-Class may be defined in terms of more than one Role.
An entity is an instance of such a Role-Class if it is in one of two or more
Roles in one or more Relations.
It also does not cover the case when"
"An odd case is when a Class is defined as the union of a Role-Class and
a non Role-Class; is this a Role-Class or not?"
"?"
"Why not have Role-Class a super-class of various Role-Classes such as
Purpose and Resource?
I can think of no good reasons for it to be one way or the other, thus
choice was mainly arbitrary. The other way would entail use of
a different name for the superclass so
as to suggest the right meaning (e.g. Role-Player, or Role-Playing-Entity)."
(:Example "Given Classes Person and Document
are defined, we show below how a binary
relation Read-Document and the Role-Class Reader might be defined.
;;; Read-Document
(define-relation Read-Document (?person ?document)
\"A Relationship between an Person and a Document whereby the Person
reads the Document\"
:def
(and (Person ?person) (Document ?document)) )
;;; Reader
(define-frame Reader
:own-slots
((Documentation \"a Person in an Read-Document Relationship with
some Document\")
(Instance-Of Role-Class) (Subclass-Of Qua-Entity))
:axioms
(<=> (Reader ?person)
(and (Person ?person)
(exists (?document) (Read-Document ?person ?document)))) )
Note that the axiom above is equivalent to how it might be expressed using
the general form given for defining a Role-Class:
(<=> (Reader ?person)
(exists (?args)
(and (list ?args)
(holds ?Read-Document ?args)
(= (nth ?args 1) ?person))))
Note also that the wording used to define role-classes is:
'The Person in a R relationship.' rather than
'The Role of a Person that ... in a R relationship.' which was used in
the natural language version. This reflects that fact that we do not
explicitly define what are called roles in the NL version; rather we
define Role-Classes in terms of such roles which are [only] implicit in
the definition of relations.")) )
;;; Qua-Entity
(define-frame Qua-Entity
:own-slots
((Documentation
"An EO-Entity that is defined in terms of the role it plays in one or
more Relationships.
- Qua-Entity is the most general Role-Class
- Every instance of Role-Class is a subclass of Qua-Entity.
;;;
- every Qua-Entity is an instance of at least one Role-Class
")
(Instance-Of Role-Class) (SubClass-Of EO-Entity))
:axioms
(<=> (Qua-Entity ?x)
(Exists (?rc)
(and (Instance-Of ?rc Role-Class)
(Instance-Of ?x ?rc))))
:issues
("This is an abstract class provided mainly for convenience, so it is easy
to see what all the Role-Classes are."
"It is up to Ontology developers, users and maintainers to make
sure each Role-Class is declared to be a subclass of Qua-Entity or of
Actor, which is itself a subclass of Qua-Entity."
) )
;;; Set-Class
(define-frame Set-Class
:own-slots
((Documentation "Set-Class is a meta-Class. Its instances are special
kinds of classes, all of whose instances
are themselves sets (not Classes) such that every member of such a set
is specified to be a member of a certain Class.")
(Subclass-Of Class))
:axioms
(<=>
(Set-Class ?set-of-things)
(Exists (?thing)
(and (Class ?thing)
(forall (?things)
(<=> (instance-of ?things ?set-of-things)
(and (set ?things)
(forall (?x)
(=> (member ?x ?things)
(instance-of ?x ?thing)))))))))
:issues
("The Class which forms the basis for what sets are instances of the
Set-Class is called the `base class'."
"The denotation of a Set-Class is the power set of the denotation of its
base class."
"In a higher order logic, the set classes may be formed by
a type constructor function, which take as input the base class and returns
the corresponding set class.
Here, we use a naming convention to indicate this; the names of
all set classes are prefixed with the text `Set-of', as in Set-of-Customers"
(:Example "
(<=> (Set-of-Customers ?customers)
(and (set ?customers)
(forall (?x)
(=> (member ?x ?customers)
(instance-of ?x Customer)))))
")) )
;;; EO-Set
(define-frame EO-Set
:own-slots
((Documentation
"The most general Set-Class in the Enterprise Ontology.
Every instance of Set-Class is a subclass of EO-Set.")
(Instance-Of Set-Class) (SubClass-Of EO-Entity Set))
:axioms
(<=> (EO-Set ?x)
(Exists (?sc)
(and (Instance-Of ?sc Set-Class)
(Instance-Of ?x ?sc))))
:issues
("This is an abstract class provided mainly for convenience, so it is
easy to see what all the Set-Classes are."
"It is up to Ontology developers, users and maintainers to make
sure each instance of Set-Class is declared to be a subclass of EO-Set."))
;;; **********************************************************************
;;; ACTIVITY ONTOLOGY
;;; **********************************************************************
;;; Activity
(define-frame Activity
:own-slots
((Documentation
"Something done over a particular Time-Interval.
The following may pertain to an Activity:
* is performed by one or more Actual-Doer s;
* is decomposed into more detailed Sub-Activity s;
* Can-Use-Resource s;
* An Actor may Hold-Authority to perform it;
* there may be an Activity-Owner;
* has a measured efficiency.
")
(Instance-Of Class) (Subclass-Of Activity-Or-Spec))
:template-slots
((Actual-Activity-Interval (Minimum-Slot-Cardinality 0)
(Slot-Cardinality 1)
(Slot-Value-Type Time-Range))
(Actual-Pre-Condition (Minimum-Slot-Cardinality 1)
(Slot-Value-Type Pre-Condition))
(Actual-Effect (Minimum-Slot-Cardinality 1)
(Slot-Value-Type Effect))
(Activity-Status (Minimum-Slot-Cardinality 1)
(Slot-Value-Type Activity-State)))
:issues
("Informally, T-Begin refers to the time point when
the performance of an Activity commence; it corresponds to the Start-Time of
the Actual-Time-Interval"
"Informally, T-End refers to the time point when
the performance of an Activity is completed; it corresponds to the End-Time of
the Actual-Time-Interval"
"an Activity can have happened in the past, may be happening
in the present, and a hypothetical future Activity may be envisaged;"
"The word `something' in the definition is deliberately
general; we mean to include mental activities, for example"
"We wish to allow Purpose free Activity, such as water flowing
down a hill. An association between an Activity and a Purpose can be made by
matching the Intended-Purpose of a Plan to the Effect(s) of
Activities specified in the Plan."
"Activities may be informally classified as `strategic',
`tactical' or `operational' depending on the `level' of an associated Purpose
as characterised by the Help-Achieve Relationship between
Purpose s."
(:TODO "Say how this relates to definition in natural language
version. Some things have been excluded.")) )
;;; Specified-Activity-Interval
(define-relation Specified-Activity-Interval
(?activity-spec ?time-range)
"An attribute of an Activity-Spec constraining the time range
during which the execution of the Activity-Spec can take place."
:def
(and (Activity-Spec ?activity-spec)
(Time-Range ?time-range))
:issues
(:TODO "The second argument is not generally a time range, but
could be an interval or other constraint. This should be integrated with the
time ontology."))
;;; Actual-Activity-Interval
(define-relation Actual-Activity-Interval
(?activity ?time-range)
"An attribute of an Activity denoting the time-range over
which an Activity actually is performed."
:def
(and (Activity ?activity)
(Time-Range ?time-range)))
;;; Planning-Constraint
(define-frame Planning-Constraint
:own-slots
((Documentation
"A constraint used during planning. It contains two main things: 1) a
State-Of-Affairs that is required to be true for successful execution of some
activity or is made true by some activity; and 2) A specification of when
that State-Of-Affairs must be true.")
(Instance-Of Class)
(Subclass-Of EO-Entity))
:template-slots
((State-Description (Slot-Cardinality 1)
(Slot-Value-Type State-Of-Affairs))
(When-Hold (Slot-Cardinality 1)
(Slot-Value-Type When-Hold-Spec)))
:issues
("This is an abstract class created for convenience. What is more directly
useful are the two main sub-classes: Pre-Condition and Effect."))
;;; State-Description
(define-frame State-Description
:own-slots
((Arity 2) (Domain Planning-Constraint) (Instance-Of Binary-Relation)
(Range State-Of-Affairs))
:documentation
"The State-Of-Affairs in a Planning-Constraint")
;;; When-Hold
(define-frame When-Hold
:own-slots
((Arity 2) (Domain Planning-Constraint) (Instance-Of Binary-Relation)
(Range When-Hold-Spec))
:documentation
"The specification of when a State-Of-Affairs must be true in a
Planning-Constraint")
;;; When-Hold-Spec
(define-class When-Hold-Spec
(?x)
"A specification of when a State-Of-Affairs must hold in regards of
a Planning-Constraint"
:def
(and (Misc-Spec-Detail ?x))
:issues
("This is an abstract class created for convenience.
Pre-Condition-When-Hold and Effect-When-Hold are the more directly useful
subclasses."))
;;; Pre-Condition-When-Hold
(define-class Pre-Condition-When-Hold
(?x)
"A specification of when a pre-condition of an activity must
hold. Currently, there are 4 instances."
:def
(and (When-Hold-Spec ?x))
:issues
((:Todo "Consider making the meaning of the instances precise
in terms of time primitives.")))
;;; Effect-When-Hold
(define-class Effect-When-Hold
(?x)
"A specification of when an effect of an activity must
hold. There are exactly 3 special instances."
:def
(and (When-Hold-Spec ?x))
:issues
((:Todo "Consider making the meaning of the instances precise
in terms of time primitives.")) )
;;; Pre-Condition
(define-frame Pre-Condition
:own-slots
((Documentation
"A Planning-Constraint associated with a particular Activity or
Activity-Spec that is required to be true in order for the successful
performance or execution of the Activity or Activity-Spec.
It contains two main things: 1) a State-Of-Affairs; and
2) A specification of when that State-Of-Affairs must be true; this may be
one of: to hold immediately before T-Begin, immediately before T-End, or
throughout the whole Actual- or Specified-Activity-Interval")
(Instance-Of Class)
(Subclass-Of Planning-Constraint))
:template-slots
((State-Description (Slot-Cardinality 1)
(Slot-Value-Type State-Of-Affairs))
(When-Hold (Slot-Cardinality 1)
(Slot-Value-Type Pre-Condition-When-Hold))) )
;;; Effect
(define-frame Effect
:own-slots
((Documentation
"A Planning-Constraint associated with a particular Activity or
Activity-Spec that is required to be true in order for the successful
performance or execution of the Activity or Activity-Spec.
It contains two main things: 1) a State-Of-Affairs that is brought about,
or made true by the execution of the Activity or Activity-Spec;
2) A specification of when that State-Of-Affairs must be true; this may be
one of: to hold immediately after T-Begin, immediately after T-End, or
throughout the whole Actual- or Specified-Activity-Interval")
(Instance-Of Class)
(Subclass-Of Planning-Constraint))
:template-slots
((State-Description (Slot-Cardinality 1)
(Slot-Value-Type State-Of-Affairs))
(When-Hold (Slot-Cardinality 1)
(Slot-Value-Type Effect-When-Hold))) )
;;; Specified-Pre-Condition
(define-frame Specified-Pre-Condition
:own-slots
((Arity 2)
(Documentation
"A relationship between an Activity-Spec and a Pre-Condition
whereby the Pre-Condition (Planning-Constraint) must be satisfied in order
for the Activity-Spec to be Executed.")
(Domain Activity-Spec) (Instance-Of Binary-Relation Relation)
(Range Pre-Condition))
:issues
("If there is more than one Specified-Pre-Condition for a given
Activity-Spec, their conjunction is may be viewed (informally) as a single
precondition."
(:See-Also "Pre-Condition-When-Hold")) )
;;; Actual-Pre-Condition
(define-frame Actual-Pre-Condition
:own-slots
((Arity 2)
(Documentation
"A relationship between an Activity and a State-Of-Affairs
whereby the State-Of-Affairs is required to be true in
order to perform the Activity.")
(Domain Activity) (Instance-Of Binary-Relation Relation)
(Range Pre-Condition)))
;;; Specified-Effect
(define-frame Specified-Effect
:own-slots
((Arity 2) (Domain Activity-Spec)
(Instance-Of Binary-Relation Relation)
(Range Effect))
:documentation
"A relationship between an Activity-Spec and an Effect
whereby the Effect (Planning-Constraint) must be satisfied in order
for the Activity-Spec to be Executed."
:issues
((:Example "Ringing a door buzzer has Effect of producing noise
during but not before or after the Time-Interval of the Activity.")
(:See-Also "Effect-When-Hold")))
;;; Actual-Effect
(define-frame Actual-Effect
:own-slots
((Arity 2) (Domain Activity)
(Instance-Of Binary-Relation Relation)
(Range Effect))
:documentation
"A relationship between an Activity and an Effect
whereby the State-of-Affairs is brought about by the
performance of the Activity."
:axioms
(forall (?activity ?output)
(=> (Actual-Output ?activity ?output)
(Actual-Effect ?activity '(Actual-Output ?activity
?output)))) )
;;; Activity-Status
(define-relation Activity-Status (?activity ?activity-state)
"A Relationship between an Activity and an Activity-State denoting the
State of the activity (e.g. past, present, or future)"
:def
(and (Activity ?activity)
(Activity-State ?activity-state)))
;;; Misc-Spec-Detail
(define-class Misc-Spec-Detail
(?x)
"Miscellaneous specification detail, usually for text strings to
specify some detail. "
:def
(and (Eo-Entity ?x)))
;;; Activity-State
(define-class Activity-State
(?x)
"A specification of the state that an Activity is in."
:def
(and (Misc-Spec-Detail ?x))
:issues
("Currently, there are 3 special instances: Past, Present and
Future. Others are possible depending on one's requirements; e.g.
active, suspended, broken."))
;;; Past
(define-instance Past
(Activity-State)
:documentation
"Specifies that an Activity has happened already.")
;;; Present
(define-instance Present
(Activity-State)
:documentation
"Specifies that an Activity is happening in the present.")
;;; Future
(define-instance Future
(Activity-State)
:documentation
"Specifies that an Activity has not yet commenced.")
;;; Always
(define-instance Always
(Pre-Condition-When-Hold)
"Specifies that an pre-condition must always hold, before,
during, and after an activity is performed.
")
;;; Before-T-Begin
(define-instance Before-T-Begin
(Pre-Condition-When-Hold)
:documentation
"Specifies that a pre-condition must hold before
the performance of an activity commences.
")
;;; Before-T-End
(define-instance Before-T-End
(Pre-Condition-When-Hold)
:documentation
"Specifies that a pre-condition must hold before
the performance of an activity is completed." )
;;; During-Whole-Interval
(define-instance During-Whole-Interval
(Effect-When-Hold Pre-Condition-When-Hold)
"Specifies that a pre-condition or effect is to hold during
the whole interval over which an activity is performed.")
;;; After-T-End
(define-instance After-T-End
(Effect-When-Hold)
:documentation
"Specifies that an effect must hold immediately after the
performance of an activity is completed.")
;;; After-T-Begin
(define-instance After-T-Begin
(Effect-When-Hold)
"Specifies that an effect must hold immediately after the
performance of an activity commences.")
;;; Specified-Output
(define-relation Specified-Output (?activity-spec ?output)
"A Relationship between an Activity-Spec and an Entity whereby the
Entity will be an Output produced by execution of the Activity-Spec."
:def (and (Activity-Spec ?activity-spec)
(Eo-Entity ?output)) )
;;; Actual-Output
(define-relation Actual-Output (?activity ?output)
"A Relationship between an Activity and an Entity whereby the
Entity is an Output produced by the Activity."
:def (and (Activity ?activity) (Eo-Entity ?output))
:issues
((:See-also "Definition of Actual-Effect.")) )
;;; Specified-To-Execute
(define-relation Specified-To-Execute
(?actor ?activity-spec)
"A relationship between an Actor and an Activity-Spec
whereby the Actor is specified to perform all or part of the Activities
as specified in the Activity-Spec"
:def
(and (Potential-Actor ?actor)
(Activity-Spec ?activity-spec))
:issues
("The Actor is referred to as an Specified-Doer."
"More than one Actor may execute a given Activity-Spec."
"An Activity-Spec need not have an explicit Specified-Doer"
"An Activity-Spec has been Executed when all its
Activities have been performed as specified;
if the Activity-Spec is a Plan, then execution should result
in the achievement of the Plan's Purpose.") )
;;; Specified-Doer
(define-frame Specified-Doer
:own-slots
((Documentation
"The Actor in the Specified-To-Execute relationship.")
(Instance-Of Class) (Subclass-Of Actor))
:axioms
(<=> (Specified-Doer ?actor)
(and (Actor ?actor)
(exists (?activity-spec)
(Specified-To-Execute ?actor
?activity-spec))))
:issues
("See notes under Specified-To-Execute"
"This is a special Role-Class."))
;;; Actually-Execute
(define-relation Actually-Execute
(?actor ?activity)
"A relationship between an Actor and an Activity
whereby the Actor has performed the Activity."
:def
(and (Potential-Actor ?actor)
(Activity ?activity))
:issues
("The Actor is referred to as an Actual-Doer."
"More than one Actor may execute a given Activity."
"An Activity need not have an explicit Actual-Doer"
"Not all Activities need have an explicit Doer; e.g. flowing
water. In such cases, it may be more natural to think of
the Doer as the supplier of force behind an Activity (e.g.
the environment, gravity)" ))
;;; Actual-Doer
(define-frame Actual-Doer
:own-slots
((Documentation
"The Actor in the Actually-Execute relationship.")
(Instance-Of Class) (Subclass-Of Actor))
:axioms
(<=> (Actual-Doer ?actor)
(and (Actor ?actor)
(exists (?activity)
(Actually-Execute ?actor ?activity))))
:issues
("See notes under Actually-Execute"
"This is a special Role-Class.") )
;;; Sub-Activity
(define-relation Sub-Activity
(?activity ?activity-2)
"A relationship between two activities whereby performance of
one activity is considered to be part of the performance of
the other activity."
:def
(and (Activity ?activity) (Activity ?activity-2))
:issues
((:See-Also "Notes under definition of Sub-Activity-Spec")))
;;; Sub-Activity-Spec
(define-relation Sub-Activity-Spec
(?activity-spec ?activity-spec-2)
"A relationship between two Activity specifications whereby
execution of one Activity-Spec is considered to be part of the execution of
the other Activity-Spec."
:def
(and (Activity-Spec ?activity-spec)
(Activity-Spec ?activity-spec-2))
:issues
("Typically an Activity will be decomposed into
Sub-Activities to provide more detail."
"The specification of how an Activity
is decomposed into one or more Sub-Activities is referred to as Activity
Decomposition. It may include the specification of constraints on and
between the Sub-Activities.
There is a lot more structure in an Activity Decomposition than a simple
set of Sub-Activities; e.g. temporal constraints may define a partial
order."
(:example
"The Activity 'go to edinburgh' may have sub-activities as
follows:
1) go to Heathrow 2) fly to Edinburgh airport 3) go to Edinburgh city
centre")))
;;; Hold-Authority
(define-relation Hold-Authority (?actor ?activity-spec)
"A Relationship between an Actor and an Activity-Spec whereby
the Actor has the right to perform the Activities as specified,
i.e. to Execute the Activity-Spec."
:def
(and (Potential-Actor ?actor)
(Activity-Spec ?activity-spec))
:issues
("The holder of authority need not Have-Capability to perform the Activities"
"The Activity that the Actor has the right to perform may itself be the
granting of such a right, normally to another Actor -- this is delegation."
"The holder of Authority may be self-authorised;"
"This definition permits a Machine to Hold-Authority"
"The idea of Capability vs Authority is analogous to that of `can' vs
`may'."
(:See-Also "Definition of Have-Capability") ))
;;; Activity-Owner
(define-class Activity-Owner (?actor)
"The Owner in an instance of the Activity-Ownership class."
:iff-def (and (Actor ?actor)
(exists (?activity-ownership)
(and (Activity-Ownership ?activity-ownership)
(Owning-Actor ?activity-ownership ?actor))))
:issues
("The Actor type restriction identifies the superclass.
OL is not clever enough to infer this from the type restrictions of other
Relationships.") )
;;; Event
(define-frame Event
:own-slots
((Documentation "A kind of Activity. ")
(Instance-Of Class) (Subclass-Of Activity))
:issues
("Depending on their requirements, users of the Ontology may
find the need to define a variety of specific kind of ACTIVITIES. We
introduce EVENT
as one kind of ACTIVITY, but give no details. This allows users of the
Ontology to distinguish EVENT from an arbitrary ACTIVITY, while ensuring that
it inherits all
the properties of ACTIVITY as defined in the Ontology. "))
;;; Activity-Spec
(define-frame Activity-Spec
:own-slots
((Documentation
"a characterisation of something to do; a specification of activity.
By its
very nature, this characterisation restricts the possible things to do
and thus corresponds to a subset of the Activities in the universe.
* an Activity Specification can be thought of as a constraint functioning
as a selector identifying a restricted range of Activities in the universe;
* insofar as an Activity Specification will be built up from various
components (statements in some language), each constraining the
specification in different ways, an
Activity Specification can be thought of a collection of constraints.
* The language for expressing Activity Specifications
will include statements about
ordering (sub)-Activities; Resource usage, Activity
Decomposition, and much more")
(Instance-Of Class) (Subclass-Of Activity-Or-Spec))
:template-slots
((Specified-Activity-Interval (Minimum-Slot-Cardinality 0)
(Slot-Cardinality 1)
(Slot-Value-Type Time-Range))
(Specified-Pre-Condition (Minimum-Slot-Cardinality 1)
(Slot-Value-Type Pre-Condition))
(Specified-Effect (Minimum-Slot-Cardinality 1)
(Slot-Value-Type Effect)))
:issues
("An Activity-Spec is deliberately intended to include any degree
of specification of ACTIVITIES; for example:
1. a trivial level of specification: `go to Edinburgh'
2.comprehensive and detailed set of instructions involving many Activities."
"An Activity-Spec may or may not be executable; possible
reasons are:
1. it is underspecified and/or ambiguous, so the Doer has insufficient
information to proceed with execution;
2. it contains constraints that cannot be met (e.g. regarding Resource
usage or timing)") )
;;; Activity-Or-Spec
(define-class Activity-Or-Spec
(?x)
"The union of Activity and Activity-Spec"
:iff-def
(and (Eo-Entity ?x)
(or (Activity ?x)
(Activity-Spec ?x)))
:axiom-def
(exhaustive-subclass-partition Activity-Or-Spec
(setof Activity Activity-Spec))
:issues
("This is an abstract class created purely for convenience. It is used for
typing Relationships whose arguments can be either an Activity or an
Activity-Spec") )
;;; Execution-Of-Activity-Spec
(define-relation Execution-Of-Activity-Spec (?activity-spec ?activity)
"A Relationship between an Activity-Spec and an Activity whereby the
Activity is the result of [one] execution of the Activity-Spec."
:def
(and (Activity ?activity)
(Activity-Spec ?activity-spec))
:issues
("This is a one-to-many Relationship because an Activity-Spec may in general
be executed many times."
"An Activity-Spec has been Executed when all its
Activities have been performed as specified;
if the Activity-Spec is a Plan, then execution should result
in the achievement of the Plan's Purpose."
(:TODO Consider whether every Activity has a corresponding Activity-Spec or
vice versa. This is relevant to the definition of Planning.)) )
;;; Intended-Purpose
(define-relation Intended-Purpose (?activity-spec ?soa)
"A Relationship between an Activity-Spec and a
State-Of-Affairs whereby:
1. Execution of the Activity-Spec will result in fully or partially
Achieving the State Of Affairs *and*
2. The State-Of-Affairs comprises one more of the Specified-Effects of the
Activity-Spec whose achievement is declared to be the primary reason(s)
for Executing the Activity-Spec.
An Activity-Spec with an Intended-Purpose is defined to be a Plan"
:def
(and (Activity-Spec ?activity-spec)
(State-Of-Affairs ?soa)
(Specified-Effect ?activity-spec ?soa))
:issues
((:example
"The Intended-Purpose of a Plan is to be in some
particular location on some particular date"))
)
;;; Plan
(define-frame Plan
:own-slots
((Documentation
"The Activity-Spec in the Intended-Purpose Relationship")
(Instance-Of Class) (Subclass-Of Activity-Spec)
(Subclass-Of Qua-Entity))
:template-slots
((Intended-Purpose (Minimum-Slot-Cardinality 0)
(Slot-Cardinality 1)
(Slot-Value-Type State-Of-Affairs)) )
:axioms
(<=> (Plan ?plan)
(exists (?soa)
(Intended-Purpose ?plan ?soa)))
:issues
("This definition is equivalent to: An Activity-Spec that
is associated with an Intended-Purpose."
"This is a special Role-class.") )
;;; Sub-Plan-Of
(define-relation Sub-Plan-Of (?sub-plan ?plan )
"a Relationship between two Plans whereby the Intended-Purpose
of one Plan does Help-Achieve the Intended-Purpose of the other Plan."
:iff-def
(and (Plan ?plan)
(Plan ?sub-plan)
(exists (?purpose ?sub-purpose)
(and (Intended-Purpose ?plan ?purpose)
(Intended-Purpose ?sub-plan ?sub-purpose)
(Help-Achieve ?sub-purpose ?purpose)))) )
;;; Sub-Plan
(define-class Sub-Plan
(?sub-plan)
"The supporting Plan in the Sub-Plan-Of Relationship"
:iff-def
(and (Plan ?sub-plan)
(Qua-Entity ?sub-plan)
(exists (?plan) (Sub-Plan-Of ?sub-plan ?plan)))
:issues
("This is a special Role-Class.") )
;;; Planning
(define-class Planning (?planning)
"An Activity whose Intended-Purpose is to produce a Plan.
Specifically, if an Activity is a Planning Activity, this implies that
a. there is some Activity-Spec which when Executed, gave rise to the Activity;
b. the Intended-Purpose of the Activity-Spec is to produce a Plan"
:def (and (Activity ?planning)
(exists (?plan ?aspec)
(and (Plan ?plan)
(Activity-Spec ?aspec)
(Execution-Of-Activity-Spec ?aspec ?planning)
(Intended-Purpose ?aspec '(Actual-Output ?planning
?plan)))))
:issues
((:TODO "Consider whether the following is a problem. The Planning
definition
(seemingly) forces the existence of an Activity-Spec corresponding to
every Planning Activity. This seems to rule out spontaneous planning
for which there was no plan to plan. This may not matter, but insofar as
it appears overly restrictive it is not desirable.")) )
;;; Process-Spec
(define-class Process-Spec
(?x)
"a Plan that is intended to be or is capable of being
Executed more than once"
:def
(and (Plan ?x))
:issues
("We intentionally do not define the term `process', as it means
so many things to so many people. The terms in this
Ontology should be sufficient to define whatever specific
notion of `process' is required."
"Typically, a Process-Spec will be parameterised to
enable reusability in various forms at different times.
As such, it may be viewed as a Plan schema.") )
;;; Have-Capability
(define-relation Have-Capability
(?actor ?activity-spec)
"A Relationship between an Actor and an Activity-Spec
denoting the ability of the Actor to perform the Activities as specified."
:def
(and (Potential-Actor ?actor) (Activity-Spec ?activity-spec))
:issues
("The idea of Capability vs Authority is analogous to that of
`can' vs `may'."
(:See-Also "Definition of Hold-Authority")) )
;;; Have-Skill
(define-relation Have-Skill
(?person ?activity-spec)
"the same as the Have-Capability relationship
with the additional restriction that 1) the Actor is a Person and
2) the ability must be practised/demonstrated to some measurable degree."
:def
(and (Person ?person) (Activity-Spec ?activity-spec)
(Have-Capability ?person ?activity-spec)) )
;;; Can-Use-Resource
(define-relation Can-Use-Resource
(?activity-or-spec ?resource)
"a Relationship between an Activity or Activity-Spec and an
Entity whereby the Entity is or can be used or consumed during the performance
of the Activity or the Activities as specified in the Activity-Spec"
:def
(and (Eo-Entity ?resource)
(Activity-Or-Spec ?activity-or-spec))
:issues
("a Resource may have a quantifiable measure
denoting how much is available for use (e.g. amount of fuel)"
"If the Resource is used but not consumed by an Activity,
the quantity available will decrease at T-Begin and
return to the original level at T-End."
"If the Resource is consumed, the quantity available will
be less at T-End than at T-Begin."
"a Resource may be shared by more than one ACTIVITY"
"An Entity produced by an Activity may be viewed as a
Resource in that *other* Activities may use/consume it;
however such outputs are not Resources with respect to the
producing Activity."
(:TODO "Should this be split into two (specified and actual)
as per other activity relations?"))
)
;;; Resource
(define-frame Resource
:own-slots
((Documentation
"The Entity that is used or consumed in the Can-Use-Resource
relationship")
(Instance-Of Class) (Subclass-Of Qua-Entity))
:axioms
((<=> (Resource ?resource)
(exists (?activity-or-spec)
(Can-Use-Resource ?activity-or-spec ?resource))))
:issues
("See notes under Can-Use-Resource"
"This is a special Role-Class."))
;;; Resource-Allocation
(define-class Resource-Allocation
(?x)
"the allocation of Resources to Activities"
:def
(and (Activity ?x))
:issues
("the Activity of Resource-Allocation itself may have
Resources allocated to it (e.g. personnel)"
"Resource-Allocation is the responsibility of
Organisational-Unit s"
"an Organisational-Unit responsible for Resource-Allocation may
Delegate it to another Organisational-Unit.")
)
;;; Resource-Substitute
(define-relation Resource-Substitute
(?resource ?resource-sub ?a-or-spec)
"A Relationship between two Resources and an Activity
or Activity-Spec whereby the one Resource may be used or consumed in the
Activity or Activity-Spec instead of the other."
:def
(and (Activity-Or-Spec ?a-or-spec)
(=> (Can-Use-Resource ?a-or-spec ?resource)
(Can-Use-Resource ?a-or-spec ?resource-sub)))
:issues
("This definition does not properly capture the idea of
being a substitute; that would require further detail. It does however
captures the fact that if the substitute is so declared, then it automatically
is a Resource for that Activity."
"It was a conscious decision to not restrict the types of
the first two arguments to be Resources, because this is supposed to be
inferred from participation in a Can-Use-Resource relation.") )
;;; **********************************************************************
;;; STRATEGY ONTOLOGY
;;; **********************************************************************
;;; Hold-Purpose
(define-relation Hold-Purpose (?actor ?soa)
"a Relationship between an Actor and a State-Of-Affairs
Affairs whereby the Actor wants, intends, or is responsible for the full or
partial achievement of the State-Of-Affairs;"
:def
(and (Potential-Actor ?actor) (State-Of-Affairs ?soa))
:issues
("The Actor will usually be a Person or Organisational-Unit,
however Machine is not excluded."
(:example
"Some PERSON wants to be in Edinburgh on some date")) )
;;; Purpose
(define-class Purpose (?purpose)
"a State-Of-Affairs that is either 1) the Intended-Purpose
of some Plan, or 2) in a Hold-Purpose relationship with some Actor"
:iff-def
(and (State-of-Affairs ?purpose)
(Qua-Entity ?purpose)
(or (exists (?plan) (Intended-Purpose ?plan ?purpose))
(exists (?actor) (Hold-Purpose ?actor ?purpose))))
:issues
("Purpose may be effectively decomposed into more detailed
Purposes via the Help-Achieve Relationship."
"A Responsibility may be viewed as a special kind of Purpose. Being
responsible for implies the Purpose is Delegated by another Actor. This
contrasts with the more general case where an Actor wants or intends a Purpose
of their own volition as in the Hold-Purpose Relationship."
"A Purpose is characterised by one or more of the following:
1. Measurability: extent to which it is
possible to objectively determine whether achievement has occurred.
2. Time Horizon: e.g. short, medium, or long term
3. Specificity: how detailed the Purpose is; related to
measurability in that very detailed Purposes will tend to be measurable.
4. Relative Priority: degree of desirability with respect to some Actor"
"We introduce four different kinds or levels of Purpose: Vision
Mission, Goal and Objective. We define Objective, but not the other three
because they are used in many different ways. It is up to the Ontology user to
specify what these may mean in a given situation."
"Vision, Mission, and Goal may or may not be Objectives"
"Some ways that these terms may be specialised are:
1. Insofar as the Help-Achieve Relationship orders Purposes, the
order will tend to be (from lowest-level): Objective, Goal, Mission, Vision.
2. With respect to measurability, the order will tend to be (from
most measurable): Objective, Goal, Mission, Vision.
3. With respect to to time horizon, the the order will tend to be
(from shortest time horizon): Objective, Goal, Mission, Vision."
"We could have defined this class as the superclass of
two sub-classes corresponding to the Intended-Purpose and
Hold-Purpose relationships; however, this was not
deemed useful or necessary at this point."
"This is a special Role-Class." ) )
;;; Purpose-Holder
(define-class Purpose-Holder
(?purpose-holder)
"The Actor in the Hold-Purpose Relationship"
:iff-def
(and (Actor ?purpose-holder)
(exists (?purpose) (Hold-Purpose ?purpose-holder ?purpose)))
:issues
("This is a special Role-Class.") )
;;; Objective
(define-class Objective (?objective)
"A Purpose with a defined measure"
:def
(and (Purpose ?objective))
:issues
("The idea is that it is possible to detect the achievement of an Objective.")
)
;;; Vision
(define-class Vision (?vision)
"A kind of Purpose"
:def
(and (Purpose ?vision))
:issues
("See notes under Purpose.") )
;;; Mission
(define-class Mission (?mission)
"A kind of Purpose"
:def
(and (Purpose ?mission))
:issues
("See notes under Purpose."))
;;; Goal
(define-class Goal (?goal)
"A kind of Purpose"
:def
(and (Purpose ?goal))
:issues
("See notes under Purpose.") )
;;; Help-Achieve
(define-relation Help-Achieve (?soa ?soa)
"a Relationship between two States Of
Affairs whereby one State Of Affairs contributes to or facilitates the
achievement of the other State Of Affairs."
:def
(and (State-of-Affairs ?soa))
:issues
("The Help-Achieve Relationship is particularly important when both
State-of-Affairs are Purposes. In this case, the Help-Achieve Relationship
may define a directed acyclic network of Purpose nodes which gives rise to a
notion of higher- and lower-level Purposes."
"Users of the Ontology may wish to constrain the meaning of Help-Achieve
more precisely, or even define more than one flavour. It is deliberate that the
Ontology permits this while providing a basic structure that can be shared."))
;;; Strategic-Purpose
(define-class Strategic-Purpose (?strategic-purpose)
"A purpose held by an Actor that is declared to be of 'Strategic'
importance.
A Strategic-Purpose may Help-Achieve another Purpose, and thus be
lower-level with respect to that Purpose. However, any such Purpose that
is higher-level than at least one Strategic-Purpose must itself be a
Strategic-Purpose."
:def
(and (Purpose ?strategic-purpose)
(exists (?actor) (Hold-Purpose ?actor ?strategic-purpose)))
:axiom-constraints
(forall (?purpose ?sgc-purpose)
(=> (and (Strategic-Purpose ?sgc-purpose)
(Help-Achieve ?sgc-purpose ?purpose))
(Strategic-Purpose ?purpose)))
:issues
("This is an arbitrary declaration, used to distinguish
higher level purposes from lower level purposes not regarded as strategic."
"Normally, though not necessarily, each Strategic-Purpose
will appear as the higher level purpose in one or more
Help-Achieve relationships."
"A purpose that is a Vision or Mission should normally be declared to
be a Strategic-Purpose.
A Goal may or may not be a Strategic-Purpose."
(:SUGGESTION "In some circumstances, it may be desirable to force every
Vision and Mission to be a Strategic-Purpose.")
"If ever there were two distinct subtypes of Purpose corresponding
to Intended-Purpose and Hold-Purpose then this :DEF specification could
be shortened because Strategic-Purpose is a subtype of the latter not the
former. ") )
;;; Strategy
(define-class Strategy (?strategy)
"a Plan whose Intended-Purpose is a Strategic-Purpose; i.e.
a Plan to Achieve a Strategic-Purpose"
:def
(and (Plan ?strategy)
(exists (?purpose)
(and (Strategic-Purpose ?purpose)
(Intended-Purpose ?strategy ?purpose)))) )
;;; Strategic-Planning
(define-class Strategic-Planning (?sgc-planning)
"a Planning Activity whose Intended-Purpose is to produce [an
Actual-Output which is] a Strategy"
:def
(and (Planning ?sgc-planning)
(exists (?strategy ?aspec)
(and (Strategy ?strategy)
(Activity-Spec ?aspec)
(Execution-Of-Activity-Spec ?aspec ?sgc-planning)
(Intended-Purpose ?aspec '(Actual-Output ?sgc-planning
?strategy)))))
:issues
("This definition is identical in form to that of Planning. The difference
is exactly to restrict the type of Plan produced to be a Strategy.") )
;;; Strategy-Produced
;;; (define-instance Strategy-Produced
;;; (State-of-Affairs)
;;; :documentation
;;; "Specifies that a strategy has been produced"
;;; :ontology (quote enterprise-o))
;;; Strategic-Action
(define-class Strategic-Action (?strategic-action)
"a Sub-Plan of a Strategy"
:iff-def
(and (Sub-Plan ?strategic-action)
(exists (?strategy) (and (Strategy ?strategy)
(Sub-Plan-Of ?strategic-action ?strategy))))
:issues
("Strictly speaking, this is a mis-nomer in that it is not an
Activity, but a Plan. It is left as such to conform with common usage.") )
;;; Decision
(define-frame Decision
:own-slots
((Documentation "a commitment by an Actor to perform an Activity")
(Instance-Of Class) (Subclass-Of Eo-Entity))
:template-slots
((Decision-Taker (Slot-Cardinality 1)
(Slot-Value-Type Potential-Actor))
(Chosen-Activity (Slot-Cardinality 1)
(Slot-Value-Type Activity)))
:issues
("this is roughly equivalent to the traditional definition:
`commitment to a course of action'. The notion of commitment
appears synonymous with `intention' as distinct from `want/desire'"))
;;; Decision-Taker
(define-relation Decision-Taker
(?decision ?actor)
"A Relationship between an Actor and a Decision whereby
the Actor is committed to an Activity in a Decision"
:def
(and (Decision ?decision) (Potential-Actor ?actor)) )
;;; Chosen-Activity
(define-relation Chosen-Activity
(?decision ?activity)
"A Relationship between an Activity and a Decision whereby
the Activity in a Decision is committed to by some Actor"
:def
(and (Decision ?decision) (Activity ?activity)) )
;;; Assumed
(define-relation Assumed
(?actor ?soa)
"A Relationship between an Actor and a State-of-Affairs whereby the Actor
takes the State Of Affairs to be true without knowing whether it is
true or not."
:def
(and (Potential-Actor ?actor) (State-of-Affairs ?soa)
(not (Known-True ?actor ?soa) ))
:issues
("An Assumption may or may not be critical"
"An Assumption is typically used during Planning and may be
associated with Plans"
"the set of all things Assumed is mutually exclusive to the set of all
things Known-True. For both however, the Actor takes the
State-Of-Affairs to be true.") )
;;; Assumption
(define-class Assumption
(?assumption)
"The State-Of-Affairs in an Assumed Relationship with some Actor"
:iff-def
(and (State-Of-Affairs ?assumption)
(Qua-Entity ?assumption)
(exists (?actor) (Assumed ?actor ?assumption)))
:axioms
(exhaustive-subclass-partition Assumption
(setof Critical-Assumption Non-Critical-Assumption))
:issues
((:See-Also "Notes under Assumed.")
"This is a special Role-Class.") )
;;; Planning-Assumption
(define-relation Planning-Assumption (?planning ?assumption)
"A Relationship between an Planning Activity and a Assumption whereby the
Actor doing the Planning makes the Assumption whilst producing a Plan.
A Planning-Assumption used always gives rise to a Plan-Assumption
associated with the plan produced."
:def
(and (Planning ?planning)
(Assumption ?assumption)
(exists (?doer) (and (Actor ?doer)
(Actually-Execute ?doer ?planning)
(Assumed ?doer ?assumption))))
:axiom-constraints
(forall (?plng ?assump)
(=> (Planning-Assumption ?plng ?assump)
(exists (?pln) (and (Actual-Output ?plng ?pln)
(Plan-Assumption ?pln ?assump)))))
:issues
((:ISSUE "This definition is in some literal sense true, but we may
not want to force the existence of all these assertions with instantiated
variables. Also, would need to link the Actor having the Assumption with
respect to planning, not just at all. This is why it cannot be an Iff-Def")) )
;;; Plan-Assumption
(define-relation Plan-Assumption (?plan ?assumption)
"A Relationship between an Plan and a Assumption whereby the Plan is
based on the Assumption (i.e. used during Planning) and may be invalid if
the Assumption fails to hold
An Assumption in a Plan-Assumption relationship is also the Assumption in a
Planning-Assumption Relationship for the Planning Activity that produced the
Plan"
:def
(and (Plan ?plan)
(Assumption ?assumption)
(exists (?planning) (and (Planning ?planning)
(Actual-Output ?planning ?plan)
(Planning-Assumption ?planning ?assumption))))
:issues
((:ISSUE "This definition is in some literal sense true, but we may
not want to force the existence of all these assertions with instantiated
variables. Also, would need to link the Actor having the Assumption with
respect to planning, not just at all. This is why it cannot be an Iff-Def")))
;;; Critical-Assumption
(define-class Critical-Assumption (?critical-assumption)
"an Assumption that is associated with or used in Strategic-Planning."
:def
(and (Assumption ?critical-assumption)
(exists (?strategic-planning)
(and (Strategic-Planning ?strategic-planning)
(Planning-Assumption ?strategic-planning
?critical-assumption))) )
:issues
((:ISSUE "Should this be IFF-DEF?")) )
;;; Non-Critical-Assumption
(define-class Non-Critical-Assumption (?non-critical-assumption)
"an Assumption that is not associated with or used in Strategic-Planning."
:def
(and (Assumption ?non-critical-assumption)
(not (exists (?strategic-planning)
(and (Strategic-Planning ?strategic-planning)
(Planning-Assumption ?strategic-planning
?non-critical-assumption)))))
:issues
((:ISSUE "Should this be IFF-DEF?")) )
;;; Used-Or-Associated-With
(define-relation Used-Or-Associated-With (?state-of-affairs
?strategic-planning)
"A Relationship between a State-Of-Affairs and a Strategic-Planning Activity
whereby the former is used or associated with the latter.
A Planning-Assumption of a Strategic-Planning Activity is always
Used-Or-Associated-With the Strategic-Planning Activity"
:def (and (State-Of-Affairs ?state-of-affairs)
(Strategic-Planning ?strategic-planning))
:axiom-constraints
(forall (?sgc-planning ?assumption)
(=> (and (Strategic-Planning ?sgc-planning)
(Assumption ?assumption)
(Planning-Assumption ?sgc-planning
?assumption))
(Used-Or-Associated-With ?assumption ?sgc-planning)) )
:issues
((:ISSUE "The name suggests something far more general; this is a bit
HACKY, only created to help define Critical-Influence-Factor")) )
;;; In-Scope-Of-Interest
(define-relation In-Scope-Of-Interest (?actor ?eo-entity)
"A Relationship between an Actor and something whereby the thing is within
the scope of interest of the Actor."
:def (and (Potential-Actor ?actor) (Eo-Entity ?eo-entity))
:issues
("This was created mainly to assist in defining Influence-Factor, but may
have other uses."))
;;; Known-True
(define-relation Known-True (?actor ?state-of-affairs)
"A Relationship between an Actor and a State-Of-Affairs whereby the Actor
knows the State-Of-Affairs to be true."
:def (and (Potential-Actor ?actor)
(State-Of-Affairs ?state-of-affairs)
(not (Assumed ?actor ?state-of-affairs) ))
:issues
("the set of all things Assumed is mutually exclusive to the set of all
things Known-True. For both however, the Actor takes the
State-Of-Affairs to be true.") )
;;; Influence-Factor
(define-class Influence-Factor (?influence-factor)
"a State-Of-Affairs Known-True by an Actor which is In-Scope-Of-Interest
of that Actor"
:iff-def
(and (State-Of-Affairs ?influence-factor)
(exists (?actor)
(and (Known-True ?Actor ?influence-factor)
(In-Scope-Of-Interest ?actor ?influence-factor))))
:issues
((:Example "current rate of inflation")) )
;;; Critical-Influence-Factor
(define-class Critical-Influence-Factor (?critical-influence-factor)
"an Influence-Factor that is used in or associated with Strategic-Planning"
:iff-def
(and (Influence-Factor ?critical-influence-factor)
(exists (?strategic-planning)
(and (Strategic-Planning ?strategic-planning)
(Used-Or-Associated-With ?critical-influence-factor
?strategic-planning)))) )
;;; Non-Critical-Influence-Factor
(define-class Non-Critical-Influence-Factor (?non-critical-influence-factor)
"an Influence-Factor that is *not* associated with or used in
Strategic-Planning"
:iff-def
(and (Influence-Factor ?non-critical-influence-factor)
(not (exists (?strategic-planning)
(and (Strategic-Planning ?strategic-planning)
(Used-Or-Associated-With
?non-critical-influence-factor
?strategic-planning)))) ))
;;; Critical-Success-Factor
(define-class Critical-Success-Factor (?csf)
"A Purpose declared by an Actor to be critical to the success of one or more
Strategic-Purposes"
:def
(and (Purpose ?csf)
(exists (?actor) (Intended-Purpose ?actor ?csf))
(exists (?strategic-purpose)
(and (Strategic-Purpose ?strategic-purpose)
(Help-Achieve ?csf ?strategic-purpose))))
:issues
("it is important to note that the declaration is arbitrary in the sense
that there is no set of Attributes that can objectively determine whether a
Purpose is a Critical-Influence-Factor or not.
A Critical-Success-Factor does much more than simply Help-Achieve the
Strategic-Purpose it plays an extremely important role in doing so."
(:Practical-Significance "Critical-Influence-Factors provide the
central focus for Strategic-Planning .")
(:Example "current rate of inflation")) )
;;; Perceived-Risk
(define-relation Perceived-Risk (?actor ?risk)
"a Relationship between an Actor and a State-Of-Affairs whereby
the Actor regards the State Of Affairs as a potential
hindrance to the achievement of one or more of Purposes of the Actor."
:def
(and (Potential-Actor ?actor) (State-Of-Affairs ?risk))
:issues
((:ISSUE "Consider making this a bit richer, by linking with the concepts of
Purpose, Help-Achieve. To do this properly, requires introducing both
possibility and belief as well as some notion of Hinder (antithesis of
Help-Achieve. E.g.
(exists (?purpose)
(and (Intended-Purpose ?actor ?purpose)
(Believe ?actor
(Possible (Hinder ?risk ?purpose)))))
")) )
;;; **********************************************************************
;;; ORGANISATION ONTOLOGY
;;; **********************************************************************
;;; Potential-Actor
(define-class Potential-Actor
(?x)
"An Entity that *can* play an Actor Role."
:def
(and (Eo-Entity ?x))
:issues
((:example
"An Actor Role is one that entails some notion of
doing or cognition"
"Things that an Actor can do include perform activity,
have-capability, have-authority, delegate, Hold-Purpose, hold assumption,
own."
"This class is used to restrict the types of arguments in
Relations that correspond to Actor Roles (e.g. Hold-Purpose)")))
;;; Actor
(define-frame Actor
:own-slots
((Documentation "An EO-Entity that *does* play an Actor Role")
(Subclass-of Qua-Entity) (Subclass-of Potential-Actor))
:issues
("Actor is the superclass of all Qua-Entities defined in terms of
Roles in Relations that entail some notion of doing or cognition.
Such roles are called `Actor Roles'"
" Currently, It is up to developers, users, maintainers of the ontology to ensure
that every Role-Class defined in terms of such a role is declared to be
a subclass of Actor.
An alternative would be to infer Actors by somehow specifying the particular
arguments in relations which correspond to Actor-Roles.
This could be complicated and is possibly unnecessary."
"Actor is a subclass of Potential-Actor because every Actor must be
a Potential-Actor, but not vice versa."))
;;; Person
(define-class Person (?x)
"A human being"
:def
(and (Potential-Actor ?x)
(Legal-Entity ?x))
:issues
("For the purposes of this Ontology, a Person is of interest for their
capacity to play various Actor Roles in an enterprise ({\em e.g.} to perform
an Activity, or Hold-Authority)"
"Person is meant to include the concepts of sole trader and a registered
business.
For most purposes, the law makes no distinction between these things and the
Person owning/operating them."))
;;; Machine
(define-class Machine
(?x)
"A non-human Entity which has the capacity to carry out
functions and/or play various roles in an enterprise"
:def
(and (Potential-Actor ?x))
:issues
"a Machine is similar to a Person in that many functions and
roles may
be performed by either. However, it is anticipated that some functions and
roles will be exclusive to one or the other. For example, a Machine may not be
held responsible for anything.")
;;; Corporation
(define-class Corporation
(?x)
"a group of Person s recognised in law as having existence,
rights, and duties distinct from those of the individual
Person s who from time to time comprise the group. "
:def
(and (Legal-Entity ?x))
:issues
"Historically, in law, rights and duties apply to individual
humans; rights and duties of groups are inherited from this.")
;;; Partnership
(define-class Partnership
(?x)
"A group of PERSONS carrying on business in common."
:def
(and (Legal-Entity ?x))
:issues
("The following is true in English law, but not necessarily
in other legal systems:
- there is a distinction between Partnership and Corporation;
- each Partner may have unlimited liability
for the debts of the Partnership to other Legal-Entity s;
- the Partnership does not have a legal identity separate from its
Partner s; e.g. if the Partnership is sued, this means each Partner is sued.
"))
;;; Partner-Of
(define-relation Partner-Of
(?person ?partnership)
"A Relationship between a Person and a Partnership denoting
that the Person is a member of the Partnership"
:def
(and (Person ?person) (Partnership ?partnership)) )
;;; Partner
(define-class Partner
(?partner)
"The Person in the Partner-Of Relationship; i.e.
a Person who forms part of a Partnership"
:iff-def
(and (Person ?partner)
(Actor ?partner)
(exists (?partnership) (Partner-Of ?partner
?partnership)))
:issues
("This is a special Role-Class."
(:Why "Why is Partner a subclass of both Person and Actor?
While every Person is a Potential-Actor, a Person is not an
[Actual] Actor unless it plays an Actor Role in some Relationship
such as this one.")) )
;;; Legal-Entity
(define-class Legal-Entity
(?x)
"That which can enter into a legal contract. For the
purposes of the Enterprise Ontology, this is equivalent to
the union of Person, Corporation, and Partnership."
:iff-def
(and (Eo-Entity ?x)
(or (Person ?x)
(Corporation ?x)
(Partnership ?x)))
:axiom-def
(exhaustive-subclass-partition Legal-Entity
(setof Person
Corporation
Partnership)) )
;;; Organisational-Unit
(define-class Organisational-Unit
(?x)
"An Entity for Managing the performance
of Activities to Achieve one or more Purposes. An OU may be characterised by:
* the nature of its Purpose(s);
* one or more Person(s) working for the OU;
* Resource(s) allocated to the OU;
* other OUs that Manage or are Managed-By the OU;
* its Assets;
* its Stakeholders;
* being Legally Owned;
* its Market (if it is a Vendor)."
:def
(and (Potential-Actor ?x))
:issues
("1. The term OU is deliberately defined with no constraint on its
size or place within an organisation. Furthermore, no special terms for OUs of
any particular size are defined (e.g. division, department). This is because
no consistent use of such terms can be found across different enterprises, or
even within a single enterprise over time. Therefore the existence of a very
small and simple unit, even corresponding with a single person, or a very large
and complex structure (e.g. a multi-national Corporation) can equally be
represented as an OU. The structure of an OU is represented by the set of as
many other OUs and Manages Relationships (see below) as required."
"2. The Manages relationship leads to the concept of higher-level and
lower-level OUs depending on which Manage and which are Managed-By."
"3. The terms `enterprise' and `organisation' are not defined in the
Enterprise-Ontology, but a user of the Ontology may wish to define one or
other of them as a high-level OU, perhaps corresponding with highest OU in
the scope of interest."
"4. An individual Person may correspond to, or belong to, more than
one OU, one for each different role or function."
"5. An essential Purpose of most OUs is to maximise performance
against financial and other organisational Objectives.")
)
;;; Works-For-OU
(define-relation Works-For-OU (?person ?organisational-unit)
"A Relationship between an Person and a Organisational-Unit whereby the
Person works for the Organisational-Unit"
:def
(and (Person ?person) (Organisational-Unit ?organisational-unit)) )
;;; Manage
(define-class Manage
(?x)
"the Activity of assigning Purpose s and monitoring their
achievement."
:def
(and (Activity ?x))
:issues
("This includes Resource-Allocation and the power to say whether
an Actor may Hold-Authority."
"This includes managing of people, ({\em e.g.} skill base, career
development), and of Organisational-Unit s. This is reflected by the nature
of the PURPOSES that are set and monitored; e.g. time horizon, deliverables."
"This gives rise to an asymmetric Relationship between the
managing and managed entities. See Manages."
"Although the visible activity of management in an enterprise may
take place between Persons (or possibly Machines), where the Purpose assigned
and monitored clearly relates to the activities of the Organisational-Unit, it
will frequently be natural to model it as being between the
Organisational-Unit s.") )
;;; Delegate
(define-class Delegate
(?x)
"a kind of Manage Activity whereby there is
a transfer of something to a (normally lower-level) Actor"
:def
(and (Manage ?x))
:issues
("We do not formally characterise Delegate, this is left to the users.
Details to be considered include what may be delegated, (e.g. task,
authority, responsibility)") )
;;; Manages
(define-relation Manages (?managing ?managed)
"A Relationship between two Actor s whereby one
Actor directly performs the Manage Activity with respect to the
the other."
:def
(and (Organisational-Unit ?managing) (Organisational-Unit ?managed))
:issues
("A single sequence of Actors directly connected via the Manages
Relation can be thought of as a management chain. More precisely, all
management chains have:
- Only one Actor (lowest level) that does not Manage another Actor;
- Only one Actor (highest level) that is not Managed-By another
Actor;
- No branching (i.e. no Actor is Managing or is Managed-By more
than one other Actor).
"
"An Organisational-Unit at the lower end of a Manages chain may correspond
directly with one Person. The Purpose s of such a Person may be very similar
to the Purpose s of the Organisational-Unit and therefore the Purpose s may not
need to be separately modelled. Higher up a Manages chain, the Purpose s of an
Organisational-Unit are likely to be dissimilar to the Purpose s of a Person."
"Informally, a Managed Organisational-Unit can be thought of as
being `part of' the Managing Organisational-Unit."
"Insofar as a Machine is Managing or is Managed-By another Actor, it may
be considered to be an Organisational-Unit."
"One ordered pair in this relation corresponds to a case of one OU
managing another and is referred to a Management Link"
"The manner in which the Management Links are arranged is referred to as
the Organisational Structure.
* Examples of common Organisational Structures are hierarchical (e.g. line
management), matrix (for project/programme management) and flat.
* Co-management is a situation where an Organisational-Unit is Managed-By more
than one Organisational-Unit." ) )
;;; Managed-By
(define-relation Managed-By (?managed ?managing)
"The inverse of Manages."
:iff-def (Manages ?managing ?managed)
:axiom-def (Inverse Managed-By Manages)
:issues
((:See-Also "Manages")) )
;;; Ownership
(define-frame Ownership
:own-slots
((Documentation
"The union of Legal-Ownership and Non-Legal-Ownership")
(Instance-Of Class) (Subclass-Of Eo-Entity))
:template-slots
((Owning-Actor (Minimum-Slot-Cardinality 0) (Slot-Cardinality 1)
(Slot-Value-Type Potential-Actor))
(Owned-Entity (Minimum-Slot-Cardinality 0)
(Slot-Cardinality 1) )
(Owned-Rights (Minimum-Slot-Cardinality 0))
(Responsibilities-of-Owner (Minimum-Slot-Cardinality 0)))
:axioms
(exhaustive-subclass-partition Ownership
(setof Legal-Ownership Non-Legal-Ownership))
:issues
("This definition is equivalent to: a Relationship between an
Actor and some Entity whereby the Actor has certain rights
with respect to the Entity."
"Technically, it is rights that are owned, not the Entity
itself; e.g. one who leases a car does not own the car, but
they have legal rights with respect to it"
"Representing Ownership as a Class in this manner, is
equivalent in meaning to modelling it as a 4-ary
Relationship between an Actor, and three Entities.
This approach was chosen becauses it seemed simpler.
It is an open question as to whether it makes much
difference."))
;;; Legal-Ownership
(define-frame Legal-Ownership
:own-slots
((Documentation "a Relationship between a Legal-Entity and
some Entity whereby the Legal-Entity has certain *legal* rights
with respect to the Entity.")
(Instance-Of Class) (Subclass-Of Ownership))
:template-slots
((Owning-Actor (Minimum-Slot-Cardinality 0) (Slot-Cardinality 1)
(Slot-Value-Type Legal-Entity))
(Owned-Entity (Minimum-Slot-Cardinality 0)
(Slot-Cardinality 1))
(Owned-Rights (Minimum-Slot-Cardinality 0))
(Responsibilities-of-Owner (Minimum-Slot-Cardinality 0)))
:issues
("the Entity in such a Relationship will be said to be
`Legally Owned'"
"See also notes under Ownership."))
;;; Non-Legal-Ownership
(define-frame Non-Legal-Ownership
:own-slots
((Documentation "a Relationship between
an Actor and an Entity whereby the Actor is recognised within a Legal-Entity as
having certain (non-legal) rights with respect to the Entity.")
(Instance-Of Class) (Subclass-Of Ownership))
:template-slots
((Owning-Actor (Minimum-Slot-Cardinality 0) (Slot-Cardinality 1)
(Slot-Value-Type Potential-Actor))
(Owned-Entity (Minimum-Slot-Cardinality 0)
(Slot-Cardinality 1))
(Parent-Legal-Entity (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Legal-Entity))
(Owned-Rights (Minimum-Slot-Cardinality 0))
(Responsibilities-of-Owner (Minimum-Slot-Cardinality 0)))
:issues
("In the eyes of the law, Ownership can only be vested in a
Legal-Entity. For practical purposes within an organisation, rights of an
Actor with respect to an Entity within the organisation will be important
to model."
"See also notes under Ownership."
(:example
"the Relationship between an Organisational-Unit and the Resource (s) allocated to it.")))
;;; Activity-Ownership
(define-frame Activity-Ownership
:own-slots
((Documentation "a Non-Legal-Ownership between an Actor
and an Activity whereby the Actor is responsible for the Activity.")
(Instance-Of Class) (Subclass-Of Non-Legal-Ownership))
:template-slots
((Owning-Actor (Minimum-Slot-Cardinality 0) (Slot-Cardinality 1)
(Slot-Value-Type Potential-Actor))
(Owned-Entity (Minimum-Slot-Cardinality 0)
(Slot-Cardinality 1)
(Slot-Value-Type Activity))
(Parent-Legal-Entity (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Legal-Entity))
(Owned-Rights (Minimum-Slot-Cardinality 0))
(Responsibilities-of-Owner (Minimum-Slot-Cardinality 0)))
:issues
("May be identified indirectly via role (e.g.
project manager) or directly as a named Person."
"This is a stronger definition than in Mid3.1, which
did not require Activity Ownership to be Non Legal Ownership."))
;;; Owning-Actor
(define-relation Owning-Actor
(?ownership ?actor)
"The Actor in an Ownership situation that owns something."
:def
(and (Ownership ?ownership) (Potential-Actor ?actor)) )
;;; Owned-Entity
(define-relation Owned-Entity
(?ownership ?owned)
"The Entity in an Ownership situation that is owned."
:def
(and (Ownership ?ownership) (Eo-Entity ?owned)) )
;;; Owned-Rights
(define-relation Owned-Rights
(?ownership ?rights)
"The Rights in an Ownership situation that is owned."
:def
(and (Ownership ?ownership) (Eo-Entity ?rights)) )
;;; Responsibilities-of-Owner
(define-relation Responsibilities-of-Owner
(?ownership ?responsibilities)
"The Responsibilities in an Ownership situation that
are placed on the Actor."
:def
(and (Ownership ?ownership) (Eo-Entity ?responsibilities)) )
;;; Parent-Legal-Entity
(define-relation Parent-Legal-Entity
(?nl-ownership ?le)
"The Legal Entity in a Non-Legal-Ownership situation
that recognises the Owning-Actor's Owned-Rights."
:def
(and (Non-Legal-Ownership ?nl-ownership) (Legal-Entity ?le)) )
;;; Owner
(define-class Owner (?owner)
"the Actor in an Owning-Actor Relationship."
:iff-def
(and (Actor ?owner)
(exists (?ownership)
(Owning-Actor ?ownership ?owner)))
:issues
("This is a special Role-Class."
"The Actor type restriction identifies the superclass.
OL is not clever enough to infer this from the type restrictions of other
Relationships.") )
;;; Has-Monetary-Value
(define-relation Has-Monetary-Value (?x)
"The property of an Entity whereby it has monetary value."
:def
(and (Eo-Entity ?x))
:issues
("This is different from `can appear on a balance sheet'"
"This is a unary predicate, and as such may be viewed as a class whose
name might be 'Thing-That-Has-Monetary-Value' but this is probably not the
most natural or useful view.") )
;;; Asset
(define-class Asset (?asset)
"A Legally Owned-Entity that Has-Monetary-Value"
:iff-def
(and (Has-Monetary-Value ?asset)
(exists (?l-o) (and (Legal-Ownership ?l-o)
(Owned-Entity ?l-o ?asset))))
:issues
((:Examples "MACHINE, equipment, land, building, material,
idea, design, patent, information")
"Capital-asset, fixed-asset and liquid-asset are specialisations of Asset
but are not central to our concerns. The differences between these are
determined by accounting standards."
"An Entity may be both an Asset and a Resource but some Assets are not
Resources and some Resources are not Assets.")
)
;;; Holds-Stake-In
(define-relation Holds-Stake-In (?stakeholder ?organisational-unit)
"A Relationship between an Actor and a Organisational-Unit whereby one or
more Purpose s of the Organisational-Unit are included In-Scope-Of-Interest
of the Actor. The Actor must be either a Legal-Entity or an
Organisational-Unit."
:def
(and (or (Legal-Entity ?stakeholder)
(Organisational-Unit ?stakeholder))
(Organisational-Unit ?organisational-unit)
(exists (?purpose) (and (Hold-Purpose ?organisational-unit ?purpose)
(In-Scope-Of-Interest ?stakeholder ?purpose))))
:issues
("The Stakeholder is usually one of: Owner, Partner, Shareholder, Employee"))
;;; Stakeholder
(define-class Stakeholder
(?stakeholder)
"An Actor that Holds-Stake-In some Organisational-Unit"
:iff-def
(and (Actor ?stakeholder)
(or (Legal-Entity ?stakeholder)
(Organisational-Unit ?stakeholder))
(exists (?organisational-unit)
(Holds-Stake-In ?stakeholder
?organisational-unit)))
:issues
("The Actor type restriction identifies the superclass.
OL is not clever enough to infer this from the type restrictions of other
Relationships."
"This is a special Role-Class.") )
;;; Employment-Contract
(define-frame Employment-Contract
:own-slots
((Documentation "an agreement between a Legal-Entity and a Person whereby
the Legal-Entity employs the Person")
(Instance-Of Class) (Subclass-Of Eo-Entity))
:template-slots
((Employer (Slot-Cardinality 1)
(Slot-Value-Type Legal-Entity))
(Employee (Slot-Cardinality 1)
(Slot-Value-Type Person))) )
;;; Employer
(define-relation Employer
(?employment-contract ?legal-entity)
"A Relationship between a Legal-Entity and an Employment-Contract
whereby the Legal-Entity employs some Person."
:def
(and (Employment-Contract ?employment-contract)
(Legal-Entity ?legal-entity)) )
;;; Employee
(define-relation Employee
(?employment-contract ?person)
"A Relationship between an Person and a Employment-Contract
whereby the Person is employed by some Legal-Entity"
:def
(and (Employment-Contract ?employment-contract)
(Person ?person)) )
;;; Share
(define-class Share (?share)
" A subdivision of the rights of Ownership of a
Corporation recognised by law and the Corporation"
:def
(and (Eo-Entity ?share))
:issues
("Note that this cannot be formally linked to Ownership because Shares are
fungible.") )
;;; Shareholding
(define-frame Shareholding
:own-slots
((Documentation
"A Relationship between a Legal-Entity and a Corporation whereby the former
owns a number of Shares of the Corporation")
(Instance-Of Class) (Subclass-Of Eo-Entity))
:template-slots
((Shareholder-Of (Minimum-Slot-Cardinality 0) (Slot-Cardinality 1)
(Slot-Value-Type Legal-Entity))
(Corporation-Of (Minimum-Slot-Cardinality 0) (Slot-Cardinality 1)
(Slot-Value-Type Corporation))
(Share-Type-Of (Minimum-Slot-Cardinality 0) (Slot-Cardinality 1)
(Slot-Value-Type Share-Type))
(Number-Held (Minimum-Slot-Cardinality 0) (Slot-Cardinality 1)
(Slot-Value-Type Positive))) )
;;; Shareholder-Of
(define-relation Shareholder-Of
(?shareholding ?legal-entity)
"The Legal-Entity in a Shareholding situation that owns the shares."
:def (and (Shareholding ?shareholding)
(Legal-Entity ?legal-entity)) )
;;; Shareholder
(define-class Shareholder (?legal-entity)
"A Legal-Entity owning one or more Shares in some Corporation"
:iff-def
(and (Legal-Entity ?legal-entity)
(Actor ?legal-entity)
(exists (?shareholding)
(Shareholder-Of ?shareholding ?legal-entity)))
:issues
("This is a special Role-Class."))
;;; Corporation-Of
(define-relation Corporation-Of
(?shareholding ?corporation)
"The Corporation in a Shareholding situation whose shares are owned."
:def (and (Shareholding ?shareholding)
(Corporation ?corporation)) )
;;; Share-Type-Of
(define-relation Share-Type-Of
(?shareholding ?type)
"The Share-Type in a Shareholding situation."
:def (and (Shareholding ?shareholding)
(Share-Type ?type)) )
;;; Share-Type
(define-class Share-Type (?share-type)
"A type of Share"
:def
(and (Eo-Entity ?share-type)) )
;;; Ordinary
(define-instance Ordinary (Share-Type)
"A type of share ..."
:issues ((:TODO "More documentation text would be appropriate here")) )
;;; Number-Held
(define-relation Number-Held
(?shareholding ?number)
"The Number of Shares owned in a Shareholding situation."
:def (and (Shareholding ?shareholding)
(Positive ?number)) )
;;; **********************************************************************
;;; MARKETING ONTOLOGY
;;; **********************************************************************
;;; For-Sale
(define-frame For-Sale
:own-slots
((Documentation
"A situation whereby one Legal-Entity offers to enter into a
Sale. This necessarily entails a Product-For-Sale and an
Asking-Price.")
(Instance-Of Class) (Subclass-Of Eo-Entity))
:template-slots
((Asking-Price (Slot-Cardinality 1)
(Slot-Value-Type Good-Service-Or-Money))
(For-Sale-Vendor (Slot-Cardinality 1)
(Slot-Value-Type Legal-Entity))
(Product-For-Sale (Slot-Cardinality 1)
(Slot-Value-Type Good-Service-Or-Money))
(Specified-Potential-Customer (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Legal-Entity)))
:issues
("The definition for For-Sale entails a necessary distinction
between the seller (VENDOR) and the buyer (Potential
Customer), in that only the former is offering something."
"Representing For-Sale as a Class in this manner, is
equivalent in meaning to modelling it as a ternary
Relationship between one Legal-Entity and two Goods,
Services, or Quantities of Money to be exchanged. This
approach was chosen becauses it seemed simpler. It is an
open question as to whether it makes much difference."))
;;; Sale-Offer
(define-class Sale-Offer (?x)
"A For-Sale situation with a Specified-Potential-Customer"
:iff-def
(and (For-Sale ?x)
(Exists (?le) (Specified-Potential-Customer ?x ?le))) )
;;; Good-Service-Or-Money
(define-class Good-Service-Or-Money
(?x)
"A good, a service, or a quantity of money."
:def
(and (Eo-Entity ?x))
:issues
("A general category including anything that can be
exchanged in a SALE."))
;;; For-Sale-Vendor
(define-frame For-Sale-Vendor
:own-slots
((Arity 2)
(Documentation
"The Legal-Entity offering a Good-Service-or-Money For-Sale
in exchange for an Asking-Price.
")
(Domain For-Sale) (Instance-Of Binary-Relation Function)
(Range Legal-Entity)))
;;; Product
(define-frame Product
:own-slots
((Documentation
"A Good-Service-or-Money that is or has the potential to be either
- offered For-Sale by a Vendor
- agreed to be exchanged by the Vendor with the Actual-Customer
in a Sale.
")
(Instance-Of Class)
(Subclass-Of Qua-Entity))
:axioms
(<=> (Product ?product)
(or (exists (?sale) (Product-Sold ?sale ?product))
(exists (?for-sale) (Product-For-Sale ?for-sale ?product))
(exists (?potential-sale)
(Potential-Product ?potential-sale ?product)) ))
:issues
("Product is a special Role-Class."
"We could have defined this class as the superclass of
three sub-classes corresponding to the Product-for-Sale,
Product-Sold and Potential-Product relationships; however, this was not
deemed useful or necessary at this point."))
;;; Sale
(define-frame Sale
:own-slots
((Documentation "An agreement between two
Legal-Entity s to exchange one Good-Service-or-Money for
another Good-Service-or-Money.")
(Instance-Of Class) (Subclass-Of Eo-Entity))
:template-slots
((Actual-Customer (Slot-Cardinality 1)
(Slot-Value-Type Legal-Entity))
(Product-Sold (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Good-Service-Or-Money))
(Sale-Price (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Good-Service-Or-Money))
(Sale-Vendor (Slot-Cardinality 1)
(Slot-Value-Type Legal-Entity)))
:issues
("A SALE may be characterised by a number of things,
including: sales type, volume, value"
"Representing SALE as a CLASS in this manner, is
equivalent in meaning to modelling it as a 4-ary
Relationship between two Legal-Entities and two
Goods, Services, or Quantities of Money exchanged.
This approach was chosen becauses it seemed simpler.
It is an open question as to whether it makes much
difference."))
;;; Product-Sold
(define-frame Product-Sold
:own-slots
((Arity 2)
(Documentation
"the Good-Service-or-Money that is agreed to be exchanged by
the Sale-Vendor with the
Actual-Customer in a Sale.")
(Domain Sale) (Instance-Of Binary-Relation Function)
(Range Good-Service-Or-Money))
:issues
("There is possible confusion with the use of the
term `product' when referring to something
produced/manufactured but which is not sold (i.e.
an intermediate product internal to a
manufacturing process). It may become necessary to
introduce two terms for this, such as `Market
Product' and `Manufactured Product'."))
;;; Sale-Price
(define-frame Sale-Price
:own-slots
((Arity 2) (Domain Sale) (Instance-Of Binary-Relation Function)
(Range Good-Service-Or-Money))
:documentation
"the Good-Service-or-Money that is agreed to be exchanged by
the ACTUAL-CUSTOMER with the SALE-VENDOR in a SALE."
:issues
("We specifically chose not to define the price as the `value'
of the PRODUCT, because value is relative, the price is the
actual thing exchanged (usually money)."))
;;; Asking-Price
(define-frame Asking-Price
:own-slots
((Arity 2)
(Documentation "the Good-Service-or-Money being asked for by a
Legal-Entity in exchange for a Product For-Sale.")
(Domain For-Sale) (Instance-Of Binary-Relation Function)
(Range Good-Service-Or-Money))
:issues
("We specifically chose not to define the price as the `value'
of the PRODUCT, because value is relative, the price is the
actual thing exchanged (usually money)."))
;;; Sale-Vendor
(define-frame Sale-Vendor
:own-slots
((Arity 2)
(Documentation
"The Legal-Entity in a Sale that agrees to exchange a
Product for a Sale Price.
")
(Domain Sale) (Instance-Of Binary-Relation Function)
(Range Legal-Entity)))
;;; Actual-Customer
(define-frame Actual-Customer
:own-slots
((Arity 2) (Domain Sale) (Instance-Of Binary-Relation Function)
(Range Legal-Entity))
:documentation
"The Legal-Entity in a Sale that agrees to exchange a
Sale Price for a Product.
"
:issues
("From the ACTUAL-CUSTOMER's perspective, the exchange
is referred to as `buying'."))
;;; Product-For-Sale
(define-frame Product-For-Sale
:own-slots
((Arity 2)
(Documentation
"the Good-Service-or-Money that is offered For-Sale by
a Legal-Entity.")
(Domain For-Sale) (Instance-Of Binary-Relation Function)
(Range Good-Service-Or-Money))
:issues
("There is possible confusion with the use of the
term `product' when referring to something
produced/manufactured but which is not sold (i.e.
an intermediate product internal to a
manufacturing process). It may become necessary to
introduce two terms for this, such as `Market
Product' and `Manufactured Product'."))
;;; Specified-Potential-Customer
(define-frame Specified-Potential-Customer
:own-slots
((Arity 2)
(Documentation
"A Relationship between a For-Sale and a Legal-Entity where by the
Legal-Entity is specifically being offered the Product-For-Sale")
(Domain For-Sale) (Instance-Of Binary-Relation)
(Range Legal-Entity))
:issues
("A For-Sale with a Specified-Potential-Customer is referred to as a
Sale-Offer" ))
;;; Vendor
(define-frame Vendor
:own-slots
((Documentation
"A Legal-Entity who either 1) offers a Product
For-Sale for an Asking-Price or 2) agrees to exchange a
Product for a Sale-Price in a Sale.")
(Instance-Of Class) (Subclass-Of Legal-Entity)
(Subclass-Of Actor))
:axioms
(<=> (Vendor ?vendor)
(or (exists (?sale) (Sale-Vendor ?sale ?vendor))
(exists (?for-sale) (For-Sale-Vendor ?for-sale ?vendor))
(exists (?potential-sale) (Potential-Vendor ?potential-sale ?vendor))))
:issues
("Vendor is a special Role-Class."
"We could have defined this class as the superclass of two
sub-classes corresponding to the Sale-Vendor and
For-Sale-Vendor relationships; however, this was not deemed
useful or necessary at this point."))
;;; ;;; Potential-Customer
;;;
;;; (define-class Potential-Customer (?x)
;;; "A Legal-Entity that can become an Actual-Customer in a Sale or
;;; a Specified-Potential-Customer in a For-Sale situation"
;;; :def
;;; (and (Legal-Entity ?x))
;;; :issues
;;; ((:Note "This definition includes both a Legal-Entity to whom a Product is
;;; offered For-Sale, and a Legal-Entity who might purchase something which
;;; is not but could be For-Sale.")
;;; (:Note "Since any Legal-Entity can potentially participate
;;; in a Sale,
;;; the set of all Legal-Entity s seems identical to the set of all
;;; Potential-Customer s. The main reason for having this class, which is strictly
;;; redundant, is to indicate a perspective on a Legal-Entity.")
;;; (:Note "Various conditions are possible any of which, singly
;;; or in combination, may or may not be true in a particular case:
;;;
;;; - the ability of Potential-Customer to afford the Asking-Price;
;;;
- the Legal-Entity having a Need;
;;;
- the existence of a Product having a Feature capable
;;; of satisfying a Need;
;;;
- the existence of a marketing Promotion aimed at Potential-Customer s.
;;;
")))
;;; NOTE: this is really same as legal entity, so has been redefined. see below
;;; Customer
(define-class Customer
(?x)
"Any Legal-Entity that participates in at least one of:
- the Actual-Customer relationship with respect to some Sale,
- the Potential-Customer relationship with respect to some Potential-Sale,
- the Specified-Potential-Customer Relationship with some Sale-Offer
"
:iff-def
(and (Legal-Entity ?x)
(Actor ?x)
(or (exists (?sale) (Actual-Customer ?sale ?x))
(exists (?potential-sale) (Potential-Customer ?potential-sale ?x))
(exists (?sale-offer) (Specified-Potential-Customer ?sale-offer ?x))
))
:issues
("This is a special Role-Class."
"This is an abstract class created purely for convenience. It is used for
typing certain Relationships whose arguments can be any kind of customer.") )
;;; Reseller
(define-class Reseller
(?x)
"A Customer who enters into a Sale for the Purpose of making further Sale s
of the Product, or derivatives of it. "
:def
(Customer ?x)
:issues
("As a matter of course, a Reseller is an Actual-Customer in one Sale
and a Vendor in another."
(:Todo "Consider adding formal axioms relating to Purpose and two Sale
agreements where the same Legal-Entity is clearly a Vendor in one case and an
Actual-Customer in another.")) )
;;; Competitor-Of
(define-relation Competitor-Of (?vendor1 ?vendor2 )
"a Relationship between two Vendors whereby one offers one or more Product s
For-Sale that could limit the Sale s of one or more Product s of the other
Vendor."
:def
(and (Vendor ?vendor1)
(Vendor ?vendor2))
:issues
((:Note "")
(:Todo "Consider adding detail by having an :iff-def and making explicit
the requirements given in the text definition, e.g. that there must be two
For-Sale situations, one for each vendor with the same Product. Note that
sameness of Product may be difficult to formalise, entailing a classification
of goods and needs etc. Also, to formalise the
notion of limiting potential Sales would probably be best avoided, it would
likely require temporal notions.")))
;;; Competitor
(define-class Competitor
(?competitor)
"Either Vendor in the Competitor-Of Relationship"
:iff-def
(and (Vendor ?competitor)
(Qua-Entity ?competitor)
(or (exists (?vendor2)
(Competitor-Of ?competitor ?vendor2))
(exists (?vendor1)
(Competitor-Of ?vendor1 ?competitor))))
:issues
("This is a special Role-Class.") )
;;; Potential-Sale
(define-frame Potential-Sale
:own-slots
((Documentation "A possible future Sale")
(Instance-Of Class) (Subclass-Of Eo-Entity))
:template-slots
((Potential-Product (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Good-Service-Or-Money))
(Potential-Price (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Good-Service-Or-Money))
(Potential-Customer (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Legal-Entity))
(Potential-Vendor (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Legal-Entity)))
:issues
("A Potential-Sale may be characterised by a number of things,
which give rise to Market-Segment s"))
;;; Potential-Product
(define-frame Potential-Product
:own-slots
((Arity 2) (Instance-Of Binary-Relation)
(Domain Potential-Sale)
(Range Good-Service-Or-Money))
:documentation
"the Good-Service-or-Money in a Potential-Sale that may become
the Product-Sold in a possible future Sale.")
;;; Potential-Price
(define-frame Potential-Price
:own-slots
((Arity 2) (Instance-Of Binary-Relation)
(Domain Potential-Sale)
(Range Good-Service-Or-Money))
:documentation
"the Good-Service-or-Money in a Potential-Sale that may become
the Sale-Price in a possible future Sale.")
;;; Potential-Customer
(define-frame Potential-Customer
:own-slots
((Arity 2) (Instance-Of Binary-Relation)
(Domain Potential-Sale)
(Range Legal-Entity))
:documentation
"The Legal-Entity in a Potential-Sale that may become the
Actual-Customer in a possible future Sale.")
;;; Potential-Vendor
(define-frame Potential-Vendor
:documentation
"The Legal-Entity in a Potential-Sale that may become the
Sale-Vendor in a possible future Sale"
:own-slots
((Arity 2) (Instance-Of Binary-Relation)
(Domain Potential-Sale)
(Range Legal-Entity))
)
;;; Market
(define-frame Market
:documentation
"All Sale s and Potential-Sale s within a scope of interest."
:own-slots
((Instance-Of Class) (Subclass-Of EO-Entity))
:issues
((:Todo "Technically, this should perhaps be a Set-Class whose base
class is an abstract class which is the union of Sale and Potential-Sale?
The abstract class might be called Any-Sale and the set class
would normally be named Set-of-Any-Sale, although `Market' is the more natural
name.
If so, the definition would have to be aligned with that of
Market-Segment which is a subclass of Market.")))
;;; Market-Segment
(define-frame Market-Segment
:documentation
"A portion of a Market including all
Sales and Potential-Sales limited to specified ranges of Products,
Vendors and Customers. Normally the ranges will be specified with defined
values of Segmentation-Variables, however the more general case of
defining the ranges as sets with explicit members is also allowed."
:own-slots
((Instance-Of Class) (Subclass-Of Market))
:template-slots
((Product-Range (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Set-of-Products))
(Customer-Range (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Set-of-Customers))
(Vendor-Range (Minimum-Slot-Cardinality 0)
(Slot-Value-Type Set-of-Vendors)))
:issues
("How to define ranges using existing ontologies from library?"
(:Todo "Perhaps this should be a Set-Class, see comment under Market
The thing is, the set of Sales and Potential-Sales is implicitly
defined by the product, customer and vendor ranges. Making this explicit may
not be useful.")))
;;; Product-Range
(define-frame Product-Range
:own-slots
((Arity 2) (Instance-Of Binary-Relation)
(Domain Market-Segment)
(Range Set-of-Products))
:documentation
"the Set-of-Products that a Market-Segment is limited to.")
;;; Customer-Range
(define-frame Customer-Range
:own-slots
((Arity 2) (Instance-Of Binary-Relation)
(Domain Market-Segment)
(Range Set-of-Customers))
:documentation
"the Set-of-Customers that a Market-Segment is limited to.")
;;; Vendor-Range
(define-frame Vendor-Range
:own-slots
((Arity 2) (Instance-Of Binary-Relation)
(Domain Market-Segment)
(Range Set-of-Vendors))
:documentation
"the Set-of-Vendors that a Market-Segment is limited to.")
;;; Set-of-Customers
(define-class Set-of-Customers
(?customers)
"A Set-Class all of whose instances are sets whose members are all of
Class Customer."
:iff-def
(and (EO-Set ?customers)
(and (Set ?customers)
(forall (?x)
(=> (Member ?x ?customers)
(Instance-Of ?x Customer)))))
:issues
("This is a special Set-Class") )
;;; Set-of-Products
(define-class Set-of-Products
(?products)
"A Set-Class all of whose instances are sets whose members are all of
Class Product."
:iff-def
(and (EO-Set ?products)
(and (Set ?products)
(forall (?x)
(=> (Member ?x ?products)
(Instance-Of ?x Product)))))
:issues
("This is a special Set-Class") )
;;; Set-of-Vendors
(define-class Set-of-Vendors
(?vendors)
"A Set-Class all of whose instances are sets whose members are all of
Class Vendor."
:iff-def
(and (EO-Set ?vendors)
(and (Set ?vendors)
(forall (?x)
(=> (Member ?x ?vendors)
(Instance-Of ?x Vendor)))))
:issues
("This is a special Set-Class") )
;;; Market-Research
(define-class Market-Research (?market-research)
"an Activity whose
Purpose is to better understand a Market;
Effect s include the existence of information about the Market."
:def (and (Activity ?market-research))
:issues
((:Note "Unlike the definition for Planning,
there is no formal link with Purpose or Effect in this
definition. It was not clear that we could do this in a meaningful,
general and useful way. One way to do this might be to have:
- a relation such as To-Better-Understand linking some Actor (e.g. Vendor)
with a Market.
- a concept such as Information along with a
relation called something like Relevant-To linking some Information with
the Market.
")) )
;;; Brand-Of
(define-relation Brand-Of (?brand ?vendor )
"a Relationship between a Vendor and a Name (i.e. a text string) whereby
the Name is identifiable by Customer s
the Name is associated with one or more Product s of the Vendor."
:def
(and (Vendor ?vendor)
(String ?brand))
:issues
(:Todo "Consider adding detail by having an :iff-def and making explicit
that there exists a For-Sale with the Product that the Customer can identify.
May have to introduce a relation such as
(Can-Identify ?customer ?brand)"))
;;; Brand
(define-class Brand
(?brand)
"The Name in the Brand-Of Relationship"
:iff-def
(and (String ?brand)
(Qua-Entity ?brand)
(exists (?vendor) (Brand-Of ?brand ?vendor)))
:issues
("This is a special Role-Class.") )
;;; Product-Image
(define-relation Product-Image (?product ?soa )
"a Relationship between a Product and a State-of-Affairs whereby there
are one more Customers that believe the State-of-Affairs to be true about the
Product."
:def
(and (Product ?product)
(State-of-Affairs ?soa))
:issues
(:Todo "Consider adding :def or :iff-def axioms making explicit
that there exists a Person who believes something about a Product."))
;;; Vendor-Image
(define-relation Vendor-Image (?vendor ?soa )
"a Relationship between a Vendor and a State-of-Affairs whereby there
are one more Customers that believe the State-of-Affairs to be true about the
Vendor."
:def
(and (Vendor ?vendor)
(State-of-Affairs ?soa))
:issues
(:Todo "Consider adding :def or :iff-def axioms making explicit
that there exists a Customer who believes something about a Vendor."))
;;; Brand-Image
(define-relation Brand-Image (?brand ?soa )
"a Relationship between a Brand and a State-of-Affairs whereby there
are one more Customers that believe the State-of-Affairs to be true about the
Brand."
:def
(and (Brand ?brand)
(State-of-Affairs ?soa))
:issues
(:Todo "Consider adding :def or :iff-def axioms making explicit
that there exists a Customer who believes something about a Brand."))
;;; Image
(define-class Image
(?image)
"The State-of-Affairs in one of the following Relationships:
- Product-Image
- Vendor-Image
- Brand-Image
"
:iff-def
(and (String ?image)
(Qua-Entity ?image)
(or (exists (?product) (Product-Image ?image ?product))
(exists (?vendor) (Vendor-Image ?image ?vendor))
(exists (?brand) (Brand-Image ?image ?brand)) ))
:issues
("This is a special Role-Class.") )
;;; Promotion
(define-class Promotion (?promotion)
"an Activity whose primary Purpose is to
improve the Image [of a Product, Brand and/or Vendor]"
:def (and (Activity ?promotion))
:issues
((:Todo "Consider whether to attempt to add :def or :iff-def axioms
using Intended-Purpose as is done in the definition of Planning.
Also might try to formalise what it means to improve a state of affairs, but
this could get tricky.")) )
;;; Feature
(define-class Feature
(?feature)
"An Attribute of a Product which may satisfy the Need of a
Customer"
:def
(and (EO-Entity ?feature))
:issues
(:Todo "Consider benefits of having a tighter coupling between
Feature and Need, clarifying their relationship with Relation and/or a
State-of-Affairs. E.g. a car has the feature of providing transport; a
Customer has a Need to be transported. There should be some way to have a
single notion of transport which can be provided say by a cycle, a car, or
a boat.
One can think of Has-Feature as a
relationship between a Product and a State-of-Affairs whereby the
State-of-Affairs holds with respect to the Product. For example,
(colour-of Product red). In this case, Feature could be defined as a
Role-Class based on the Has-Feature Relation. This is second order stuff
which could get
complicated.") )
;;; Need
(define-class Need
(?need)
"A physical, psychological or sociological requirement of a Customer"
:def
(and (EO-Entity ?need))
:issues
(:Todo "Might define Need as a Role-Class based on the
Satisfies-Need. See also Todo note under Feature.") )
;;; Market-Need
(define-class Market-Need (?need) "An identifiable Need of a Customer which
is not fully satisfied by Product s currently For-Sale"
:def
(and (Need ?need)
(exists (?customer)
(and (Customer ?customer)
(Has-Need ?customer ?need)
(not (exists (?for-sale ?product ?feature)
(and (Product-For-Sale ?for-sale ?product)
(Has-Feature ?product ?feature)
(Satisfies-Need ?feature ?need)
)))))))
;;; Has-Feature
(define-relation Has-Feature(?product ?feature)
"a Relationship between a Product and an Feature whereby
the Product possesses a Feature which potentially
Satisfies-Need of a Customer"
:def
(and (Product ?product)
(Feature ?feature)) )
;;; Has-Need
(define-relation Has-Need(?customer ?need)
"a Relationship between a Customer and an Need whereby
the Customer possesses a Need which potentially could be satisfied by
some Product which has the appropriate Feature (Has-Feature)"
:def
(and (Customer ?customer)
(Need ?need)) )
;;; Satisfies-Need
(define-relation Satisfies-Need(?feature ?need)
"a Relationship between a Feature and a Need whereby
if a Customer Has-Need Need and possesses a Product that Has-Feature Feature,
the Product can fulfill the Customer's need."
:def
(and (Feature ?feature)
(Need ?need))
:issues
((:Note "This is the driving force of the Market.")
(:Example " (Customer 'joe-bloggs')
(Product car)
(Need 'be-transported')
(Feature 'provides-transport')
(Satisfies-Need 'provides-transport' 'be-transported')
(Has-Feature car 'provides-transport')
(Has-Need Joe-Bloggs 'be-transported')")
(:Todo "May need to classify types of customers (e.g. yuppie)
and types of products rather
than individual instances of them, as in above example.
Product-Range and Customer-Range might be used to do this.")
))
;;; Segmentation-Variable
(define-frame Segmentation-Variable
:documentation
"Any attribute determinable from a Sale, Sale-Offer or Potential-Sale
in a Market."
:own-slots
((Instance-Of Class Relation) (Subclass-Of Relation))
:issues
("This is a second order predicate denoting a subclass of Relations."
"This is an abstract class provided mainly for convenience, so it is easy
to see what all the Relations are that are used to segment a Market."
"It is up to Ontology developers, users and maintainers to make
sure each Relation so used is is declared to be an instance of
Segmentation-Variable."
(:Decision "We intentionally refrained from defining this formally and
precisely in terms of Sale, Sale-Offer or Potential-Sale. Doing so would
be awkward and of no obvious value.")
(:Examples "
- Product: identity, size, shape, colour, sex appeal
- Vendor: geographical location, size
- Customer: socio-economic class, age, sex
- Sale: geographical location, date sold
")))