;;; Mode: Lisp; Package: ocml ;;; File created in WebOnto (in-package "OCML") (in-ontology sdpo) ;; TOP (def-class #_situation (#_d-s:situation) ((satisfies :type #_description :min-cardinality 1))) (def-class #_description (#_d-s:description) ((d-uses :type #_descriptive-concept :min-cardinality 1))) (def-class #_abstract-goal (#_d-s:endurant) ((defined-by :type #_goal-description :min-cardinality 1) (supported-by :type #_brokered-goal :min-cardinality 1))) ;; DESCRIPTIONS (def-class #_situation-description (#_description) ((satisfied-by :type #_situation :cardinality 1) (d-uses :type #_situation-concept :min-cardinality 1) (plays :type #_bounding-role))) (def-class #_goal-description (#_description) ?gd ((defines :type #_abstract-goal :cardinality 1) (d-uses :type #_goal-concept :min-cardinality 3)) :constraint (exists (?x ?y ?z) (and (d-uses ?gd ?x) (#_assumption ?x) (d-uses ?gd ?y) (#_effect ?y) (d-uses ?gd ?z) (#_brokered-goal-invocation ?z)))) (def-class #_profile-description (#_description) ((defines :type #_situation-concept :cardinality 1) (d-uses :type #_profile-parameter :min-cardinality 1))) ;; DESCRIPTIVE CONCEPTS (def-class #_descriptive-concept (#_d-s:concept)) (def-class #_descriptive-role (#_d-s:functional-role #_descriptive-concept) ((played-by :type #_description :cardinality 1))) ;situation description (def-class #_situation-concept (#_descriptive-concept) ((defined-by :type #_profile-description :min-cardinality 1))) (def-class #_situation-parameter (#_d-s:parameter #_situation-concept) ((plays :type #_situation-role :cardinality 1))) (def-class #_situation-role (#_d-s:functional-role #_situation-concept role) ((played-by :type #_situation-parameter :min-cardinality 1))) (def-class #_actor-role (#_situation-role) "who") (def-class #_environment-role (#_situation-role) "where") (def-class #_temporal-role (#_situation-role) "when") (def-class #_objective-role (#_situation-role) "why") (def-class #_resource-role (#_situation-role) "what") (def-class #_strategy-role (#_situation-role) "how") (def-class #_profile-parameter (#_situation-parameter) ?p :iff-def (exists ?d (and (#_profile-description ?d) (d-uses ?d ?p)))) ;goal description (def-class #_goal-concept (#_descriptive-concept)) (def-class #_bounding-role (#_goal-concept #_descriptive-role) ((played-by :type #_situation-description :min-cardinality 1))) (def-class #_assumption (#_bounding-role)) (def-class #_effect (#_bounding-role)) (def-class #_brokered-goal-invocation (#_goal-concept #_d-s:course-of-event) ((sequences :type #_brokered-goal :min-cardinality 1))) ;; BROKERED GOALS (def-class #_brokered-goal (goal) ((supports :type #_abstract-goal))) ;; RELATIONS (def-relation assumes (?gd ?sd) :sufficient (exists (?a) (and (#_assumption ?a) (d-uses ?gd ?a) (played-by ?a ?sd)))) ;(setofall '?x `(assumes learning-intermediate-description ?x)) (def-relation effects (?gd ?sd) :sufficient (exists (?e) (and (#_effect ?e) (d-uses ?gd ?e) (played-by ?e ?sd)))) ;(setofall '?x `(effects learning-basic-description ?x)) ;; (def-relation supported-by (?g ?bg) :sufficient (exists (?gd ?i) (and (#_brokered-goal-invocation ?i) (defines ?gd ?g) (d-uses ?gd ?i) (sequences ?i ?bg)))) ;(setofall '?x `(supported-by learning-basic ?x)) (def-relation supports (?bg ?g) :iff-def (supported-by ?g ?bg)) ;(setofall '?x `(supports |http://www.kmi.open.ac.uk/sdpo#get-los| ?x)) ;; (def-relation satisfies (?s ?sd) :iff-def (satisfied-by ?sd ?s)) ;(setofall '?x `(satisfies basic-learner-situation ?x)) (def-relation satisfies-goal-pair (?s ?pair) :sufficient (exists (?sd ?gd) (and (#_situation-description ?sd) (#_goal-description ?gd) (satisfies ?s ?sd) (assumes ?gd ?sd) (= ?pair (?sd ?gd))))) ;(setofall '?x `(satisfies-goal-pair new-learner-situation ?x)) (def-relation satisfies-profile-pair (?s ?pair) :sufficient (exists (?sd ?sc ?pd) (and (#_situation-description ?sd) (#_profile-description ?pd) (#_situation-concept ?sc) (satisfies ?s ?sd) (d-uses ?sd ?sc) (defines ?pd ?sc) (= ?pair (?sd ?pd))))) ;(setofall '?x `(satisfies-profile-pair intermediate-learner-situation ?x)) ;; (def-relation affords (?s ?g) :sufficient (exists (?pair) (and (satisfies-pair ?s ?pair) (defines (second ?pair) ?g)))) ;(setofall '?x `(affords intermediate-learner-situation ?x)) (def-relation leads-to (?g ?s) :sufficient (exists (?gd ?sd) (and (#_goal-description ?gd) (defines ?gd ?g) (effects ?gd ?sd) (#_situation-description ?sd) (satisfies ?s ?sd)))) ;(setofall '?x `(leads-to learning-advanced ?x)) ;; roles are elements pre-defined in the ontology; situation parameters are added at runtime and link ("plays") to the existing roles! ;; k-operator "identifies the actual value of a relation (e.g. leads-to), given knowing information" ;; reasoning, in general, from the description to the concepts!!! because generally the user will create description instances and not concepts ;; testing INSTANCES ;; situations: only the instance names are necessary! (def-class learning-situation (#_situation)) (def-instance new-learner-situation learning-situation) (def-instance basic-learner-situation learning-situation) (def-instance intermediate-learner-situation learning-situation) (def-instance advanced-learner-situation learning-situation) (def-instance expert-learner-situation learning-situation) ;; situation descriptions ;; aggiungere altri ruoli: gap, preferences, etc. (def-class learning-situation-description (#_situation-description) ((d-uses :value learning-resource))) (def-instance new-learner-situation-description learning-situation-description ((satisfied-by new-learner-situation) (d-uses new-learner))) (def-instance basic-learner-situation-description learning-situation-description ((satisfied-by basic-learner-situation) (d-uses basic-learner))) (def-instance intermediate-learner-situation-description learning-situation-description ((satisfied-by intermediate-learner-situation) (d-uses intermediate-learner))) (def-instance advanced-learner-situation-description learning-situation-description ((satisfied-by advanced-learner-situation) (d-uses advanced-learner))) (def-instance expert-learner-situation-description learning-situation-description ((satisfied-by expert-learner-situation) (d-uses expert-learner))) ;; roles: specific for e-Learning (def-instance learning-resource #_resource-role) (def-instance filtering-resource #_resource-role) (def-class learner (#_actor-role)) (def-instance new-learner learner) (def-instance basic-learner learner) (def-instance intermediate-learner learner) (def-instance advanced-learner learner) (def-instance expert-learner learner) (def-class learner-profile (#_profile-description) ((defines :type #_learner))) (def-instance new-learner-profile learner-profile ((defines new-learner))) (def-instance basic-learner-profile learner-profile ((defines basic-learner) (d-uses basic-competency))) (def-instance intermediate-learner-profile learner-profile ((defines intermediate-learner) (d-uses basic-competency intermediate-competency))) (def-instance advanced-learner-profile learner-profile ((defines advanced-learner) (d-uses basic-competency intermediate-competency advanced-competency))) (def-instance expert-learner-profile learner-profile ((defines expert-learner) (d-uses basic-competency intermediate-competency advanced-competency expert-competency))) ;; situation parameters ;; competencies (def-class learning-competency (#_situation-parameter) ((plays :value learning-resource))) (def-instance basic-competency learning-competency) (def-instance intermediate-competency learning-competency) (def-instance advanced-competency learning-competency) (def-instance expert-competency learning-competency) ;; actors (def-class luisa-actor (#_situation-parameter) ((plays :type learner))) (def-class uhp-actor (luisa-actor)) (def-class eads-actor (luisa-actor)) ;;; abstract goals (def-class learning-goal (#_abstract-goal)) (def-instance learning-basic learning-goal) (def-instance learning-intermediate learning-goal) (def-instance learning-advanced learning-goal) (def-instance learning-expert learning-goal) ;; goal descriptions (def-class learning-goal-description (#_goal-description) ((defines :type learning-goal) (d-uses :value get-repositories-invocation :value get-los-invocation))) (def-instance learning-basic-description learning-goal-description ((defines learning-basic) (d-uses learning-basic-effect learning-basic-assumption))) (def-instance learning-basic-effect #_effect ((played-by basic-learner-situation-description))) (def-instance learning-basic-assumption #_assumption ((played-by new-learner-situation-description))) (def-instance learning-intermediate-description learning-goal-description ((defines learning-intermediate) (d-uses learning-intermediate-effect learning-intermediate-assumption))) (def-instance learning-intermediate-effect #_effect ((played-by intermediate-learner-situation-description))) (def-instance learning-intermediate-assumption #_assumption ((played-by basic-learner-situation-description new-learner-situation-description))) (def-instance learning-advanced-description learning-goal-description ((defines learning-advanced) (d-uses learning-advanced-effect learning-advanced-assumption))) (def-instance learning-advanced-effect #_effect ((played-by advanced-learner-situation-description))) (def-instance learning-advanced-assumption #_assumption ((played-by intermediate-learner-situation-description))) (def-instance learning-expert-description learning-goal-description ((defines learning-expert) (d-uses learning-expert-effect learning-expert-assumption))) (def-instance learning-expert-effect #_effect ((played-by expert-learner-situation-description))) (def-instance learning-expert-assumption #_assumption ((played-by advanced-learner-situation-description intermediate-learner-situation-description))) ;; brokered-goals (def-class get-repositories (#_brokered-goal)) (def-instance get-repositories-invocation #_brokered-goal-invocation ((sequences get-repositories))) (def-class get-los (#_brokered-goal)) (def-instance get-los-invocation #_brokered-goal-invocation ((sequences get-los))) #| (def-class get-learner-profile-goal (#_brokered-goal) ?goal ((has-input-role :value current-learner) (has-input-soap-binding :value (current-learner "sexpr")) (has-output-role :value current-learner-resources) (has-output-soap-binding :value (current-learner-resources "sexpr")) (current-learner :type learner) (current-learner-resources :type #_resource-role))) (DEF-CLASS LUISA-LPMO-GET-LEARNING-PROCESS-GOAL (GOAL) ?GOAL ((HAS-INPUT-ROLE :VALUE HAS-SITUATION) (HAS-INPUT-SOAP-BINDING :VALUE (HAS-SITUATION "string")) (HAS-OUTPUT-ROLE :VALUE HAS-URL) (HAS-OUTPUT-SOAP-BINDING :VALUE (HAS-URL "xml")) (HAS-SITUATION :TYPE STRING) (HAS-URL :TYPE learning-process-result) (HAS-NON-FUNCTIONAL-PROPERTIES :VALUE LUISA-LPMO-GET-LEARNING-PROCESS-GOAL-NON-FUNCTIONAL-PROPERTIES))) |# ;;; comments: ;; using roles for defining a situation at the class level (prototype), the situation is completed at runtime by assigning parameters to roles ;; some of the roles can assigned by the user some of them resuting from goal invication results ;; the goals can be selected on the basis of the available roles (assigned parameters) and needed roles ;; usare un DOLCE approccio: roles --> parameters --> regions --> css ;; goal availability based on pre and post conditions? may be not, but we may define some rules for linking/decompose goals? ;; k-operator: takes a relation and returns what the systems knows about such a relation (contextualize a relation to a specific runtime situation-description) ;;;;;;;;;;;;;; Banco di prova #| (def-class autorita ()) (def-instance autorita1 autorita) (def-instance autorita2 autorita) (def-class persona () ((has-autorita :type autorita) (has-organizzazione :type organizzazione))) (def-instance p1 persona ((has-autorita autorita2) (has-organizzazione o1))) (def-instance p11 persona ((has-autorita autorita1) (has-organizzazione o1))) (def-instance p2 persona ((has-autorita autorita1) (has-organizzazione o2))) (def-relation direttore-generale (?o ?p) :constraint (and (organizzazione ?o) (persona ?p))) (def-class organizzazione () ((direttore-generale :type persona))) (def-instance o1 organizzazione ()) (def-instance o2 organizzazione ()) ;(set-slot-value 'o1 'direttore-generale 'p2) (def-function get-direttore-generale (?o) :body (setofall ?x (and (has-organizzazione ?x ?o) (has-autorita ?x autorita1)))) (def-procedure create-organigramma-organizzazione (?o) :body (do (set-slot-value ?o direttore-generale (first (get-direttore-generale ?o))))) ;(ocml-eval (create-organigramma-organizzazione 'o1)) ;(ask (direct-instance-of o1 ?x)) |#