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/03/18 10:47]
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}})
  
-===== 080318 ===== +  ​Graph examples ​(using [[pl:miw:​miw08_dokuviz|DokuViz plugin]]): [[pl:​miw:​miw08_ard_xml:​notatki|notatki]]
-  ​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+
  
  
  
-====== ​Projekt ​======+====== ​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ć:
  
-ARD Ontology. Abstract Syntax: 
 <​code>​ <​code>​
 [Namespaces:​ [Namespaces:​
   owl = http://​www.w3.org/​2002/​07/​owl#​   owl = http://​www.w3.org/​2002/​07/​owl#​
-  ​ard https://ai.ia.agh.edu.pl/wiki/pl:​miw:​miw08_ard_xml#+  ​rdfs  ​http://www.w3.org/​2000/​01/​rdf-schema#​ 
 +  rdf   = http://www.w3.org/1999/02/​22-rdf-syntax-ns#
 ] ]
  
 Ontology( Ontology(
-  Class(ard:attribute+  Class(ard:Attribute
-  Class(ard:property)+  Class(ard:Property)
   ​   ​
-  ObjectProperty(ard:​is_property_of ​domain(ard:attribute) range(ard:property)) +  ObjectProperty(ard:​is_attribute_of ​domain(ard:Property) range(ard:Attribute)) 
-  ObjectProperty(ard:​has_property ​inverseOf(ard:​is_property_of))+  ObjectProperty(ard:​has_attribute ​inverseOf(ard:​is_attribute_of))
   ​   ​
-  ObjectProperty(ard:​depends_on domain(ard:attribute) range(ard:attribute)) +  ObjectProperty(ard:​depends_on domain(ard:property) range(ard:Property)) 
-  ObjectProperty(ard:​is_prerequisite_for ​domain(ard:attribute) range(ard:​attribute))+  ObjectProperty(ard:​is_prerequisite_for ​inverseOf(ard:Property))
   ​   ​
-  ObjectProperty(ard:​transformed_into domain(ard:attribute) range(attribute))+  ObjectProperty(ard:​transformed_into domain(ard:Property) range(Property))
   ObjectProperty(ard:​transformed_from inverseOf(ard:​transformed_into))   ObjectProperty(ard:​transformed_from inverseOf(ard:​transformed_into))
 ) )
 </​code>​ </​code>​
-Thermostat example: 
-<​code>​ 
-[Namespaces:​ 
-  owl = http://​www.w3.org/​2002/​07/​owl#​ 
-  ard = https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_ard_xml#​ 
-] 
  
-Ontology( +Tworzenie instancji poszczególnych klas ma następującą postać:
-  Individual(ard:attThermostat type(ard:​attribute)) +
-  Individual(ard:​Thermostat type(ard:​property)  +
-    value(ard:​is_property_of ard:​attThermostat))+
  
-  ​ +<​code>​ 
-  Individual(ard:​attTimeTemp ​type(ard:attribute)  +  Individual(ard:​prp_1 type(ard:Property
-    value(ard:transformed_from ​ard:attThermostat)+    value(ard:has_attribute ​ard:att_1
-    ​ +    ​value(ard:has_attribute ​ard:att_2
-  Individual(ard:Time type(ard:property)  +    value(ard:transformed_from ​ard:prp_0)) 
-    value(ard:is_property_of ​ard:attTimeTemp)) +</​code>​
-  ​Individual(ard:​Temp type(ard:​property)  +
-    value(ard:​is_property_of ard:​attTimeTemp))+
  
-   +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//. 
-  Individual(ard:attTime type(ard:​attribute) ​ +Pełny opis termostatu za pomocą powyższej ontologii można zobaczyć [[pl:miw:miw08_ard_xml:owl_thermostat|tutaj]].
-    ​value(ard:has_property ard:Time)  +
-    value(ard:​transformed_from ard:​attTimeTemp)) +
-  Individual(ard:​attTemperature type(ard:​attribute)  +
-    value(ard:​has_property ard:​Temperature) +
-    value(ard:​transformed_from ard:​attTimeTemp)) +
-     +
-  Individual(ard:​attDateHour_season_operation type(ard:​attribute) +
-    value(ard:​transformed_from ard:​attTime)) +
-  Individual(ard:​Date type(ard:​property) +
-    value(ard:​is_property_of ard:​attDateHour_season_operation)) +
-  Individual(ard:​Hour type(ard:​property) +
-    value(ard:​is_property_of ard:​attDateHour_season_operation)) +
-  Individual(ard:​season type(ard:​property) +
-    value(ard:​is_property_of ard:​attDateHour_season_operation)) +
-  Individual(ard:​operation type(ard:​property) +
-    value(ard:​is_property_of ard:​attDateHour_season_operation)) +
-     +
-  Individual(ard:​att_thermostat_settings type(ard:​attribute) +
-    value(ard:​transformed_from ard:​attTemperature)) +
-  Individual(ard:​thermostat_settings type(ard:​property) +
-    value(ard:is_property_of ard:att_thermostat_settings))+
  
  
-  Individual(ard:​attDateHour type(ard:​attribute) +==== XSLT - OWL ====
-    value(ard:​transformed_from ard:​attDateHour_season_operation) +
-    value(ard:​has_property ard:Hour) +
-    value(ard:​has_property ard:Date))+
  
-  Individual(ard:season type(ard:​property)) +Transformacja ARDML do OWLa, za pomocą XSLT nie jest skomplikowanym procesem
-  ​Individual(ard:​operation type(ard:​property)+  ​* w pierwszej kolejności zapisywana jest definicja ontologii ​(klasy i relacje), 
-  ​Individual(ard:​att_season_operation type(ard:​attribute) +  ​* następnie tworzona jest lista atrybutów o odpowiednich nazwach i identyfikatorach,​ 
-    ​value(ard:​transformed_from ard:​attDateHour_season_operation) +  * 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.
-    value(ard:​has_property ard:​season) +
-    value(ard:​has_property ard:​operation))+
  
 +Pełny kod XSLT można obejrzeć [[pl:​miw:​miw08_ard_xml:​ard_owl_xsl|tutaj]].
  
-  Individual(ard:​attDate type(ard:​attribute) +==== XSLT - DOT ====
-    value(ard:​transformed_from ard:​attDateHour) +
-    value(ard:​has_property ard:Date))+
  
-  Individual(ard:​attHour type(ard:​attribute) +== ARD ==
-    value(ard:​transformed_from ard:​attDateHour) +
-    value(ard:​has_property ard:​Hour)) +
-   +
-  Individual(ard:​att_season type(ard:​attribute) +
-    value(ard:​transformed_from ard:​att_season_operation) +
-    value(ard:​has_property ard:​season) +
-    value(ard:​is_prerequisite_for ard:​att_thermostat_settings))+
  
-  Individual(ard:att_operation type(ard:​attribute) +By przejść z ARDML do opisu grafu ARD dla programu Graphviz wymagane są następujące kroki
-    value(ard:​transformed_from ard:​att_season_operation) +  ​* zapisanie nagłówka grafu, 
-    value(ard:​has_property ard:​operation) +  ​* iteracja po wszystkich elementach zależnych/​niezależnych ​(relacja zależnościby powstała ich pełna lista, 
-    value(ard:​is_prerequisite_for ard:​att_thermostat_settings)) +  ​* zdefiniowanie relacji między poszczególnymi encjami ​(zależność), 
-     +  ​* zapisanie końca grafu.
-    ​ +
-  ​Individual(ard:​day type(ard:​property)) +
-  ​Individual(ard:month type(ard:​property)+
-  ​Individual(ard:today type(ard:​property)+
-  ​Individual(ard:​att_day_month_today type(ard:​attribute) +
-    value(ard:​transformed_from ard:​attDate) +
-    value(ard:​has_property ard:day) +
-    value(ard:​has_property ard:​month) +
-    value(ard:​has_property ard:​today)) +
-     +
-  Individual(ard:​att_hour type(ard:​attribute) +
-    value(ard:​transformed_from ard:​attHour) +
-    value(ard:​is_prerequisite_for ard:​att_operation)) +
-     +
-  +
-  Individual(ard:​att_month type(ard:​attribute) +
-    value(ard:​has_property ard:​month) +
-    value(ard:​transformed_from ard:​att_day_month_today) +
-    value(ard:​is_prerequisite_for ard:​att_season))+
  
-  Individual(ard:att_day_today type(ard:attribute) +Kod transformacji można obejrzeć [[pl:miw:miw08_ard_xml:ardml_ard_dot_xsl|tutaj]].
-    value(ard:has_property ard:day) +
-    value(ard:​has_property ard:​today) +
-    value(ard:​transformed_from ard:​att_day_month_today))+
  
 +== TPH ==
  
-  Individual(ard:att_day type(ard:​attribute) +Konstrukcja grafu TPH odpowiada następującemu procesowi
-    ​value(ard:​has_property ard:day) +  * zapisanie nagłówka grafu, 
-    ​value(ard:​transformed_from ard:​att_day_today) +  * iteracja po wszystkich właściwościach - a dla każdej z nich dodanie etykiety związanych z nią atrybutów, 
-    value(ard:​is_prerequisite_for ard:​att_operation)) +  * zdefiniowanie relacji między poszczególnymi encjami ​(transformacja), 
-    ​ +  ​* zapisanie końca grafu.
-  ​Individual(ard:​att_today type(ard:​attribute) +
-    value(ard:​has_property ard:​today) +
-    value(ard:​transformed_from ard:​att_day_today)) +
-    value(ard:​depends_on ard:​att_day))+
  
-) +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 ###).
-</​code>​+
  
-====== Sprawozdanie ====== 
  
  
Linia 170: 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.1205833640.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