;;; 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 "

") (:Acknowledgements "") (: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

") (: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: 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. ") (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:

    1. there is a distinction between Partnership and Corporation;
    2. each Partner may have unlimited liability for the debts of the Partnership to other Legal-Entity s;
    3. 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: " "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 ") (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: ;;; "))) ;;; 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: " :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: ")) ) ;;; 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: " :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 " ")))