Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
Nowa wersja
Both sides next revision
|
pl:miw:miw08_ard_xml [2008/02/21 14:29] miw ard |
pl:miw:miw08_ard_xml [2008/06/02 12:37] wojnicki links corrected |
Translacja ARDML do innych formatów z użyciem XSLT. Ontologie, graphviz. | Translacja ARDML do innych formatów z użyciem XSLT. Ontologie, graphviz. |
| |
====== Spotkania ====== | Historia [[pl:miw:miw08_ard_xml:spotkania|spotkań]]. |
===== 08.03.04 ===== | |
* koncepcja przejścia ARD->OWL (modelowanie słownika, vocabulary) | |
| |
====== Projekt ====== | ====== Projekt ====== |
| * ARDML: [[pl:miw:miw08_ard_xml:thermostat_ardml|Thermostat]] (download: {{:pl:miw:miw08_ard_xml:thermostat_ardml.xml|thermostat_ardml.xml}}) |
| * OWL dla ARD: [[pl:miw:miw08_ard_xml:owl_abstract_syntax|abstract syntax]] |
| * Przykład ontologii dla [[pl:miw:miw08_ard_xml:owl_thermostat|termostatu]] |
| |
| * XSLT for OWL: [[pl:miw:miw08_ard_xml:ard_owl_xsl|ARDML->OWL]] (download: {{:pl:miw:miw08_ard_xml:ardml_owl.xml|ardml_owl.xsl}}) |
| * XSLT for ARD graph: [[pl:miw:miw08_ard_xml:ardml_ard_dot_xsl|ARDML->(ARD)->DOT]] (download: {{:pl:miw:miw08_ard_xml:ardml_ard_dot.xml|ardml_ard_dot.xsl}}) |
| * XSLT for TPH graph: [[pl:miw:miw08_ard_xml:ardml_tph_dot_xsl|ARDML->(TPH)->DOT]] (download: {{:pl:miw:miw08_ard_xml:ardml_tph_dot.xml|ardml_tph_dot.xsl}}) |
| |
| * Graph examples (using [[pl:miw:miw08_dokuviz|DokuViz plugin]]): [[pl:miw:miw08_ard_xml:notatki|notatki]] |
| |
| |
| |
====== Sprawozdanie ====== | ====== Sprawozdanie ====== |
| |
| Celem projektu było przygotowanie ontologii dla ARD (zdefiniowanie klas i gramatyki), a następnie przygotowanie plików XSLT do transformacji z formatu ARDML do OWL oraz w kolejnym etapie do definicji grafów dla programu Graphviz. |
| |
| ==== Ontologia ==== |
| W ARD występują dwa rodzaje elementów: atrybuty (attributes) i właściwości (properties). W ontologii odpowiadają one klasom: |
| |
| <code> |
| Class(ard:Attribute) |
| Class(ard:Property) |
| </code> |
| |
| Dla danego diagramu ARD można zdefiniować stałą listę atrybutów, które następnie są przyporządkowywane poszczególnym właściwościom. W tym celu potrzebne było zdefiniowanie relacji między tymi elementami: |
| |
| <code> |
| ObjectProperty(ard:is_attribute_of domain(ard:Property) range(ard:Attribute)) |
| ObjectProperty(ard:has_attribute inverseOf(ard:is_attribute_of)) |
| </code> |
| |
| Pierwsza z nich, //is_attribute_of//, jest związana z atrybutami (słowo kluczowe **range**) przypisywanymi do właściwości (słowo kluczone **domain**). Jako, że w języku OWL stosuje się opis relacji działających w obie strony, zdefiniowana została też relacja //has_attribute//, która jest po prostu odwróceniem pierwszej (słowo kluczowe **inverseOf**). Takie podejście ułatwia pisanie ontologii oraz zwiększa czytelność. |
| W tej chwili można już zdefiniować listę elementów - atrybutów i właściwości - oraz powiązać je ze sobą. |
| Do pełnego opisu ARD brakuje nam jeszcze relacji wynikających z diagramów ARD/TPH. Pierwsza z nich to zależność poszczególnych właściwości: |
| |
| <code> |
| ObjectProperty(ard:depends_on domain(ard:property) range(ard:Property)) |
| ObjectProperty(ard:is_prerequisite_for inverseOf(ard:Property)) |
| </code> |
| |
| Definiuje ona, która właściwość, od której zależy (//depends_on//). Dla przykładu termostatu właściwość //thermostat_setting// jest zależna od właściwości //season//, która to jest zależna od //month//. Analogicznie jak w przypadku poprzedniej relacji, zdefiniowana została relacja przeciwna - //is_prerequisite_for// (czyli wpływanie jednej właściwości na drugą). |
| |
| Ostatnią rzeczą jest zdefiniowanie, która właściwość została przetranformowana na inne właściwości: |
| |
| <code> |
| ObjectProperty(ard:transformed_into domain(ard:Property) range(Property)) |
| ObjectProperty(ard:transformed_from inverseOf(ard:transformed_into)) |
| </code> |
| |
| Dla wcześniej wspomnianego termostatu, taka relacja ma miejsce na przykład przy właściwości z atrybutem //Date//, która została przetransformowana (//transformed_into//) w inną właściwość zawierającą atrybuty //day//, //month// i //today//. Relacja przeciwna to //transformed_from//. |
| |
| Taka gramatyka jest w zupełności wystarczająca do opisu ARD (wraz z "zaszytymi" oboma diagramami). Pełna ontologia ma więc postać: |
| |
| <code> |
| [Namespaces: |
| owl = http://www.w3.org/2002/07/owl# |
| rdfs = http://www.w3.org/2000/01/rdf-schema# |
| rdf = http://www.w3.org/1999/02/22-rdf-syntax-ns# |
| ] |
| |
| Ontology( |
| Class(ard:Attribute) |
| Class(ard:Property) |
| |
| ObjectProperty(ard:is_attribute_of domain(ard:Property) range(ard:Attribute)) |
| ObjectProperty(ard:has_attribute inverseOf(ard:is_attribute_of)) |
| |
| ObjectProperty(ard:depends_on domain(ard:property) range(ard:Property)) |
| ObjectProperty(ard:is_prerequisite_for inverseOf(ard:Property)) |
| |
| ObjectProperty(ard:transformed_into domain(ard:Property) range(Property)) |
| ObjectProperty(ard:transformed_from inverseOf(ard:transformed_into)) |
| ) |
| </code> |
| |
| Tworzenie instancji poszczególnych klas ma następującą postać: |
| |
| <code> |
| Individual(ard:prp_1 type(ard:Property) |
| value(ard:has_attribute ard:att_1) |
| value(ard:has_attribute ard:att_2) |
| value(ard:transformed_from ard:prp_0)) |
| </code> |
| |
| Powyżej zdefiniowany jest obiekt klasy //Property// o nazwie //prp_1//. Ma on dwa atrybuty: //att_1// i //att_2//. Został przetransformowany z właściwości //prp_0//. |
| Pełny opis termostatu za pomocą powyższej ontologii można zobaczyć [[pl:miw:miw08_ard_xml:owl_thermostat|tutaj]]. |
| |
| |
| ==== XSLT - OWL ==== |
| |
| Transformacja ARDML do OWLa, za pomocą XSLT nie jest skomplikowanym procesem: |
| * w pierwszej kolejności zapisywana jest definicja ontologii (klasy i relacje), |
| * następnie tworzona jest lista atrybutów o odpowiednich nazwach i identyfikatorach, |
| * kolejnym krokiem jest utowrzenie listy właściwości - i każdej z nich przypisane są odpowiednie atrybuty oraz zdefiniowane relacje zależności i transformacji. |
| |
| Pełny kod XSLT można obejrzeć [[pl:miw:miw08_ard_xml:ard_owl_xsl|tutaj]]. |
| |
| ==== XSLT - DOT ==== |
| |
| == ARD == |
| |
| By przejść z ARDML do opisu grafu ARD dla programu Graphviz wymagane są następujące kroki: |
| * zapisanie nagłówka grafu, |
| * iteracja po wszystkich elementach zależnych/niezależnych (relacja zależności) by powstała ich pełna lista, |
| * zdefiniowanie relacji między poszczególnymi encjami (zależność), |
| * zapisanie końca grafu. |
| |
| Kod transformacji można obejrzeć [[pl:miw:miw08_ard_xml:ardml_ard_dot_xsl|tutaj]]. |
| |
| == TPH == |
| |
| Konstrukcja grafu TPH odpowiada następującemu procesowi: |
| * zapisanie nagłówka grafu, |
| * iteracja po wszystkich właściwościach - a dla każdej z nich dodanie etykiety związanych z nią atrybutów, |
| * zdefiniowanie relacji między poszczególnymi encjami (transformacja), |
| * zapisanie końca grafu. |
| |
| Kod transformacji można obejrzeć [[pl:miw:miw08_ard_xml:ardml_tph_dot_xsl|tutaj]]. Obrazki grafów można podglądnąć w [[pl:miw:miw08_ard_xml:notatki|notatkach]] (wykorzystano plugin ###). |
| |
| |
| |
* [[http://w3schools.com/xsl/default.asp|W3S XSLT]] | * [[http://w3schools.com/xsl/default.asp|W3S XSLT]] |
* [[wp>XSLT]], [[http://www.w3.org/TR/xslt20/|specyfikacja]]. | * [[wp>XSLT]], [[http://www.w3.org/TR/xslt20/|specyfikacja]]. |
| |
| [[http://en.wikipedia.org/wiki/Web_Ontology_Language|OWL]]: |
| * http://www.cs.man.ac.uk/~horrocks/ISWC2003/Tutorial/ |
| * http://www.cs.man.ac.uk/~horrocks/ISWC2003/Tutorial/examples.pdf |
| * http://www.w3.org/TR/owl-semantics/ |
| * http://www.w3.org/TR/owl-guide/ |
| * http://protege.stanford.edu/publications/ontology_development/ontology101-noy-mcguinness.html |
| |
| Narzędzia: |
| * http://protege.stanford.edu/ |
| |
ARD: | ARD: |
* [[hekate:bib:hekate_bibliography#gjn2008flairs-ardformal-submitted|Towards Formalization of ARD+ Conceptual Design and Refinement Method]] | * [[hekate:bib:hekate_bibliography#gjn2008flairs-ardformal|Towards Formalization of ARD+ Conceptual Design and Refinement Method]] |
* [[hekate:bib:hekate_bibliography#gjn2008flairs-ardprolog-submitted|An ARD+ Design and Visualization Toolchain Prototype in Prolog]] | * [[hekate:bib:hekate_bibliography#gjn2008flairs-ardprolog|An ARD+ Design and Visualization Toolchain Prototype in Prolog]] |
* [[hekate:bib:hekate_bibliography#gjn2008flairs-userv-submitted|UServ Case Study, Conceptual Design with ARD+ Method]]. | * [[hekate:bib:hekate_bibliography#gjn2008flairs-userv|UServ Case Study, Conceptual Design with ARD+ Method]]. |
| |
| |
| |