Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
hekate:hathor [2010/04/11 12:56] kkluza uml trans |
hekate:hathor [2019/06/27 15:49] (current) |
| |
===== UML-based Translation ===== | ===== UML-based Translation ===== |
| |
| UML-based Translators are based on //Analysis of UML Representation for XTT and ARD Rule Design Methods// |
| CSL Technical Report no. 5/2009 AGH University of Science and Technology (for [[http://cslab.ia.agh.edu.pl/csltr:listaraportow|more reports...]]): |
| |
| * [[http://vtls.cyf-kr.edu.pl/cgi-bin/abc-k/chameleon?sessionid=2010010101371132340&skin=abc-k&lng=pl&inst=consortium&host=localhost%2b9898%2bDEFAULT&search=FREEFORM&function=CARDSCR&SourceScreen=NEXTPAGE&elementcount=1&t1=kol:KOL03%20%26%20bl:m&u1=0&pos=46&itempos=1&rootsearch=FREEFORM|ABC-KRAKOW record of the report]] |
| * [[http://winntbg.bg.agh.edu.pl/csl/csltr-5-2009.pdf|CSL Technical Report no. 5/2009 online]] |
| |
| **Download**: |
| |
| Translators: {{:hekate:translators.tar.gz}} |
| |
| **Requirements**: |
| * The [[http://xmlsoft.org/XSLT/xsltproc2.html|xsltproc]] tool (or similar XSLT processor) |
| * hml.dtd file |
| |
| **HOW TO**: |
| |
| An exemplary translation from hml file to xmi file: |
| <code> |
| xsltproc translator.xsl hekate_case_nazwa.hml > hekate_case_nazwa.xmi |
| </code> |
| |
| |
| ===== HaThoR v.2.0 ===== |
| |
| HaThoR (v.2.0) is a set of XSLT translators which translate (parts of) [[hekate:hekate_markup_language|HML]] files into other knowledge representation languages. |
| * Information about the first version of HaThoR can be found [[hekate:hathor|here]]. |
| * Evaluation of the first version (including miw projects: [[pl:miw:2009:miw09_swrltrans|XTT->SWRL]] and [[pl:miw:miw08_xtt_rif|XTT->RIF]]) can be found [[hekatedev:hathor_evaluation|here]]. |
| |
| __HaThoR v.2.0 consists of the following translators:__ |
| * ATTML -> OWL (RDF/XML syntax) |
| * ATTML -> OWL2 (RDF/XML syntax) |
| |
| * ARDML -> OWL (RDF/XML syntax) |
| * ARDML -> OWL2 (RDF/XML syntax) |
| |
| * XTTML -> SWRL (RDF/XML syntax) |
| * XTTML -> RIF Core |
| * XTTML -> RIF PRD |
| |
| * STATE -> OWL (RDF/XML syntax) |
| * STATE -> OWL2 (RDF/XML syntax) |
| |
| * HML -> SWRL/OWL (RDF/XML syntax) |
| * HML (without XTTML) -> OWL2 (RDF/XML syntax) |
| |
| ==== Download ==== |
| {{:hekatedev:hathor2-final.tar.gz|}} |
| |
| ==== HaThoR online ==== |
| [[http://home.agh.edu.pl/~wta/onto/hathor2/www/|HaThoR online]] |
| |
| ==== Cases ==== |
| HeKatE cases: |
| * cardio |
| * cashpoint |
| * health |
| * hello |
| * thermostat |
| * upsell |
| |
| Download: {{:hekatedev:hathor2-hekate-cases.tar.gz|hekate cases translated with hathor2}} |
| |
| |
| |
| ==== Translators - shortly ==== |
| * **attml2owl1** [[http://home.agh.edu.pl/wta/onto/hathor2/attml2owl1.xsl|attml2owl1.xsl]] |
| * based on hathor1 by JSJ |
| * syntactic changes |
| * HML2 compliance |
| * some potentially misleading changes of datatype properties: |
| * range(ordered)={ordered,unordered} -> range(tpeIsOrdered)=boolean |
| * range(att_value)={single,multiple} -> range(attHasClass)={simple,general} |
| * range(att_class)={ro,rw,wo,state} -> range(attHasComm)={in,io,out,state} |
| * **attml2owl2** [[http://home.agh.edu.pl/wta/onto/hathor2/attml2owl2.xsl|attml2owl2.xsl]] |
| * hierarchy of types (SymbolicType, NumericType as subclasses of Type) |
| * datatypes (XSD) and value ranges in domain declarations |
| * **ardml2owl** [[http://home.agh.edu.pl/wta/onto/hathor2/ardml2owl1.xsl|ardml2owl1.xsl]] |
| * **ardml2owl2** [[http://home.agh.edu.pl/wta/onto/hathor2/ardml2owl2.xsl|ardml2owl2.xsl]] |
| * based on hathor1 by JSJ |
| * **xttml2rif** [[http://home.agh.edu.pl/wta/onto/hathor2/xtt2rif-prd-simple.xsl|xtt2rif-prd-simple.xsl]], [[http://home.agh.edu.pl/wta/onto/hathor2/xtt2rif-core.xsl|xtt2rif-core.xsl]] |
| * based on miw_08_rif (but it's for RIF-BLD) |
| * nested groups as in jsj-msc |
| * variables removed |
| * **xttml2swrl** [[http://home.agh.edu.pl/wta/onto/hathor2/xttml2swrl.xsl|xttml2swrl.xsl]] |
| * production rules can be encoded but will not work, as in [[https://ai.ia.agh.edu.pl/wiki/hekate:cases:hekate_case_upsell:start|Upsell case study]] |
| * no support for conditions like: attr > Tuesday (swrlb:greaterThan, SWRLJessTab) |
| * **state2owl** [[http://home.agh.edu.pl/wta/onto/hathor2/state2owl1.xsl|state2owl1.xsl]] |
| * **state2owl2** [[http://home.agh.edu.pl/wta/onto/hathor2/state2owl2.xsl|state2owl2.xsl]] |
| * ''attTakesValue(att,value)'' |
| * **hml2owl2** [[http://home.agh.edu.pl/wta/onto/hathor2/hml2owl2.xsl|hml2owl2.xsl]] |
| * attml2owl2+ardml2owl2+state2owl2 (**NO RULES**) |
| * **hml2swrl** [[http://home.agh.edu.pl/wta/onto/hathor2/hml2swrl.xsl|hml2swrl.xsl]] |
| * attml2owl1+ardml2owl+xttml2swrl+state2owl1 |
| |
| |
| ==== Translators - more details ==== |
| ===Translation ATTML - OWL/RDF=== |
| * The main classes are Attribute and Type. |
| * Class Attribute represents attributes from the ATTML ''attributes'' section, and types of attributes from ATTML ''types'' section are represented by subclasses of a class Type. |
| |
| * Each type is represented by a class deriving from the superclass Type, and for each type an instance is generated |
| * there are main subclasses of the class Type NumericType and SymbolicType, thhey are created based on information from HML |
| * multiple properties for types and attributes (translated attributes of HML elements <attribute> and <type>) - One can describe the attributes in details, e.g. the use of the attribute in the system, its type and class, description etc. |
| * in **attml2owl1** the domains are represented as strings, e.g. ''0-24''. In **atttml2owl2** the data ranges are used. |
| * in **attml2owl1** the domains are represented with properties (for each type a new property is defined), in **attml2owl2**, types are defined by the values they allow, e.g. ''Boolean ≡ tpeHasValues {0,1}'' |
| |
| ===Translation ARDML - OWL/RDF=== |
| * ARDML properties are represented in OWL as instances of a class Property. |
| * Relations between properties are represented using Objet Property ''hasAttribute'', ''dependsOn'' for dependencies betweeen attribute, and ''transformedInto'' for TPH relations. |
| |
| |
| ===Translation XTTML - RIF === |
| == RIF PRD == |
| 2 approaches: simple and frame-based |
| * simple: using representing attributes and their values by defining/using external predicates construct extensively |
| * attributes references are constanst identified with URIs (''rif:iri'') |
| * attributes' values are bound using predicates ''xtt:name_of_the_relation(attr,value_or_a_set)'' |
| * frame-based: representing attributes as frames, //to be considered in future?// |
| |
| General remarks (common for both translations): |
| * XTTML model as a RIF Group, |
| * XTT tables as RIF Nested Groups, |
| * XTT rules as RIF Rules; the rule conditions are placed in the ''<if>'' section, and the decisions in ''<then>'' realized in RIF ACTION_BLOCK |
| * Connections between XTT tables represented with ''xtt:link'' predicate (calling external action) |
| * Logical operators used in rule preconditions are externally defined using RIF ''<op>'' tag |
| * primitive datatypes as defined in RIF DTB |
| * new operators and predicates for XTT: ''**xtt:range**'' for ranges <a;b> and ''**xtt:set**'' for sets {a,b,c} (previously: xtt:set and xtt:complex_set) |
| * in the decision part external actions are used - for better compatibility with RIF BLD and beause of the nuances of ''Assert'', ''Retract'', ''Modify'' (e.g. should we assert or modify the attribute value?) |
| |
| * not compatible with other translations, but in this case I think it doesn't matter. In the end the others may change, in RIF alternative there are some interesting ideas, e.g: |
| * [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_xtt_rif#niuanse_zapisu_xtt_w_rif|attr in any]] |
| |
| * problems: no RIF PRD Validators, only syntax checking (the translator produces valid XML documents) |
| |
| == RIF Core == |
| * based on the above translator, only some PRD constructs removed |
| * validated with [[http://idi.fundacionctic.org/rifle/validator.jsf|RIFLE Validator]] - yields analogous warnings as for the [[http://www.w3.org/2005/rules/test/repository/tc/|standard W3C RIF files...]] ;-) |
| |
| ===Translation XTTML - SWRL=== |
| * no support for production rules in SWRL -> rules translated, and asserting new facts can be done (e.g. by JessSWRLTab in Protege), but updating an attribute value would not work |
| * translated rules' conditions: att=val,att>val,att<val, att in {v1,v2,v3} only partly: if this is the only condition in a rule (as in thermostat) |
| * translated rules' conclusions: att:=val. |
| * example rule: |
| <code> |
| attTakesValue(att_10, "workday") ∧ attTakesValue(att_11, ?var_att_11) ∧ swrlb:lessThan(?var_att_11, "9") → attTakesValue(att_7, "not_during_business_hours") |
| </code> |
| * no support for symbolic ranges (e.g. att> Tuesday) |
| |
| === STATE - OWL === |
| * A state of a system is modelled with the following properties (role assertions): ''attTakesValue(a,d)'' for simple attributes and ''attTakesValue(a,v1),attTakesValue(a,v2)...attTakesValue(a,vn)'' for generalized ones. |
| * each state in an instance of a class State,with a set of datatype property assertions: ''stDescibeAttribute(state,att)'' |
| |
| |