;;; Mode: Lisp; Package: ocml ;;; The Open University (in-package "OCML") (in-ontology aktive-portal-ontology) (def-class GENERIC-AGENT (temporal-thing) "This is a generic notion, an agent can be an organization, a person an animal, a software agent, etc" ) (def-class LEGAL-AGENT (generic-agent) "Some agents have legal status: definitely organizations and people, anybody else?") (def-class ORGANIZATION (legal-agent) "An organization is a type of legal agent" ((has-web-address :type URL) (full-name :type string) (has-address :type postal-address) (affiliated-people :type affiliated-person) (organization-part-of :type organization) (has-sub-unit :type organization-unit) (headed-by :type affiliated-person) (has-size :cardinality 1 :type organization-size) )) (def-class ORGANIZATION-SIZE (intangible-thing)) (def-instance VERY-LARGE-SIZE organization-size) (def-instance LARGE-SIZE organization-size) (def-instance MEDIUM-SIZE organization-size) (def-instance SMALL-SIZE organization-size) (def-instance MICRO-SIZE organization-size) (def-class SMALL-OR-MEDIUM-SIZED-ORGANIZATION (organization) ?x "SME are important, so we define a class to represent them explicitly. In some case we might not know or we do not want to bother specifying excatly whether something is a small-organization or a medium-organization. Hence, we can just say 'x is a SME' without going into further detail" :iff-def (and (organization ?x) (has-size ?x ?size) (member ?size '(micro-size small-size medium-size))) :avoid-infinite-loop t) (def-class ORGANIZATION-UNIT (generic-agent) "An organization may have a number of units. Units may themselves have sub-units" ((has-web-address :type URL) (full-name :type string) (has-address :type postal-address) (has-size :type organization-size) (affiliated-people :type affiliated-person) (unit-of-organization :type organization) (sub-unit-of-organization-unit :type organization-unit) (has-sub-unit :type organization-unit) (headed-by :type affiliated-person))) (def-rule UNIT-OF-ORGANIZATION-IS-TRANSITIVE ((unit-of-organization ?u ?o) if (sub-unit-of-organization-unit ?u ?u-super) (unit-of-organization ?u-super ?o))) (def-class NON-PROFIT-ORGANIZATION (organization)) (def-class PROFIT-ORGANIZATION (organization) ((subsidiary-of :type profit-organization))) (def-class PARTNERSHIP (profit-organization) "A partnership is not necessarily a company, e.g. a consultancy firm is not a company") (def-class COMPANY (profit-organization)) (def-class PRIVATE-COMPANY (company)) (def-class PUBLIC-COMPANY (company)) (def-class INDUSTRIAL-ORGANIZATION (profit-organization )) (def-class GOVERNMENT-ORGANIZATION (non-profit-organization)) (def-class CIVIL-SERVICE (GOVERNMENT-ORGANIZATION)) (def-class GOVERNMENT (GOVERNMENT-ORGANIZATION) ((government-of-country :type country))) (def-class CHARITABLE-ORGANIZATION (non-profit-organization)) (def-class LEARNING-CENTRED-ORGANIZATION (organization)) (def-class R&D-INSTITUTE (learning-centred-organization )) (def-class R&D-INSTITUTE-WITHIN-LARGER-ORGANIZATION (r&d-institute organization-unit)) (def-class EDUCATIONAL-ORGANIZATION (learning-centred-organization )) (def-class HIGHER-EDUCATIONAL-ORGANIZATION (educational-organization) ((has-academic-unit :type academic-unit) (has-support-unit :type academic-support-unit))) (def-rule HAS-ACADEMIC-UNIT-IMPLIES-HAS-ORGANIZATION-UNIT ((has-sub-unit ?x ?y) if (has-academic-unit ?x ?y))) (def-rule HAS-SUPPORT-UNIT-IMPLIES-HAS-ORGANIZATION-UNIT ((has-sub-unit ?x ?y) if (has-support-unit ?x ?y))) (def-class UNIVERSITY (higher-educational-organization) ((has-faculty :type university-faculty) (has-vice-chancellor :type educational-employee)) :slot-renaming ((has-vice-chancellor headed-by))) (def-class DISTANCE-TEACHING-UNIVERSITY (university)) (def-class SCHOOL (educational-organization)) (def-class ACADEMIC-UNIT (organization-unit) ((unit-of-organization :type university) (has-size :default-value small-size :documentation "By default academic units are small organizations"))) (def-class UNIVERSITY-FACULTY (academic-unit)) (def-class ACADEMIC-SUPPORT-UNIT (organization-unit)) (def-class PUBLISHING-HOUSE (organization)) (def-class LOCATION (thing) "A generic class for locations. It includes both real and fantastic places") (def-class GEOGRAPHICAL-REGION (tangible-thing location) "'Real' geographical regions") (def-class GEOPOLITICAL-ENTITY (Geographical-Region Generic-Agent) "For instance, Russia, Italy, The-city-of-Messina, etc..") (def-class COUNTRY (Geopolitical-Entity) ((has-capital :type capital-city) (has-currency :type currency) (has-government :type government))) (def-class CURRENCY (information-bearing-object) ((issued-by :type government))) (def-class AMOUNT-OF-MONEY (Quantity) ((has-unit-of-measure :type currency) (has-amount :type number)) :slot-renaming ((has-amount has-magnitude))) (def-class MUNICIPAL-UNIT (geopolitical-entity)) (def-class CITY (municipal-unit)) (def-class CAPITAL-CITY (city) ((is-capital-of :type country))) (def-axiom CONSISTENCY-BETWEEN-COUNTRIES-AND-CAPITAL-CITIES (<=> (is-capital-of ?city ?country) (has-capital ?country ?city))) (def-class VILLAGE (municipal-unit)) (def-class LOCAL-DISTRICT (geopolitical-entity)) (def-class ADDRESS (thing) "A generic class for addresses, whether email or postal. Is an address a tangible thing or an intangible thing?") (def-class POSTAL-ADDRESS (address) ((address-street :type string) (address-area :type local-district) (address-number :type integer) (address-building :type string) (address-city-or-village :type municipal-unit) (address-postcode :type string) (address-region :type geographical-region) (address-country :type country))) (def-class EMAIL-ADDRESS (string address) ?x :sufficient-for-type-checking (string ?x)) (def-class PERSON (legal-agent) ((full-name :type string) (Family-Name :type string) (Given-Name :type string) (has-gender :type gender) (has-telephone-number :type string) (has-postal-address :type postal-address) (has-web-address :type URL) (has-email-address :type email-address) (has-appellation :type appellation))) (def-class APPELLATION (Intangible-thing)) (def-instance DR appellation) (def-instance MR appellation) (def-instance MS appellation) (def-instance MISS appellation) (def-instance PROF appellation) (def-instance MRS appellation) (def-instance SIR appellation) (def-instance LADY appellation) (def-class GENDER (Intangible-thing) ?x "HPKB says that genders are intangible..Uhm..." :iff-def (element-of ?x (set-of male-gender female-gender))) (def-instance MALE-GENDER gender) (def-instance FEMALE-GENDER gender) (def-class AFFILIATED-PERSON (person) ((has-affiliation-to-unit :type organization-unit) (has-affiliation :type organization :min-cardinality 1))) (def-class WORKING-PERSON (person) ((has-work-status :type work-status))) (def-class WORK-STATUS (Intangible-thing)) (def-instance FULL-TIME work-status) (def-instance PART-TIME work-status) (def-class SELF-EMPLOYED-PERSON (working-person)) (def-class EMPLOYEE (affiliated-person working-person) ?x ((works-for :type organization) (works-in-unit :type organization-unit) (has-job-title :type string) ) :slot-renaming ((works-for has-affiliation)) :constraint (forall (?u ?o) (=> (and (works-in-unit ?x ?u) (works-for ?x ?o)) (unit-of-organization ?u ?o)))) (def-class EDUCATIONAL-EMPLOYEE (employee) ?x ((works-for :min-cardinality 1 :type educational-organization)) :iff-def (and (works-for ?x ?y) (educational-organization ?y)) :no-proofs-by (:iff-def)) ;;to avoid endless loops with the renaming in ;;the definition of Employee (def-class STUDENT (affiliated-person) ((has-affiliation :type educational-organization :min-cardinality 1))) (def-class ACADEMIC (educational-employee) ((works-for :type higher-educational-organization) (has-research-interest :type research-area))) (def-class RESEARCHER (working-person) ((has-research-interest :type research-area))) (def-class RESEARCHER-IN-ACADEMIA (academic researcher)) (def-class RESEARCH-FELLOW-IN-ACADEMIA (researcher-in-academia)) (def-class SENIOR-RESEARCH-FELLOW-IN-ACADEMIA (researcher-in-academia)) (def-class RESEARCH-ASSISTANT-IN-ACADEMIA (researcher-in-academia)) (def-class LECTURER-IN-ACADEMIA (academic)) (def-class SENIOR-LECTURER-IN-ACADEMIA (academic)) (def-class PROFESSOR-IN-ACADEMIA (academic)) (def-class READER-IN-ACADEMIA (academic)) ;;;Some sample instances below..... (def-instance THE-OPEN-UNIVERSITY distance-teaching-university ((has-web-address "http://www.open.ac.uk") (has-sub-unit knowledge-media-institute) (has-size large-size))) (def-instance UNIVERSITY-OF-SOUTHAMPTON university ((has-web-address "http://www.ecs.soton.ac.uk") (has-academic-unit dept-of-electronics-and-computer-science-at-southampton) (has-size large-size))) (def-instance UNIVERSITY-OF-EDINBURGH university ((has-size large-size) (has-web-address "http://www.ed.ac.uk/") (has-academic-unit division-of-informatics-at-edinburgh))) (def-instance UNIVERSITY-OF-SHEFFIELD university ((has-web-address "http://www.shef.ac.uk") (has-academic-unit dept-of-computer-science-at-sheffield) (has-size large-size))) (def-instance UNIVERSITY-OF-ABERDEEN university ((has-size large-size) (has-web-address "http://www.abdn.ac.uk/") (has-academic-unit dept-of-computing-science-at-aberdeen))) (def-instance EPSRC non-profit-organization ((has-size small-size))) (def-instance DEPT-OF-COMPUTING-SCIENCE-AT-ABERDEEN academic-unit ((has-web-address "http://www.csd.abdn.ac.uk/") (unit-of-organization university-of-aberdeen))) (def-instance DEPT-OF-COMPUTER-SCIENCE-AT-SHEFFIELD academic-unit ((has-web-address "http://www.dcs.shef.ac.uk") (unit-of-organization university-of-sheffield))) (def-instance KNOWLEDGE-MEDIA-INSTITUTE r&d-institute-within-larger-organization ((has-web-address "http://kmi.open.ac.uk") (has-size small-size) (unit-of-organization the-open-university))) (def-instance FACULTY-OF-SCIENCE-AND-ENGINEERING-AT-EDINBURGH university-faculty ((unit-of-organization university-of-edinburgh))) (def-instance DIVISION-OF-INFORMATICS-AT-EDINBURGH academic-unit ((has-web-address "http://www.informatics.ed.ac.uk/") (sub-unit-of-organization-unit faculty-of-science-and-engineering-at-edinburgh) (unit-of-organization university-of-edinburgh))) (def-instance DEPT-OF-ELECTRONICS-AND-COMPUTER-SCIENCE-AT-SOUTHAMPTON academic-unit ((unit-of-organization university-of-southampton))) (def-instance JOHN-DOMINGUE senior-research-fellow-in-academia ((has-research-interest e-commerce-research-area software-visualization knowledge-management organizational-learning) (works-for the-open-university) (works-in-unit knowledge-media-institute) (has-job-title "Deputy Director, Knowledge Media Institute") (has-work-status full-time) (has-appellation dr) (has-email-address "j.b.domingue@open.ac.uk") (has-web-address "http://kmi.open.ac.uk/people/john") (has-gender male-gender) (full-name "john domingue"))) (def-instance NIGEL-SHADBOLT professor-in-academia "What does 'R.' stand for in 'Nigel R. Shadbolt'?" ((has-research-interest knowledge-acquisition knowledge-management) (works-for University-of-southampton) (works-in-unit dept-of-electronics-and-computer-science-at-southampton) (has-job-title "Professor of Knowledge Something") (has-work-status full-time) (has-appellation prof) (has-email-address "nrs@ecs.soton.ac.uk") (has-web-address "http://www.ecs.soton.ac.uk/~nrs/") (has-gender male-gender) (full-name "Nigel Rodriguez Shadbolt")))