To jest stara wersja strony!
Opis
Spotkania
20090319
20090305
-
-
jedyna poprawna specyfikacja XTT2:
xtt2
20090219
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
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ą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,
-
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