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:2009:miw09_swrltrans [2009/03/02 00:31]
mikel
pl:miw:2009:miw09_swrltrans [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
-====== ​Opis ====== +~~ODT~~ 
-Michał Lesiak <mikelik@o2.pl>+====== ​MIW 2009 SWRLtrans ​====== 
 + 
 +**Zrealizował**: [[mikelik@o2.pl|Michał Lesiak]] (4RI)
  
 :!::!: :!::!:
Linia 14: Linia 16:
 [[student:​msc2008_xml_knowledge_transformation:​xttml2rif]] [[student:​msc2008_xml_knowledge_transformation:​xttml2rif]]
  
-====== ​Spotkania ​====== +====== ​Prezentacja ​====== 
-===== 20090305 ==== +[[pl:miw:2009:miw09_swrltrans:prezentacja|Prezentacja wyników projektowych]].
-  * Brak projektów-translatorów bazujących XTT 2.0 ([[pl:miw:miw08_xtt_r2ml:translator|xtt 1.0 to r2ml ]], [[https://​ai.ia.agh.edu.pl/​wiki/​_media/​pl:​miw:​miw08_xtt_rif:​xtttorif.xml|xtt 1.0 to rif]]) +
-  * Bazować jedynie na specyfikacji:​ [[student:​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?+
  
-===== 20090219 ==== 
-  * 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]] 
-  * [[student:​xttml20]] - link z 080318 [[pl:​miw:​miw08_xtt_xml]] 
  
-Czy jest przykładowy xttml, w którym byłyby wszystkie znaczniki? +====== Spotkania ====== 
-np. [[https://​ai.ia.agh.edu.pl/​wiki/​_media/​pl:miw:thermostat2.0.xml?​id=pl%3Amiw%3Amiw08_xtt_xml&​cache=cache|thermostat2.0]]+[[pl:miw:2009:​miw09_swrltrans:​spotkania|Notatki ze spotkań projektowych]].
  
-=== xtt -> r2ml -> swrl (niepolecane)=== +====== ​Projekt ======
-xtt -> r2ml: https://​ai.ia.agh.edu.pl/​wiki/​pl:​miw:​miw08_xtt_r2ml:​translator+
  
-r2ml -> swrlhttp://​www.eclipse.org/​m2m/​atl/​atlTransformations/#​R2ML2SWRL (przy pomocy transformacji ATL)+[[pl:miw:2009:​miw09_swrltrans:​projekt|Implementacja translacji w prologu]].
  
-====== ​Projekt ​======+====== ​Sprawozdanie ​======
  
 ===== 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ć.
Linia 82: Linia 75:
   * 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,   * 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,   * 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.+  * 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]] W związku z czym został zaproponowany bardziej czytelny XML: SWRL presentation:​ [[http://​vistology.com/​papers/​SWRLp.PDF|SWRLp]]
Linia 143: Linia 138:
 ==swrlx:​builtinAtom== ==swrlx:​builtinAtom==
  
-==== Przykład ====+ 
 +==== 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]]//​\\ //​[[http://​vistology.com/​papers/​SWRLp.PDF|SWRL example]]//​\\
 Kod w Prologu: Kod w Prologu:
Linia 218: Linia 260:
 [[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)]]
  
-====== ​Sprawozdanie ​====== +==== Przykład translacji identycznościowej 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)\\ 
 + 
 + 
 +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 ====== ====== Materiały ======
   * [[http://​www.w3.org/​Submission/​SWRL/​|SWRL]]   * [[http://​www.w3.org/​Submission/​SWRL/​|SWRL]]
Linia 228: Linia 481:
   * [[http://​vistology.com/​papers/​SWRLp.PDF|SWRL Presentation Proposal]]   * [[http://​vistology.com/​papers/​SWRLp.PDF|SWRL Presentation Proposal]]
   * [[pl:​miw:​miw08_hml_rules:​owl|SWRL na podstawie OWL - podstawy, przykłady]]   * [[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.1235950263.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