Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:2009:miw09_swrltrans [2009/04/03 14:04] mikel problemy translacji xtt na swrl |
pl:miw:2009:miw09_swrltrans [2019/06/27 15:50] (aktualna) |
====== Opis ====== | ~~ODT~~ |
Michał Lesiak <mikelik@o2.pl> | ====== MIW 2009 SWRLtrans ====== |
| |
| **Zrealizował**: [[mikelik@o2.pl|Michał Lesiak]] (4RI) |
| |
:!::!: | :!::!: |
[[student:msc2008_xml_knowledge_transformation:xttml2rif]] | [[student:msc2008_xml_knowledge_transformation:xttml2rif]] |
| |
====== Spotkania ====== | ====== Prezentacja ====== |
===== 20090402 ==== | [[pl:miw:2009:miw09_swrltrans:prezentacja|Prezentacja wyników projektowych]]. |
* SWRL nie obsługuje ani negacji ani alternatywy. Problem zapisania reguły: jeżeli x jest w zbiorze <1,2> lub 3 to (...) - konieczność rozbicia na 2 reguły (suma zbiorów odpowiada alternatywnym regułom) | |
* 'Union' dotyczy tylko klas (nie liczb czy właściwości), to zapisu typu wyliczeniowego: 1 lub 2 lub 3 służy OneOf. | |
* <range from="1" to="5"/> - w SWRL brak zmiennej typu 'range', należy stworzyć zmienną i operacjami matematycznymi (built-ins) sprawdzić: >= 1 oraz <= 5 | |
* HQed - wersja z okreslonym XTT? | |
* problem z zagnieżdżeniem - udało się zrobić zliczanie zagnieżdżeń, ciężko ze wstawianiem zmiennych temp* we właściwe miejsce (funkcja position() i brak odniesienia w przypadku dwóch reguł w xtt) | |
| |
===== 20090319 ==== | |
* [[#przyklad_xtt_-_swrl]] | |
* konieczność utworzenia zmiennych tymczasowych (u mnie: temp1), ponieważ nie można zagnieżdżać funkcji w funkcji, np. builtin sin w builtin add ([[http://www.w3.org/Submission/SWRL/swrlx.xsd|swrlx.xsd]]). | |
* za pomocą transformacji XSL trzeba policzyć ilość zagnieżdżeń, ilość predykatów o arności więcej niż 2, (...) - skomplikowane (o ile wykonalne) - sugestia zmiany narzędzia z XSLT, może napisać rodzaj 'kompilatora'? | |
| |
===== 20090305 ==== | ====== Spotkania ====== |
* Projekty bazujące na xtt2: ([[pl:miw:miw08_xtt_r2ml:translator|xtt to r2ml ]], [[https://ai.ia.agh.edu.pl/wiki/_media/pl:miw:miw08_xtt_rif:xtttorif.xml|xtt to rif]])\\ | [[pl:miw:2009:miw09_swrltrans:spotkania|Notatki ze spotkań projektowych]]. |
* <del>Bazować jedynie na specyfikacji: [[hekatedev:hqed:xttml20]] i przykładzie z projektu [[pl:miw:miw08_xtt_xml]]: [[https://ai.ia.agh.edu.pl/wiki/_media/pl:miw:thermostat2.0.xml|:pl:miw:thermostat2.0.xml]] - wiarygodny thermostat2.0 czy stworzony przez studenta?</del> - specyfikacja xtt na potrzeby hqed | |
* jedyna poprawna specyfikacja XTT2: [[hekate:xtt2]] | |
| |
===== 20090219 ==== | ====== Projekt ====== |
* konto | |
brak dostępu: | |
* [[hekatedev:xtt_rules]] | |
* [[student:msc2008_xml_knowledge_transformation:xttml2rif]] | |
* [[hekatedev:xtt_minicases#calculations_factorial]] - link z [[pl:miw:miw08_xtt_r2ml]] | |
* [[hekatedev:hqed:xttml20]] - link z 080318 [[pl:miw:miw08_xtt_xml]] | |
| |
Czy jest przykładowy xttml, w którym byłyby wszystkie znaczniki? | |
np. [[https://ai.ia.agh.edu.pl/wiki/_media/pl:miw:thermostat2.0.xml?id=pl%3Amiw%3Amiw08_xtt_xml&cache=cache|thermostat2.0]] | |
| |
=== xtt -> r2ml -> swrl (niepolecane)=== | [[pl:miw:2009:miw09_swrltrans:projekt|Implementacja translacji w prologu]]. |
xtt -> r2ml: https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_xtt_r2ml:translator | |
| |
r2ml -> swrl: http://www.eclipse.org/m2m/atl/atlTransformations/#R2ML2SWRL (przy pomocy transformacji ATL) | ====== Sprawozdanie ====== |
| |
====== Projekt ====== | |
| |
===== Założenia ===== | ===== Założenia ===== |
| |
W projekcie zostanie stworzony wzorzec XSLT, który zamieni składnię XTTML na składnię [[http://www.w3.org/Submission/SWRL/#5|SWRL XML]], przy czym XML dla SWRL jest kombinacją [[http://www.w3.org/TR/owl-xmlsyntax/|OWL Web Ontology Language XML]] z [[http://www.ruleml.org/|RuleML XML]] | W projekcie miał zostać stworzony wzorzec XSLT, który zamieni składnię XTTML na składnię [[http://www.w3.org/Submission/SWRL/#5|SWRL XML]], przy czym XML dla SWRL jest kombinacją [[http://www.w3.org/TR/owl-xmlsyntax/|OWL Web Ontology Language XML]] z [[http://www.ruleml.org/|RuleML XML]].\\ |
| Ostatecznie został stworzony translator w prologu, gdyż XSLT okazał się nie wystarczającym narzędziem.\\ |
| |
Możliwa jest również zamiana XTTML na [[http://www.w3.org/Submission/SWRL/#6|RDF dla SWRL]], przy czym można tego dokonać korzystając ze wzorca [[http://www.w3.org/TR/owl-xmlsyntax/owlxml2rdf.xsl|owlxml2rdf.xsl]], który należałoby rozbudować. | Możliwa jest również zamiana XTTML na [[http://www.w3.org/Submission/SWRL/#6|RDF dla SWRL]], przy czym można tego dokonać korzystając ze wzorca [[http://www.w3.org/TR/owl-xmlsyntax/owlxml2rdf.xsl|owlxml2rdf.xsl]], który należałoby rozbudować. |
| |
| |
| ==== Fragment drzewa syntaktycznego ==== |
| {{:pl:miw:2009:miw09_swrltrans:swrlx.png|}} |
===== Translacja XTT na SWRL ===== | ===== Translacja XTT na SWRL ===== |
| |
==== Problemy w translacji ==== | ==== Problemy w translacji ==== |
| |
1. Możliwość stosowania tylko predykatów binarnych w SWRL (w XTT brak ograniczenia), | 1. Możliwość stosowania tylko predykatów binarnych w SWRL (w XTT brak ograniczenia),\\ |
2. Brak możliwości zagnieżdżania obliczeń matematycznych w SWRL, | 2. Brak możliwości zagnieżdżania obliczeń matematycznych w SWRL,\\ |
3. Brak możliwości korzystania z predykatów zdefiniowanych zewnętrznie, | 3. Brak możliwości korzystania z predykatów zdefiniowanych zewnętrznie,\\ |
4. SWRL nie obsługuje negacji ani alternatywy. | 4. SWRL nie obsługuje negacji ani alternatywy. |
| |
| |
Translacja, której wynikiem byłby XML SWRL taki, że interpreter SWRL dokonywałby działań (operacji) analogicznych do interpretera XTT. | Translacja, której wynikiem byłby XML SWRL taki, że interpreter SWRL dokonywałby działań (operacji) analogicznych do interpretera XTT. |
Napisanie takich reguł translacji XTT -> SWRL przy pomocy XSLT jest bardzo trudne, o ile nie niemożliwe (XSLT jest nieodpowiednim do tego narzędziem, należałoby napisać własny translator). | Napisanie takich reguł translacji XTT -> SWRL przy pomocy XSLT jest bardzo trudne, o ile nie niemożliwe (XSLT jest nieodpowiednim do tego narzędziem, należałoby napisać własny translator).\\ |
| |
W tym podejściu rozwiązania problemów przedstawiałyby się nastepująco: | W tym podejściu rozwiązania problemów przedstawiałyby się nastepująco:\\ |
ad 1. Rozwiązaniem jest stworzenie sztucznej relacji, która wiąże ze soba kolejne argumenty. | ad 1. Rozwiązaniem jest stworzenie sztucznej relacji, która wiąże ze soba kolejne argumenty. [[#przyklad_prolog_-_swrl|Przykład zastosowania sztucznej relacji 'reifiedRelation']]\\ |
ad 2. Rozwiązaniem jest stworzenie serii zmiennych pomocniczych, które przechowywałyby wyniki obliczeń kolejno w sobie zagnieżdżonych operacji. | ad 2. Rozwiązaniem jest stworzenie serii zmiennych pomocniczych, które przechowywałyby wyniki obliczeń kolejno w sobie zagnieżdżonych operacji.\\ |
ad 3. Brak istniejącego rozwiązania. | ad 3. Brak istniejącego rozwiązania.\\ |
ad 4. Rozwiązaniem problemu alternatywy jest stworzenie tylu reguł, ile jest alternatyw. Każda reguła w poprzedniku posiadałaby inną alternatywę, w następniku znajdowałaby się natomiast ta sama dla wszystkich operacja (Zbiór operacji). | ad 4. Rozwiązaniem problemu alternatywy jest stworzenie tylu reguł, ile jest alternatyw. Każda reguła w poprzedniku posiadałaby inną alternatywę, w następniku znajdowałaby się natomiast ta sama dla wszystkich operacja (Zbiór operacji).\\ |
| |
Przykład translacji identycznościowej: | Przykład translacji identycznościowej: |
[[#Przykład XTT -> SWRL| Przykład XTT -> SWRL]] | [[#Przykład translacji identycznościowej XTT -> SWRL| Przykład translacji identycznościowej XTT -> SWRL]] |
| |
=== Translacja obiektowa === | === Translacja obiektowa === |
Translacja, której wynikiem byłby XML SWRL taki, że interpreter SWRL stwierdziłby poprawność XML, ale nie byłby w stanie wykonać wszystkich działań (operacji) analogicznie do interpretera XTT. | Translacja, której wynikiem byłby XML SWRL taki, że interpreter SWRL stwierdziłby poprawność XML, ale nie byłby w stanie wykonać działań (operacji) analogicznie do tego jak zrobiłby to interpreter XTT. |
Translacja powodowałaby przedstawienie obliczeń i operacji w postaci klas i obiektów.\\ \\ | Translacja powodowałaby przedstawienie obliczeń i operacji w postaci klas i obiektów.\\ |
| |
Najbardziej właściwa dla SWRLa wydaje się propozycja przedstawiania zmiennych jako klas, posiadających odpowiednie własności: wartość (własność: "value"), operacja (własność zależna od operacji). | Najbardziej właściwa dla SWRLa wydaje się propozycja przedstawiania zmiennych/operacji/funkcji jako klas, posiadających odpowiednie własności: wartość (własność: "value"), operacja (własność zależna od operacji).\\ |
Przykładem operacji jest np. sumowanie, właściwość obiektu "add" byłaby obiektem, która posiadałaby własność liczby (DataPropertyValue) lub przechowywałaby konieczne do wykonania obliczenia w postaci obiektu (ObjectPropertyValue) - kolejne zagnieżdżenie z kolejnymi własnościami "value" lub operacjami. | Przykładem operacji jest np. sumowanie, właściwość obiektu "add" byłaby obiektem, która posiadałaby własność liczby (DataPropertyValue) lub przechowywałaby konieczne do wykonania obliczenia w postaci obiektu (ObjectPropertyValue) - kolejne zagnieżdżenie z kolejnymi własnościami "value" lub operacjami. |
| \\ |
| W takim przypadku również reguła byłaby obiektem, ponieważ interpreter SWRL i tak nie byłby w stanie sprawdzić założeń reguły (poprzednika, tezy), gdyż poprzednikiem byłaby po prostu klasa - czyli obiekt. |
| |
| Przykład translacji obiektowej: |
| [[#Przykład translacji obiektowej XTT -> SWRL| Przykład translacji obiektowej XTT -> SWRL]] |
| |
==== Przykład Prolog -> SWRL ==== | ==== Przykład Prolog -> SWRL ==== |
[[pl:miw:miw08_hml_rules:owl|Więcej przykładów SWRL (na podstawie OWL)]] | [[pl:miw:miw08_hml_rules:owl|Więcej przykładów SWRL (na podstawie OWL)]] |
| |
==== Przykład XTT -> SWRL === | ==== Przykład translacji identycznościowej XTT -> SWRL === |
| |
XTT: [[hekate:hekate_markup_language#xttml]] | XTT: [[hekate:hekate_markup_language#xttml]] |
| |
| |
Propozycja SWRL: (sprawdzona poprawność składniowa przez [[http://www.w3.org/2001/03/webdata/xsv]]) | Propozycja translacji identycznościowej SWRL: (sprawdzona poprawność składniowa przez [[http://www.w3.org/2001/03/webdata/xsv]]) |
<code> | <code> |
<?xml version='1.0' ?> | <?xml version='1.0' ?> |
</code> | </code> |
| |
====== Sprawozdanie ====== | ==== Przykład translacji obiektowej XTT -> SWRL === |
====== Prezentacja ====== | |
| XTT: [[hekate:hekate_markup_language#xttml]] |
| |
| W skrócie:\\ |
| xtt_1:\\ |
| rule_1: if att_0 in <1,5>u{8} then att_1 = att_0 + 1 and att_1 = 5 + sin(att_0)\\ |
| |
| Poniżej translacja tylko fragmentu XTT, gdyż reszta jest analogiczna: |
| |
| XTT: |
| <code> |
| <logop name="in"> |
| <attref ref="att_0"/> |
| <domain> |
| <range from="1" to="5"/> |
| <value>8</value> |
| </domain> |
| </logop> |
| </code> |
| |
| |
| SWRL: |
| <code> |
| <owlx:Individual> |
| |
| <owlx:ObjectPropertyValue owlx:property="logop"> |
| <owlx:Individual> |
| <owlx:ObjectPropertyValue owlx:property="attribute"> |
| <owlx:Individual> |
| <owlx:DataPropertyValue owlx:property="name"> |
| <owlx:DataValue owlx:datatype="&xsd;string">in</owlx:DataValue> |
| </owlx:DataPropertyValue> |
| </owlx:Individual> |
| </owlx:ObjectPropertyValue> |
| |
| <owlx:ObjectPropertyValue owlx:property="attref"> |
| <owlx:Individual> |
| <owlx:ObjectPropertyValue owlx:property="attribute"> |
| <owlx:Individual> |
| <owlx:DataPropertyValue owlx:property="ref"> |
| <owlx:DataValue owlx:datatype="&xsd;string">in</owlx:DataValue> |
| </owlx:DataPropertyValue> |
| </owlx:Individual> |
| </owlx:ObjectPropertyValue> |
| </owlx:Individual> |
| </owlx:ObjectPropertyValue> |
| |
| <owlx:ObjectPropertyValue owlx:property="domain"> |
| <owlx:Individual> |
| <owlx:ObjectPropertyValue owlx:property="range"> |
| <owlx:Individual> |
| <owlx:ObjectPropertyValue owlx:property="attribute"> |
| <owlx:Individual> |
| <owlx:DataPropertyValue owlx:property="from"> |
| <owlx:DataValue owlx:datatype="&xsd;string">1</owlx:DataValue> |
| </owlx:DataPropertyValue> |
| <owlx:DataPropertyValue owlx:property="to"> |
| <owlx:DataValue owlx:datatype="&xsd;string">5</owlx:DataValue> |
| </owlx:DataPropertyValue> |
| </owlx:Individual> |
| </owlx:ObjectPropertyValue> |
| </owlx:Individual> |
| </owlx:ObjectPropertyValue> |
| <owlx:DataPropertyValue owlx:property="value"> |
| <owlx:DataValue owlx:datatype="&xsd;string">8</owlx:DataValue> |
| </owlx:DataPropertyValue> |
| </owlx:Individual> |
| </owlx:ObjectPropertyValue> |
| </owlx:Individual> |
| </owlx:ObjectPropertyValue> |
| |
| </owlx:Individual> |
| </code> |
====== Materiały ====== | ====== Materiały ====== |
* [[http://www.w3.org/Submission/SWRL/|SWRL]] | * [[http://www.w3.org/Submission/SWRL/|SWRL]] |