Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_ard_xml [2008/05/05 22:32]
miw
pl:miw:miw08_ard_xml [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +__**Projekt zakończony**__
 +
 [[mtomana@student.agh.edu.pl|Michał Tomana]] (4RI) [[mtomana@student.agh.edu.pl|Michał Tomana]] (4RI)
  
 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ń]].
  
-===== 080304 ===== 
-  * koncepcja przejścia ARD->​[[http://​www.w3.org/​2004/​OWL/​|OWL]] (modelowanie słownika, vocabulary) 
  
  
-===== 080311 ​===== +====== Projekt ====== 
-  * j.w[[hekate:varda]] [[hekate:hekate_case_thermostat]]+  * 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]]
  
-===== 080318 ===== 
-  * próba preprezentacji w OWL pełnego modelu (VARDA/​tic),​ [[hekate:​hekate_markup_language|HML]] 
-Wątpliwości:​ 
-  * co z powtarzającymi się nazwami? Time+Tepmeratore -> Time, Temperature (może to ta sama właściwość?​) 
-  * nomenklatura 
  
  
-===== 080408 ​===== +====== Sprawozdanie ======
-  * właściwa repr w owl (att/​prop) +
-  * nie ma prefixow att/prop, uzywamy jakiegoś id +
-  * prób zrobienia xslt hml(ardml) -> owl+
  
 +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.
  
-===== 080422 ​===== +==== Ontologia ​==== 
-  * graphviz +W ARD występują dwa rodzaje elementów: atrybuty (attributes) i właściwości (properties). W ontologii odpowiadają one klasom:
-  * FIXME+
  
-===== 080429 ===== +<​code>​ 
-  * j.w?+ 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>​
  
-====== Projekt ====== +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ść
-  ​ARDML: [[pl:​miw:​miw08_ard_xml:​thermostat_ardml|Thermostat]]  ​(download: {{:​pl:​miw:​miw08_ard_xml:​thermostat_ardml.xml|thermostat_ardml.xml}}) +W tej chwili można już zdefiniować listę elementów ​atrybutów i właściwości ​oraz powiązać je ze sobą
-  * 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}}) +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:
-  * 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_xsl.xml|ardml_ard_dot_xsl.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_xsl.xml|ardml_tph_dot_xsl.xsl}})+
  
 +<​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//​.
  
-===== ARD OntologyAbstract Syntax=====+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>​ <​code>​
Linia 70: Linia 86:
 </​code>​ </​code>​
  
- +Tworzenie instancji poszczególnych klas ma następującą postać:
- +
- +
- +
-===== Thermostat example=====+
  
 <​code>​ <​code>​
-[Namespaces:​ 
-  owl = http://​www.w3.org/​2002/​07/​owl#​ 
-  ard = https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_ard_xml:​ard-syntax.xml#​ 
-  rdfs  = http://​www.w3.org/​2000/​01/​rdf-schema#​ 
-  rdf   = http://​www.w3.org/​1999/​02/​22-rdf-syntax-ns#​ 
-] 
- 
-Ontology( 
-  Individual(ard:​att_0 type(ard:​Attribute) Label("​Thermostat"​)) 
-  Individual(ard:​att_1 type(ard:​Attribute) Label("​Time"​)) 
-  Individual(ard:​att_2 type(ard:​Attribute) Label("​Temperature"​) Comment("​input temperature from sensor number 1")) 
-  Individual(ard:​att_3 type(ard:​Attribute) Label("​Date"​)) 
-  Individual(ard:​att_4 type(ard:​Attribute) Label("​Hour"​)) 
-  Individual(ard:​att_5 type(ard:​Attribute) Label("​season"​)) 
-  Individual(ard:​att_6 type(ard:​Attribute) Label("​operation"​)) 
-  Individual(ard:​att_7 type(ard:​Attribute) Label("​thermostat_settings"​)) 
-  Individual(ard:​att_8 type(ard:​Attribute) Label("​day"​)) 
-  Individual(ard:​att_9 type(ard:​Attribute) Label("​month"​)) 
-  Individual(ard:​att_10 type(ard:​Attribute) Label("​today"​)) 
-  Individual(ard:​att_11 type(ard:​Attribute) Label("​hour"​)) 
-    
-  Individual(ard:​prp_0 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_0)) 
-    ​ 
   Individual(ard:​prp_1 type(ard:​Property)   Individual(ard:​prp_1 type(ard:​Property)
     value(ard:​has_attribute ard:att_1)     value(ard:​has_attribute ard:att_1)
     value(ard:​has_attribute ard:att_2)     value(ard:​has_attribute ard:att_2)
     value(ard:​transformed_from ard:prp_0))     value(ard:​transformed_from ard:prp_0))
