Opis

Projekt zakończony

Michał Tomana (4RI)

Translacja ARDML do innych formatów z użyciem XSLT. Ontologie, graphviz.

Historia spotkań.

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:

 Class(ard:Attribute)
 Class(ard:Property)

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:

 ObjectProperty(ard:is_attribute_of domain(ard:Property) range(ard:Attribute))
 ObjectProperty(ard:has_attribute inverseOf(ard:is_attribute_of))

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:

 ObjectProperty(ard:depends_on domain(ard:property) range(ard:Property))
 ObjectProperty(ard:is_prerequisite_for inverseOf(ard:Property))

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:

 ObjectProperty(ard:transformed_into domain(ard:Property) range(Property))
 ObjectProperty(ard:transformed_from inverseOf(ard:transformed_into))

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ć:

[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))
)

Tworzenie instancji poszczególnych klas ma następującą postać:

  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))

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ć 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ć 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ć 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ć tutaj. Obrazki grafów można podglądnąć w notatkach (wykorzystano plugin ###).

Materiały

pl/miw/miw08_ard_xml.txt · ostatnio zmienione: 2017/07/17 08:08 (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