Różnice

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

Odnośnik do tego porównania

pl:miw:2009:miw09_swrltrans [2009/05/29 18:27]
mikel
pl:miw:2009:miw09_swrltrans [2019/06/27 15:50]
Linia 1: Linia 1:
-~~SLIDESHOW~~ ~~ODT~~ 
-====== MIW 2009 SWRLtrans ====== 
  
-**Zrealizował**:​ [[mikelik@o2.pl|Michał Lesiak]] (4RI) 
- 
-:!::!: 
-Work on the translation 
-of 
-[[hekate:​XTT2]] 
-to 
-[[http://​www.w3.org/​Submission/​SWRL/​|SWRL]] 
-using 
-[[http://​www.w3.org/​TR/​xslt|XSLT]]. 
- 
-[[pl:​miw:​miw08_xtt_rif]] 
-[[student:​msc2008_xml_knowledge_transformation:​xttml2rif]] 
- 
-====== Prezentacja ====== 
-[[pl:​miw:​2009:​miw09_swrltrans:​prezentacja|Prezentacja wyników projektowych]]. 
- 
- 
-====== Spotkania ====== 
-[[pl:​miw:​2009:​miw09_swrltrans:​spotkania|Notatki ze spotkań projektowych]]. 
- 
-====== Projekt ====== 
- 
-[[pl:​miw:​2009:​miw09_swrltrans:​projekt|Implementacja translacji w prologu]]. 
- 
-====== Sprawozdanie ====== 
- 
-===== Założenia ===== 
- 
-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ć. 
- 
-===== Wprowadzenie do SWRL ==== 
-//​[[http://​www.w3.org/​Submission/​SWRL/#​1|Introduction]]//​ 
- 
- 
-Semantic Web Rule Language (SWRL) jest propozycją języka, który bazuje na kombinacji OWL DL i OWL Lite, czyli podjęzyków [[http://​www.w3.org/​2001/​sw/​WebOnt/​|OWL Web Ontology Language]] z pojedynczymi/​binarnymi [[http://​en.wikipedia.org/​wiki/​Datalog|datalogami]] języka RuleML. 
-Propozycja rozszerza zbiór aksjomatów OWL tak, by zawierał reguły podobne do reguł Horna. Reguły te mogą więc być łączone z bazą wiedzy OWL. 
- 
-Reguły są przedstawiane w formie implikacji: poprzednik ("​body"​) i następnik ("​head"​),​ z których każdy może składać się z zera lub więcej atomów. Implikacja w przypadku pustego poprzednika jest traktowana jako zawsze prawdziwa, a w przypadku pustego następnika jest traktowana jako zawsze fałszywa. Wiele atomów jest traktowanych jako koniunkcja. 
-Reguła z koniunkcją atomów w następniku jest równoważna koniunkcjom reguł, w których następnikami są pojedyncze atomy. ​ 
- 
- 
-===== Składnia XML ===== 
-//​[[http://​www.w3.org/​Submission/​SWRL/#​5|XML Concrete Syntax]]// 
- 
-Składnia XML dla SWRL jest kombinacją [[http://​www.w3.org/​TR/​owl-xmlsyntax/​|OWL Web Ontology Language XML]] z [[http://​www.ruleml.org/​|RuleML XML]]. 
- 
-Definiuje przestrzenie nazw swrlx i swrlb, importuje przestrzeń nazw ruleml i owl. 
- 
-Używane przestrzenie nazw: 
-|**Skrót**|**Przestrzeń nazw**| 
-|swrlx|http://​www.w3.org/​2003/​11/​swrlx| 
-|swrlb|http://​www.w3.org/​2003/​11/​swrlb| 
-|ruleml|http://​www.w3.org/​2003/​11/​ruleml| 
-|owl|http://​www.w3.org/​2003/​05/​owl-xml| 
-|xsd|http://​www.w3.org/​2001/​XMLSchema| 
- 
- 
- 
-**Zalety SWRL**\\ 
-  * klasy OWL (np. opisy) mogą być używane jako predykaty w regułach, 
-  * reguły i aksjomaty ontologii mogą być dowolnie mieszane, 
-  * istniejący arkusz XSLT ([[http://​www.w3.org/​TR/​owl-xmlsyntax/​owlxml2rdf.xsl]]) może posłużyć jako podstawa do stworzenia mapowania na grafy RDF, 
-  * istniejące narzędzia do RuleML mogą być przystosowane do SWRL 
- 
-\\ 
-**Wady SWRL** 
-//​[[http://​vistology.com/​papers/​SWRLp.PDF]]//​\\ 
-  * konieczność transformacji na predykaty binarne (SWRL jest zgodne z OWL, który zabrania używania predykatów złożonych ("​higher-order"​). Zwiększa nieczytelność,​ wydłuża XML, 
-  * rozróżnianie predykatów reprezentujących:​ classAtom, individualPropertyAtom,​ datavaluedPropertyAtom. Wydłuża XML, 
-  * mieszanie ruleml, swrlx, swrlb i owlx. W każdym elemencie trzeba określić przestrzeń nazw. Wydłuża XML, 
-  * nie można korzystać z predykatów definiowanych zewnętrznie jak ma to miejsce w RIF [[http://​www.w3.org/​2005/​rules/​wg/​draft/​rif-dtb/#​Appendix:​_Schemas_for_Externally_Defined_Terms]]. 
-  * SWRL nie obsługuje ani negacji, ani alternatywy [[http://​protege.cim3.net/​cgi-bin/​wiki.pl?​SWRLLanguageFAQ#​nid9L3|SWRL FAQ]]. 
- 
-W związku z czym został zaproponowany bardziej czytelny XML: SWRL presentation:​ [[http://​vistology.com/​papers/​SWRLp.PDF|SWRLp]] 
- 
-==== Elementy składni==== 
-===Ontology=== 
-<​code><​swrlx:​Ontology 
-  swrlx:name = xsd:​anyURI ​ 
-> 
-  Content: (owlx:​VersionInfo | owlx:​PriorVersion | owlx:​BackwardCompatibleWith |  
-              owlx:​IncompatibleWith | owlx:​Imports | owlx:​Annotation |  
-            owlx:​Class[axiom] | owlx:​EnumeratedClass(D,​F) |  
-            owlx:​SubClassOf(D,​F) | owlx:​EquivalentClasses | owlx:​DisjointClasses(D,​F) |  
-            owlx:​DatatypeProperty | owlx:​ObjectProperty |  
-            owlx:​SubPropertyOf | owlx:​EquivalentProperties |  
-            owlx:​Individual[axiom] | owlx:​SameIndividual | owlx:​DifferentIndividuals | 
-            ruleml:​imp[axiom] | ruleml:​var[axiom])* ​ 
-</​swrlx:​Ontology>​ </​code>​ 
- 
-Główny element "​Ontology"​ w stosunku do składni prezentacji OWL XML został rozszerzony o aksjomaty "​imp"​ ("​implication"​ - reguła implikacyjna) oraz "​var"​ ("​variable"​ - deklaracja zmiennej)  ​ 
- 
-===ruleml: var=== 
-<​code><​ruleml:​var>​xsd:​string</​ruleml:​var></​code>​ 
-Definiuje istnienie zmiennej. Zapożyczono z przestrzeni nazw RuleML. 
- 
-=== ruleml: imp === 
-<​code>​ 
-<​ruleml:​imp>​ 
-  Content: ( _rlab?, owlx:​Annotation*,​ _body, _head ) 
-</​ruleml:​imp>​ 
-</​code>​ 
- 
-== ruleml:​_rlab == 
-<​code>​ 
-<​ruleml:​imp>​ 
-  Content: ( _rlab?, owlx:​Annotation*,​ _body, _head ) 
-</​ruleml:​imp>​ 
-</​code>​ 
-== ruleml:​_body == 
-<​code>​ 
-<​ruleml:​_body>​ 
-  Content: ( swrlx:atom* ) 
-</​ruleml:​_body>​ 
-</​code>​ 
-== ruleml:​_head== 
-<​code>​ 
-<​ruleml:​_head>​ 
-  Content: ( swrlx:atom* ) 
-</​ruleml:​_head>​ 
-</​code>​ 
- 
-=== Atomy === 
-Mogą być pojedynczymi predykatami (klasami), binarnymi predykatami (właściwościami),​ równościami lub nierównościami. 
-==swrlx:​classAtom== 
-==swrlx:​datarangeAtom== 
-==swrlx:​individualPropertyAtom== 
-==swrlx:​datavaluedPropertyAtom== 
-==swrlx:​sameIndividualAtom== 
-==swrlx:​differentIndividualsAtom== 
-==swrlx:​builtinAtom== 
- 
- 
-==== Fragment drzewa syntaktycznego ==== 
-{{:​pl:​miw:​2009:​miw09_swrltrans:​swrlx.png|}} 
-===== Translacja XTT na SWRL ===== 
- 
-W SWRL występuje ciąg aksjomatów (axioms) i faktów, gdzie aksjomaty to reguły i klasy obiektów. SWRL przewiduje tylko proste obliczenia matematyczne (builtIn), 
-ale poprawność syntaktyczna nie jest sprawdzana. Np. operacja "​builtIn(op:​numeric-add ?x 5)" (czyli: x + 5 zamiast np. 6 = x + 5) jest poprawna i zwraca wartość fałszu. SWRL bazuje na opisie i właściwościach klas obiektów. 
-To zdecydowanie odmienne podejście niż w przypadku XTT powoduje problemy w translacji między tymi językami. 
- 
-==== Problemy w translacji ==== 
- 
-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,\\ 
-3. Brak możliwości korzystania z predykatów zdefiniowanych zewnętrznie,​\\ 
-4. SWRL nie obsługuje negacji ani alternatywy. 
- 
-==== Rodzaje podejść ==== 
- 
-=== Translacja identycznościowa === 
- 
-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).\\ 
- 
-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. [[#​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 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).\\ 
- 
-Przykład translacji identycznościowej:​ 
-[[#​Przykład translacji identycznościowej XTT -> SWRL| Przykład translacji identycznościowej XTT -> SWRL]] 
- 
-=== 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ć 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.\\ 
- 
-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. 
-\\ 
-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 pokazuje rozwiązanie problemu translacji predykatów o arności większej niż 2. 
- 
-//​[[http://​vistology.com/​papers/​SWRLp.PDF|SWRL example]]//​\\ 
-Kod w Prologu: 
-<​code>​ 
-inSupplyOfAt(Consumer,​Resource,​Time) 
-:- reserve(Consumer,​Resource,​Time,​Reserve) 
-    consumption(Consumer,​Resource,​Consumption) 
-    greaterThanOrEqual(Reserve,​Consumption). 
-</​code>​ 
- 
-Składnia SWRL: 
-<​code>​ 
-<​ruleml:​imp>​ 
-    <​ruleml:​_head>​ 
-        <​swrlx:​classAtom>​ 
-            <​owlx:​Class owlx:​name="​InSupplyOfAt"/>​ 
-            <​ruleml:​var>?​reifiedRelation</​ruleml:​var>​ 
-        </​swrlx:​classAtom>​ 
-        <​swrlx:​individualPropertyAtom swrlx:​property="​consumer">​ 
-            <​ruleml:​var>?​reifiedRelation</​ruleml:​var>​ 
-            <​ruleml:​var>?​consumer</​ruleml:​var>​ 
-        </​swrlx:​individualPropertyAtom>​ 
-        <​swrlx:​individualPropertyAtom swrlx:​property="​resource">​ 
-            <​ruleml:​var>?​reifiedRelation</​ruleml:​var>​ 
-            <​ruleml:​var>?​resource</​ruleml:​var>​ 
-        </​swrlx:​individualPropertyAtom>​ 
-        <​swrlx:​datavaluedPropertyAtom swrlx:​property="​dateTime">​ 
-            <​ruleml:​var>?​reifiedRelation</​ruleml:​var>​ 
-            <​ruleml:​var>?​time</​ruleml:​var>​ 
-        </​swrlx:​datavaluedPropertyAtom>​ 
-    </​ruleml:​_head>​ 
-    <​ruleml:​_body>​ 
-        <​swrlx:​individualPropertyAtom swrlx:​property="​reserve">​ 
-            <​ruleml:​var>?​consumer</​ruleml:​var>​ 
-            <​ruleml:​var>?​reserve</​ruleml:​var>​ 
-        </​swrlx:​individualPropertyAtom>​ 
-        <​swrlx:​individualPropertyAtom swrlx:​property="​resource">​ 
-            <​ruleml:​var>?​reserve</​ruleml:​var>​ 
-            <​ruleml:​var>?​resource</​ruleml:​var>​ 
-        </​swrlx:​individualPropertyAtom>​ 
-        <​swrlx:​datavaluedPropertyAtom swrlx:​property="​dateTime">​ 
-            <​ruleml:​var>?​reserve</​ruleml:​var>​ 
-            <​ruleml:​var>?​time</​ruleml:​var>​ 
-        </​swrlx:​datavaluedPropertyAtom>​ 
-        <​swrlx:​individualPropertyAtom swrlx:​property="​quantity">​ 
-            <​ruleml:​var>?​reserve</​ruleml:​var>​ 
-            <​ruleml:​var>?​quantity</​ruleml:​var>​ 
-        </​swrlx:​individualPropertyAtom>​ 
-        <​swrlx:​datavaluedPropertyAtom swrlx:​property="​amount">​ 
-            <​ruleml:​var>?​quantity</​ruleml:​var>​ 
-            <​ruleml:​var>?​amount</​ruleml:​var>​ 
-        </​swrlx:​datavaluedPropertyAtom>​ 
-        <​swrlx:​individualPropertyAtom swrlx:​property="​consumption">​ 
-            <​ruleml:​var>?​consumer</​ruleml:​var>​ 
-            <​ruleml:​var>?​consumption</​ruleml:​var>​ 
-        </​swrlx:​individualPropertyAtom>​ 
-        <​swrlx:​individualPropertyAtom swrlx:​property="​consumptionType">​ 
-            <​ruleml:​var>?​consumption</​ruleml:​var>​ 
-            <​ruleml:​var>?​resource</​ruleml:​var>​ 
-        </​swrlx:​individualPropertyAtom>​ 
-        <​swrlx:​datavaluedPropertyAtom swrlx:​property="​consumptionRate">​ 
-            <​ruleml:​var>?​consumption</​ruleml:​var>​ 
-            <​ruleml:​var>?​rate</​ruleml:​var>​ 
-        </​swrlx:​datavaluedPropertyAtom>​ 
-        <​swrlx:​builtinAtom swrlx:​builtin="&​swrlb;​greaterThanOrEqual">​ 
-            <​ruleml:​var>?​amount</​ruleml:​var>​ 
-            <​ruleml:​var>?​rate</​ruleml:​var>​ 
-            <​ruleml:​var/>​ 
-        </​swrlx:​builtinAtom>​ 
-    </​ruleml:​_body>​ 
-</​ruleml:​imp>​ 
-</​code>​ 
- 
-[[pl:​miw:​miw08_hml_rules:​owl|Więcej przykładów SWRL (na podstawie OWL)]] 
- 
-==== Przykład translacji identycznościowej XTT -> SWRL === 
- 
-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)\\ 
- 
- 
-Propozycja translacji identycznościowej SWRL: (sprawdzona poprawność składniowa przez [[http://​www.w3.org/​2001/​03/​webdata/​xsv]]) 
-<​code>​ 
-<?xml version='​1.0'​ ?> 
-<​!DOCTYPE swrlx:​Ontology [ 
-<!ENTITY swrlb '​http://​www.w3.org/​2003/​11/​swrlb'>​ 
-<!ENTITY xsd '​http://​www.w3.org/​2001/​XMLSchema'>  ​ 
-<!ENTITY map '​http://​www.daml.org/​2001/​06/​map/​map-ont#'>​ 
-]> 
- 
-<​swrlx:​Ontology 
-    xmlns:​owlx="​http://​www.w3.org/​2003/​05/​owl-xml"​ 
-    xmlns:​swrlx="​http://​www.w3.org/​2003/​11/​swrlx"​ 
-    xmlns:​ruleml="​http://​www.w3.org/​2003/​11/​ruleml"​ 
-    xmlns:​xsi="​http://​www.w3.org/​2001/​XMLSchema-instance"​ 
-    xsi:​schemaLocation="​http://​www.w3.org/​2003/​11/​swrlx http://​www.ruleml.org/​swrl/​xsd/​swrlx.xsd"​ 
-    > 
-    <​owlx:​Annotation>​ 
-        <​owlx:​Documentation>​ XTT to SWRL Translator</​owlx:​Documentation>​ 
-    </​owlx:​Annotation>​ 
-    <​owlx:​VersionInfo>​v 1.0 2009/03/15 Michal Lesiak mikelik@o2.pl</​owlx:​VersionInfo>​ 
-    ​ 
-    <​owlx:​ObjectProperty owlx:​name="​table"/>​ 
-    <​owlx:​ObjectProperty owlx:​name="​link"/>​ 
-    ​ 
-    <​ruleml:​var>​att_0</​ruleml:​var>​ 
-    <​ruleml:​var>​att_1</​ruleml:​var>​ 
-    <​ruleml:​var>​temp1</​ruleml:​var>​ 
-    ​ 
-    <​ruleml:​imp>​ 
-        <​ruleml:​_rlab ruleml:​href="​rul_1a"/>​ 
-        <​owlx:​Annotation>​ 
-            <​owlx:​Documentation>​ 
-                Ta reguła dotyczy: if att_0 nalezy do zbioru (1,5) 
-            </​owlx:​Documentation>​ 
-        </​owlx:​Annotation>​ 
-        <​ruleml:​_body>​ 
-            <​swrlx:​builtinAtom ​ swrlx:​builtin="&​swrlb;#​greaterThanOrEqual">​ 
-                <​ruleml:​var>​att_0</​ruleml:​var>​ 
-                <​owlx:​DataValue owlx:​datatype="&​xsd;#​int">​1</​owlx:​DataValue>​ 
-            </​swrlx:​builtinAtom>​ 
-            ​ 
-            <​swrlx:​builtinAtom ​ swrlx:​builtin="&​swrlb;#​lessThanOrEqual">​ 
-                <​ruleml:​var>​att_0</​ruleml:​var>​ 
-                <​owlx:​DataValue owlx:​datatype="&​xsd;#​int">​5</​owlx:​DataValue>​ 
-            </​swrlx:​builtinAtom>​ 
-        </​ruleml:​_body>​ 
-        <​ruleml:​_head>​ 
-            <​swrlx:​builtinAtom swrlx:​builtin="&​swrlb;#​add">​ 
-                <​ruleml:​var>​att_1</​ruleml:​var>​ 
-                <​ruleml:​var>​att_0</​ruleml:​var>​ 
-                <​owlx:​DataValue owlx:​datatype="&​xsd;#​int">​1</​owlx:​DataValue>​ 
-            </​swrlx:​builtinAtom>​ 
-            ​ 
-            <​swrlx:​builtinAtom swrlx:​builtin="&​swrlb;#​sin">​ 
-                <​ruleml:​var>​temp1</​ruleml:​var>​ 
-                <​ruleml:​var>​att_0</​ruleml:​var>​ 
-            </​swrlx:​builtinAtom>​ 
-            ​ 
-            <​swrlx:​builtinAtom swrlx:​builtin="&​swrlb;#​add">​ 
-                <​ruleml:​var>​att_1</​ruleml:​var>​ 
-                <​owlx:​DataValue owlx:​datatype="&​xsd;#​int">​5</​owlx:​DataValue>​ 
-                <​ruleml:​var>​temp1</​ruleml:​var>​ 
-            </​swrlx:​builtinAtom>​ 
-            ​ 
-        </​ruleml:​_head>​ 
-    </​ruleml:​imp>​ 
-    ​ 
-    <​owlx:​Individual owlx:​name="​rul_1a">​ 
-        <​owlx:​ObjectPropertyValue owlx:​property="​table"> ​ 
-            <​owlx:​Individual owlx:​name="#​xtt_1"​ />  
-        </​owlx:​ObjectPropertyValue> ​ 
-        <​owlx:​ObjectPropertyValue owlx:​property="​link"> ​ 
-            <​owlx:​Individual owlx:​name="#​xtt_1"​ />  
-        </​owlx:​ObjectPropertyValue> ​ 
-        <​!-- ​ owlx:type owlx:​name="​typu_np._link"​ - jakis typ obiektu czyli klasa" /> --> 
-        <!-- może być tez wartość typu string 
-            <​owlx:​DataPropertyValue owlx:​property="​link">​ 
-            <​owlx:​DataValue owlx:​datatype="&​xsd;​string">​xtt_1</​owlx:​DataValue> ​ 
-            </​owlx:​DataPropertyValue>​ --> 
-    </​owlx:​Individual>​ 
-    ​ 
-    <​ruleml:​imp>​ 
-        <​ruleml:​_rlab ruleml:​href="​rul_1b"/>​ 
-        <​owlx:​Annotation>​ 
-            <​owlx:​Documentation>​ 
-                Ta reguła dotyczy: if att_0 jest rowne 8 
-            </​owlx:​Documentation>​ 
-        </​owlx:​Annotation>​ 
-        <​ruleml:​_body>​ 
-            <​swrlx:​datarangeAtom> ​ 
-                <​owlx:​OneOf>​ 
-                    <​owlx:​DataValue owlx:​datatype="&​xsd;​int">​8</​owlx:​DataValue>​ 
-                </​owlx:​OneOf>​ 
-                <​ruleml:​var>​att_0</​ruleml:​var>​ 
-            </​swrlx:​datarangeAtom> ​ 
-        </​ruleml:​_body>​ 
-        <​ruleml:​_head>​ 
-            <​swrlx:​builtinAtom swrlx:​builtin="&​swrlb;#​add">​ 
-                <​ruleml:​var>​att_1</​ruleml:​var>​ 
-                <​ruleml:​var>​att_0</​ruleml:​var>​ 
-                <​owlx:​DataValue owlx:​datatype="&​xsd;#​int">​1</​owlx:​DataValue>​ 
-            </​swrlx:​builtinAtom>​ 
-            ​ 
-            <​swrlx:​builtinAtom swrlx:​builtin="&​swrlb;#​sin">​ 
-                <​ruleml:​var>​temp1</​ruleml:​var>​ 
-                <​ruleml:​var>​att_0</​ruleml:​var>​ 
-            </​swrlx:​builtinAtom>​ 
-            ​ 
-            <​swrlx:​builtinAtom swrlx:​builtin="&​swrlb;#​add">​ 
-                <​ruleml:​var>​att_1</​ruleml:​var>​ 
-                <​owlx:​DataValue owlx:​datatype="&​xsd;#​int">​5</​owlx:​DataValue>​ 
-                <​ruleml:​var>​temp1</​ruleml:​var>​ 
-            </​swrlx:​builtinAtom>​ 
-            ​ 
-        </​ruleml:​_head>​ 
-    </​ruleml:​imp>​ 
-    ​ 
-    <​owlx:​Individual owlx:​name="​rul_1b">​ 
-        <​owlx:​ObjectPropertyValue owlx:​property="​table"> ​ 
-            <​owlx:​Individual owlx:​name="#​xtt_1"​ />  
-        </​owlx:​ObjectPropertyValue> ​ 
-        <​owlx:​ObjectPropertyValue owlx:​property="​link"> ​ 
-            <​owlx:​Individual owlx:​name="#​xtt_1"​ />  
-        </​owlx:​ObjectPropertyValue> ​ 
-    </​owlx:​Individual>​ 
-    ​ 
-</​swrlx:​Ontology>​ 
-</​code>​ 
- 
-==== Przykład translacji obiektowej XTT -> SWRL === 
- 
-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 ====== 
-  * [[http://​www.w3.org/​Submission/​SWRL/​|SWRL]] 
-  * [[http://​oxygen.informatik.tu-cottbus.de/​rewerse-i1/?​q=node/​15]] 
-  * [[http://​st.inf.tu-dresden.de/​OCLApps2006/​topic/​acceptedPapers/​04_Gasevic_OnInterchanging.pdf]] 
-  * [[http://​www.w3.org/​2005/​rules/​wg/​wiki/​Implementations/​SWRL|zależności RIF <-> SWRL]] 
-  * [[http://​protege.cim3.net/​cgi-bin/​wiki.pl?​SWRLLanguageFAQ]] 
-  * [[http://​vistology.com/​papers/​SWRLp.PDF|SWRL Presentation Proposal]] 
-  * [[pl:​miw:​miw08_hml_rules:​owl|SWRL na podstawie OWL - podstawy, przykłady]] 
-  * [[http://​www.oxygenxml.com/​|Oxygen - darmowy edytor XML]] 
-  * [[http://​www.w3.org/​2001/​03/​webdata/​xsv|Sprawdzanie poprawności XML]] 
pl/miw/2009/miw09_swrltrans.txt · ostatnio zmienione: 2019/06/27 15:50 (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