[[
✎ pl:miw:miw08_hml_rules
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Opis ====== Michał, Rogula, <michal.rogula@wp.pl> - Porównać i omówić metody reprezentowania atrybutów w językach: * RDF * OWL * RIF * R2ML * RuleML oraz metody reprezentowania reguł w: * RIF * R2ML * RuleML ====== Projekt ====== Jeżeli dzień=poniedziałek wtedy temp=20st mamy 2 atrybuty: * dzień, przyjmuje wart symboliczne ze zb: pon-niedz * temp, jest liczbą, np. float, z zakresu, np. 0-20st Rozważania na temat zapisu powyższej reguły za pomocą: * [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:rif|Rule Interchange Format (RIF)]] * [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:r2ml|Rewerse Rule Markup Language (R2ML)]] * [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:ruleML|Rule Markup Language (RuleML)]] * [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:rdf|Resource Description Framework (RDF) / Extended RDF (ERDF)]] * [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:owl|Web Ontology Language (OWL) / Semantic Web Rule Language (SWRL)]] [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:spotkania|SPOTKANIA]] ====== Sprawozdanie ====== **1. RIF(Rule Interchange Format)** jest stworzonym przez W3C [[http://www.w3.org/|(Word Wide Web Consorcium)]] formatem reguł pozwalających na ich wymianę dla różnych języków reguł w sieciach semantycznych (RDF, OWL). Format RIF jest ciągle w fazie rozwoju, jedyne dostępne dokumenty są to szkice specyfikacji poszczególnych modułów (Working Draft). Do rozwijanych dokumentów należą m.in. [[http://www.w3.org/2005/rules/wg/draft/rif-fld/|RIF Framework for Logic Dialects ]] oraz [[http://www.w3.org/2005/rules/wg/draft/rif-bld/|RIF Basic Logic Dialect]] [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:rif:rifattribute|Atrybuty w RIF + RDF oraz OWL Kompatybilność]] Dokładny opis specyfikacji RIF można znaleźć w projekcie [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_xtt_rif|XTT_RIF]]. Dla mnie istotna, z punktu widzenia projektu, jest wiedza jak zapisywać typowe dla reguł elementy tj: * wartosc logiczna: np: B <code xml> <Var> B </Var> </code> * stałe argumenty: np: 300 <code xml> <arg><Const type="rds:long"> 300 </Const></arg> </code> * suma: n+1 <code xml> <Uniterm> <op><Const type="rif:iri"> op:numeric-add </Const></op> <arg><Const type=""> 1 </Const></arg> <arg><Var> n </Var></arg> </Uniterm> </code> * różnica: n-1 <code xml> <Uniterm> <op><Const type="rif:iri"> op:numeric-subtract </Const></op> <arg><Const type=""> 1 </Const></arg> <arg><Var> n </Var></arg> </Uniterm> </code> * równość: (wyr_1) = (wartosc) <code xml> <Equal> <arg> wyr_1 </arg> <arg> wartosc </arg> </Equal> </code> * nierówność: n > 0 <code xml> <Uniterm> <op><Const type="rif:iri"> op:numeric-greater-than </Const></op> <arg><Var> n </Var></arg> <arg><Const type="xsd:decimal"> 0 </Const></arg> </Uniterm> </code> * nierówność: n <= 1 <code xml> <Uniterm> <op><Const type="rif:iri"> op:numeric-less-or-equal-than </Const></op> <arg><Var> n </Var></arg> <arg><Const type="xsd:decimal"> 0 </Const></arg> </Uniterm> </code> * suma logiczna : (wyr_1) and (wyr_2) <code xml> <And> <formula> (wyr_1) </formula> <formula> (wyr_2) </formula> </And> </code> * warunek if : (conclusion) if (conditions) <code xml> <Implies> <if> (conditions) </if> <then> (conclusion) </then> </Implies> </code> Teraz, na podstawie powyższej wiedzy, możemy spróbować zapisać nasz przykład (//**Jeżeli dzień=poniedziałek wtedy temp=20st**//) za pomocą RIF: <code xml> <?xml version="1.0" encoding="UTF-8"?> <Ruleset> <rule> <declare><Var> day </Var></declare> <formula> <Implies> <if> <formula> <Equal> <arg><Var> day </Var></arg> <arg><Const type="xsd:string">Monday</Const></arg> </Equal> </formula> </if> <then> <Uniterm> <op><Const type="rif:local">temp</Const></op> <arg><Const type="rds:positiveInteger">20</Const></arg> </Uniterm> </then> </Implies> </formula> </rule> </Ruleset> </code> W analogiczny sposób możemy zapisać większość reguł. Przykładem może być tu całość [[https://ai.ia.agh.edu.pl/wiki/hekate:hekate_case_thermostat|HeKatE Case Thermostat]] którego reguły przedstawione w RIF wyglądają nastepująco: [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_xtt_rif:thermostat|therm in RIF]]. **2. R2ML – Reverse Rule Markup Language** powstał z inicjatywy [[http://oxygen.informatik.tu-cottbus.de/rewerse-i1/|REWERSE Working Group I1]], w celu ułatwienia wymiany reguł między różnymi systemami oraz narzędziami, wzbogacenia ontologii o reguły oraz możliwości łączenia systemów regułowych z narzedziami R2ML do wizualizacji, weryfikacji, walidacji oraz werbalizacji. R2ML wspiera Integrity Rules, Derivation Rules, Production Rules oraz Reaction Rules. R2ML integruje [[http://www.omg.org/technology/documents/formal/ocl.htm|Object Constraint Language (OCL)]], Semantic Web Rule Language (SWRL) oraz Rule Markup Language (RuleML). Nie musimy być zaznajomieni ze wszystkimi elementami języka R2ML w celu wykorzystania jej wydajnością. Aby można było użyć R2ML’a do przedstawiania reguł potrzebna jest wiedza jak zapisywać typowe dla nich elementy. Poniżej przedstawiam kilka takich elementów zapisanych w R2ML ver.0.4: * wartość logiczna: np: B <code xml> <r2ml:GenericVariable r2ml:name="B"/> </code> * stałe argumenty: np: 300 <code xml> <r2ml:TypedLiteral r2ml:lexicalValue="300" r2ml:datatype="xs:integer"/> </code> * suma: n+1 <code xml> <r2ml:DatatypeFunctionTerm r2ml:datatypeFunction="op:numeric-add"> <r2ml:dataArguments> <r2ml:GenericVariable r2ml:name="n"/> <r2ml:TypedLiteral r2ml:lexicalValue="1" r2ml:datatype="xs:integer"/> </r2ml:dataArguments> </r2ml:DatatypeFunctionTerm> </code> * różnica: n-1 <code xml> <r2ml:DatatypeFunctionTerm r2ml:datatypeFunction="op:numeric-subtract"> <r2ml:dataArguments> <r2ml:GenericVariable r2ml:name="n"/> <r2ml:TypedLiteral r2ml:lexicalValue="1" r2ml:datatype="xs:integer"/> </r2ml:dataArguments> </r2ml:DatatypeFunctionTerm> </code> * równość: (wyr_1) = (wartosc) <code xml> <r2ml:EqualityAtomr2ml:isNegated="false"> <r2ml:ObjectVariabler2ml:name="wyr_1"/> <r2ml:ObjectVariabler2ml:name="wartosc"/> </r2ml:EqualityAtom> </code> * nierówność: n > 0 <code xml> <r2ml:DatatypePredicateAtomr2ml:datatypePredicateID="swrlb:greaterThan"> <r2ml:dataArguments> <r2ml:GenericVariable r2ml:name="n"/> <r2ml:TypedLiteral r2ml:lexicalValue="1" r2ml:datatype="xs:integer"/> </r2ml:dataArguments> </r2ml:DatatypePredicateAtom> </code> * nierówność: n <= 1 <code xml> <r2ml:DatatypePredicateAtomr2ml:datatypePredicateID="swrlb: lessThanOrEqual "> <r2ml:dataArguments> <r2ml:GenericVariable r2ml:name="n"/> <r2ml:TypedLiteral r2ml:lexicalValue="1" r2ml:datatype="xs:integer"/> </r2ml:dataArguments> </r2ml:DatatypePredicateAtom> </code> * suma logiczna : (wyr_1) and (wyr_2) <code xml> <r2ml:GenericAtom r2ml:isNegated="false" r2ml:predicateID="wyr_1"> <r2ml:arguments> </r2ml:arguments> </r2ml:GenericAtom> <r2ml:GenericAtom r2ml:isNegated="false" r2ml:predicateID="wyr_2"> <r2ml:arguments> </r2ml:arguments> </r2ml:GenericAtom> </code> * warunek if : (conclusion) if (conditions) <code xml> <r2ml:DerivationRule> <r2ml:conditions> (conditions) </r2ml:conditions> <r2ml:conclusion> (conclusion) </r2ml:conclusion> </r2ml:DerivationRule> </code> * funkcje: fun_name(B) <code xml> <r2ml:GenericFunctionTermr2ml:genericFunctionID=" fun_name "> <r2ml:arguments> <r2ml:GenericVariabler2ml:name="B"/> </r2ml:arguments> </r2ml:FunctionTerm> </code> Teraz możemy spróbować zapisać nasz przykład (Jeżeli dzień=poniedziałek wtedy temp=20st) za pomocą R2ML. Przedstawmy go w postaci: temp = 20 if day = monday wówczas zapis w R2ML wyglada następująco: <code xml> <?xml version="1.0" encoding="UTF-8" ?> <r2ml:RuleBase xmlns:r2ml="http://www.rewerse.net/I1/2006/R2ML" xmlns:r2mlv="http://www.rewerse.net/I1/2006/R2ML/R2MLV" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:userv="http://www.businessrulesforum.com/2005/userv#" xmlns:swrlb="http://www.w3.org/2003/11/swrlb" xsi:schemaLocation="http://oxygen.informatik.tu-cottbus.de/R2ML/0.5/R2ML.xsd"> <r2ml:DerivationRuleSet> <r2ml:DerivationRule r2ml:ruleID="Rule" xmlns:swrlb="http://www.w3.org/2003/11/swrlb" xmlns:srv="http://www.services.org/EU-Rent/"> <r2ml:Documentation> <r2ml:RuleText r2ml:textFormat="plain" r2ml:ruleDiagram="examples:DR_scheduledService.gif"> If day is a monday then temp is equal to 20 degrees. </r2ml:RuleText> </r2ml:Documentation> <r2ml:conditions> <r2ml:ObjectClassificationAtom r2ml:classID="monday"> <r2ml:ObjectVariable r2ml:name="day"/> </r2ml:ObjectClassificationAtom> </r2ml:conditions> <r2ml:conclusion> <r2ml:DatatypePredicateAtom r2ml:datatypePredicateID="swrlb:equal"> <r2ml:dataArguments> <r2ml:ObjectVariable r2ml:name="temp"/> <r2ml:TypedLiteral r2ml:lexicalValue="20" r2ml:datatypeID="xs:positiveInteger"/> </r2ml:dataArguments> </r2ml:DatatypePredicateAtom> </r2ml:conclusion> </r2ml:DerivationRule> </r2ml:DerivationRuleSet> </r2ml:RuleBase> </code> Inne przykłady przedstawienia reguł za pomocą R2ML można znaleźć na stronie: [[http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=node/17|Rule Examples]]. Ciekawym przykładem może być również całość [[https://ai.ia.agh.edu.pl/wiki/hekate:hekate_case_thermostat|hekate_case_thermostat]] zapisana w R2ML: [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_xtt_r2ml:thermostat|Therm in R2ML]] ====== Materiały ====== ** Strona domowa RIF** http://www.w3.org/2005/rules/wiki/RIF_Working_Group ** Więcej przykładów w RIF** http://www.w3.org/2005/rules/wg/wiki/UC3_Worked_Example ** Szczególnie przydatne do RIF** http://www.w3.org/TR/2007/WD-rif-bld-20071030/ ** Cały thermostat w RIF** https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_xtt_rif:thermostat ** RIF Core Design** http://www.w3.org/TR/2007/WD-rif-core-20070330/ ** Strona domowa R2ML** http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=node/6 ** Szczególnie przydatne do R2ML** http://www.w3.org/TR/xpath20/ ** Więcej przykładów w R2ML** http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=node/49 ** Całość thermostat w R2ML** https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_xtt_r2ml:thermostat ** OWL RULES: A Proposal and Prototype Implementation** http://www.cs.man.ac.uk/~horrocks/Publications/download/2005/HPBT05.pdf ** SWRL: A Semantic Web Rule Language Combining OWL and RuleML** http://www.daml.org/2003/11/swrl/ ** Strona domowa RuleML** (http://www.ruleml.org/0.91/) ** Szczególnie przydatne do RuleML** http://www.ruleml.org/0.91/glossary/ ** Więcej przykładów w RuleML** http://www.ruleml.org/0.91/exa/ **Uniform Resource Identifier** http://pl.wikipedia.org/wiki/Uniform_Resource_Identifier/ **Representing Facts and Rules in RDF** http://www.ninebynine.org/RDFNotes/RDFFactsAndRules.html **Struktura Opisu Zasobów (RDF)** http://www.geocities.com/pan_andrew/ResourceDescriptionFramework.htm#ref-xhtml **Strona domowa RDF** http://www.w3.org/RDF/ **Polskie tłumaczenie specyfikacji RDF** http://www.geocities.com/pan_andrew/ResourceDescriptionFramework.htm **Strona domowa ERDF** http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=ERDF ** Szczególnie przydatne do ERDF** http://oxygen.informatik.tu-cottbus.de/IT/Research/ERDF-JAIR-2008.pdf ** Translator R2ML do SWRL(składnia alternatywna)** http://oxygen.informatik.tu-cottbus.de/translator/R2MLtoSWRL/index.jsp ** OWL Overview w języku polskim** http://www.rax.pl/tlumaczenia/OWL-Web-Ontology-Language-Overview/index.htm ** OWL Overview w języku angielskim** http://www.w3.org/TR/2004/REC-owl-features-20040210/
pl/miw/miw08_hml_rules.1211387260.txt.gz
· ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry