To jest stara wersja strony!


Opis

Michał Lesiak mikelik@o2.pl

:!::!: Work on the translation of XTT2 to SWRL using XSLT.

miw08_xtt_rif xttml2rif

Spotkania

20090319

  • konieczność utworzenia zmiennych tymczasowych (u mnie: temp1), ponieważ (prawdopodobnie) nie można zagnieżdżać funkcji w funkcji
  • 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

20090219

  • konto

brak dostępu:

Czy jest przykładowy xttml, w którym byłyby wszystkie znaczniki? np. thermostat2.0

xtt -> r2ml -> swrl (niepolecane)

Projekt

Założenia

W projekcie zostanie stworzony wzorzec XSLT, który zamieni składnię XTTML na składnię SWRL XML, przy czym XML dla SWRL jest kombinacją OWL Web Ontology Language XML z RuleML XML

Możliwa jest również zamiana XTTML na RDF dla SWRL, przy czym można tego dokonać korzystając ze wzorca owlxml2rdf.xsl, który należałoby rozbudować.

Wprowadzenie do SWRL

Introduction

Semantic Web Rule Language (SWRL) jest propozycją języka, który bazuje na kombinacji OWL DL i OWL Lite, czyli podjęzyków OWL Web Ontology Language z pojedynczymi/binarnymi 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

XML Concrete Syntax

Składnia XML dla SWRL jest kombinacją OWL Web Ontology Language XML z RuleML XML.

Definiuje przestrzenie nazw swrlx i swrlb, importuje przestrzeń nazw ruleml i owl.

Używane przestrzenie nazw:

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.

W związku z czym został zaproponowany bardziej czytelny XML: SWRL presentation: SWRLp

Elementy składni

Ontology

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

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

<ruleml:var>xsd:string</ruleml:var>

Definiuje istnienie zmiennej. Zapożyczono z przestrzeni nazw RuleML.

ruleml: imp

<ruleml:imp>
  Content: ( _rlab?, owlx:Annotation*, _body, _head )
</ruleml:imp>
ruleml:_rlab
<ruleml:imp>
  Content: ( _rlab?, owlx:Annotation*, _body, _head )
</ruleml:imp>
ruleml:_body
<ruleml:_body>
  Content: ( swrlx:atom* )
</ruleml:_body>
ruleml:_head
<ruleml:_head>
  Content: ( swrlx:atom* )
</ruleml:_head>

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

Przykład Prolog -> SWRL

SWRL example
Kod w Prologu:

inSupplyOfAt(Consumer,Resource,Time)
:- reserve(Consumer,Resource,Time,Reserve)
    consumption(Consumer,Resource,Consumption)
    greaterThanOrEqual(Reserve,Consumption).

Składnia SWRL:

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

Więcej przykładów SWRL (na podstawie OWL)

Przykład XTT -> SWRL

XTT: 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 SWRL:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE swrlx:Ontology [
<!ENTITY swrlb 'http://www.w3.org/2003/11/swrlb'>
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema'>
]>

<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">
    <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>
    
    <xsl:stylesheet version = '2.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
        <xsl:output method="xml" version="1.0" indent="yes"/>

<ruleml:var>att_0</ruleml:var>
<ruleml:var>att_1</ruleml:var>
<ruleml:var>temp1</ruleml:var>

        <ruleml:imp>
            <ruleml:_rlab name="rul_1">                
            </ruleml:_rlab>
            <owlx:Annotation>
                Uwzgledniac opis? np. przynaleznosc do tabeli
                Ta reguła dotyczy: if att_0 [1,5]            
            </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:ObjectProperty owlx:name="table"/>
        <owlx:ObjectProperty owlx:name="link"/>
       
        <owlx:Individual owlx:name="rul_1">
            <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>
        
        
</swrlx:Ontology>

Sprawozdanie

Prezentacja

Materiały

pl/miw/2009/miw09_swrltrans.1237403726.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