-    ​ 
-  Individual(ard:​prp_2 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_1) 
-    value(ard:​transformed_from ard:prp_1)) 
-    ​ 
-  Individual(ard:​prp_3 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_2) 
-    value(ard:​transformed_from ard:prp_1)) 
-    ​ 
-  Individual(ard:​prp_4 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_3) 
-    value(ard:​has_attribute ard:att_4) 
-    value(ard:​has_attribute ard:att_5) 
-    value(ard:​has_attribute ard:att_6) 
-    value(ard:​transformed_from ard:prp_2)) 
-    ​ 
-  Individual(ard:​prp_5 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_7) 
-    value(ard:​depends_on ard:prp_10) 
-    value(ard:​depends_on ard:prp_11) 
-    value(ard:​transformed_from ard:prp_3)) 
-    ​ 
-  Individual(ard:​prp_6 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_3) 
-    value(ard:​has_attribute ard:att_4) 
-    value(ard:​transformed_from ard:prp_4)) 
-    ​ 
-  Individual(ard:​prp_7 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_5) 
-    value(ard:​has_attribute ard:att_6) 
-    value(ard:​transformed_from ard:prp_4)) 
-    ​ 
-  Individual(ard:​prp_8 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_3) 
-    value(ard:​transformed_from ard:prp_6)) 
-    ​ 
-  Individual(ard:​prp_9 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_4) 
-    value(ard:​transformed_from ard:prp_6)) 
-    ​ 
-  Individual(ard:​prp_10 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_5) 
-    value(ard:​depends_on ard:prp_14) 
-    value(ard:​transformed_from ard:prp_7)) 
-    ​ 
-  Individual(ard:​prp_11 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_6) 
-    value(ard:​depends_on ard:prp_17) 
-    value(ard:​depends_on ard:prp_13) 
-    value(ard:​transformed_from ard:prp_7)) 
-    ​ 
-  Individual(ard:​prp_12 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_8) 
-    value(ard:​has_attribute ard:att_9) 
-    value(ard:​has_attribute ard:att_10) 
-    value(ard:​transformed_from ard:prp_8)) 
-    ​ 
-  Individual(ard:​prp_13 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_11) 
-    value(ard:​transformed_from ard:prp_9)) 
-    ​ 
-  Individual(ard:​prp_14 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_9) 
-    value(ard:​transformed_from ard:​prp_12)) 
-    ​ 
-  Individual(ard:​prp_15 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_8) 
-    value(ard:​has_attribute ard:att_10) 
-    value(ard:​transformed_from ard:​prp_12)) 
-    ​ 
-  Individual(ard:​prp_16 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_8) 
-    value(ard:​transformed_from ard:​prp_15)) 
-    ​ 
-  Individual(ard:​prp_17 type(ard:​Property) 
-    value(ard:​has_attribute ard:att_10) 
-    value(ard:​depends_on ard:prp_16) 
-    value(ard:​transformed_from ard:​prp_15)) 
-    ​ 
-  Individual(ard:​prp_18 type(ard:​Property)) 
-) 
 </​code>​ </​code>​
  
-====== ​Sprawozdanie ​======+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 ###). 
  
  
Linia 197: Linia 138:
   * [[wp>​XSLT]],​ [[http://​www.w3.org/​TR/​xslt20/​|specyfikacja]].   * [[wp>​XSLT]],​ [[http://​www.w3.org/​TR/​xslt20/​|specyfikacja]].
  
-narzędzia:+[[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/​   * 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]].
  
  
  
pl/miw/miw08_ard_xml.1210019563.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0