|
|
pl:miw:2009:miw09_drools_x [2009/06/19 10:17] jsi08 |
pl:miw:2009:miw09_drools_x [2019/06/27 15:50] |
====== Opis ====== | |
Grzegorz Stopa, <gregor@student.agh.edu.pl>\\ | |
Opis projektu [[pl:miw:2009:miw2009_tematy#drools_x|Drools_X]] ze strony [[pl:miw:2009:miw2009_tematy]]:\\ | |
| |
:!: | |
How we can use | |
[[http://www.jboss.org/drools/|Drools]] | |
to model rules for the SemWeb in | |
[[http://www.w3.org/2005/rules/wiki/RIF_Working_Group|RIF]], | |
[[http://www.w3.org/Submission/SWRL/|SWRL]] | |
(import/export). | |
| |
How we can use | |
[[http://www.jboss.org/drools/|Drools]] | |
to import/export/model rules for/from | |
[[http://clipsrules.sourceforge.net/|CLIPS]] | |
and | |
[[http://www.jessrules.com/|Jess]]. | |
| |
===== Pokrewne projekty ===== | |
[[pl:miw:2009:miw09_xtt_drools|XTT_Drools]] - Szymon Frenkel\\ | |
[[pl:miw:2009:miw2009_tematy#drools_tools|Drools_Tools]] - niestety nikt się nim nie zajmuje | |
| |
====== Prezentacja ====== | |
| |
====== Sprawozdanie ====== | |
Celem projektu było przeszukanie siecii za istniejącymi aplikacjami lub sposobami konwersji pomiędzy: Drools, CLIPS i RIF.\\ | |
[[http://www.jboss.org/drools/|Drools]] to silnik reguł [[http://www.jboss.org/|JBoss]]'a, stworzony przedewszystkim do modelowania systemów biznesowych, lecz również może być wykorzystywany w innych celach.\\ | |
[[http://clipsrules.sourceforge.net/|CLIPS]] to narzędzie do modelowania systemów eksperckich.\\ | |
[[http://www.w3.org/2005/rules/wiki/RIF_Working_Group|RIF]] to specyfikacja zapisu reguł z użyciem XML'a. | |
| |
===== Import/eksport, konwersja ===== | |
Tutaj będę opisywał znalezione możliwości konwersji z jednej reprezentacji na inną. | |
==== CLIPS --> Drools ==== | |
Znalazłem na [[http://blog.athico.com/|blogu Drools'a]] wpis sprzed roku o prowadzonych pracach nad Drools'ową powłoką interpretującą reguły zapisane w Clips'ie. Można znaleźć wpis [[http://blog.athico.com/2008/02/drools-clips.html|tutaj]]. Odnalazłem nowsze repozytorium źródeł dotyczących tego projektu praktycznie w tym samym katalogu, który jest podany we wpisie. Oto odnalezione przeze mnie [[http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/|źródło]]. [[https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/javadocs/unstable/drools-clips/org/drools/clips/package-summary.html|Tutaj]] natomiast można znaleźć dokumentację do CLIPS'owej powłoki Drools'a.\\ | |
Nie jest to konwerter lecz tylko Drools'owe środowisko do korzystania z CLIPS'a. Niestety nie posiada pełni możliwości CLIPS'a. | |
==== Drools --> CLIPS ==== | |
Znalezienie jakiejkolwiek wzmianki o konwersji Drools'owych reguł do CLIPS'a zakończyło się niepowodzeniem. Nigdzie temat konwersji z Drools'a do CLIPS'a nie został poruszony. | |
==== Drools --> RIF, RIF --> Drools ==== | |
Prace nad specyfikacją [[http://www.w3.org/|World Wide Web Consortium]] do zapisu reguł: [[http://www.w3.org/2005/rules/wiki/RIF_Working_Group|RIF - Rule Interchange Format]] rozpoczęły się pod koniec 2005 roku. W dalszym ciągu jest to nie zamknięty projekt, a kolejne wydania specyfikacji wprowadzają wiele zmian do wcześniejszych i dlatego na razie jest małopopularny. Brak na siecii jakichkolwiek wzmianek dotyczących możliwej konwersji pomiędzy Drools'em i RIF'em. | |
==== XML Schema --> Drools, Drools --> XML Schema ==== | |
Po za programem projektu jednak natrafiłem na możliwość zapisu reguł Drools'owych za pomocą [[http://www.w3.org/XML/Schema|XML Schema]]. | |
W [[http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/index.html#d0e4611|dokumentacji w rozdziale '6.9. XML Rule Language']] została opisana możliwość reprezentacji reguł w formacie XML z użyciem standardu [[http://www.w3.org/XML/Schema|XML Schema]]. Drools sam posiada 2 klasy do obsługi swojego formatu DRL oraz 2 klasy do obsługi formatu XML: | |
* XmlDumper - tworzy pliki XML reguł | |
* XmlPackageReader - czyta pliki XML reguł | |
* DrlDumper - tworzy pliki DRL reguł | |
* DrlParser - czyta pliki DRL reguł | |
Przykład użycia (konwersja z DRL na XMLSchema): | |
<code java> | |
Reader aDrlSource = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/Sample.drl" ) ); | |
DrlParser aDrlParser = new DrlParser(); | |
PackageDescr aXmlDescr = aDrlParser.parse(aDrlSource); | |
XmlDumper aXmlDumper = new XmlDumper(); | |
String aXmlString = aXmlDumper.dump(aXmlDescr); | |
Writer aXmlOutput = new BufferedWriter(new FileWriter("Sample.xml")); | |
try { | |
aXmlOutput.write(aXmlString); | |
} | |
finally | |
{ | |
aXmlOutput.close(); | |
} | |
aDrlSource.close(); | |
</code> | |
Przykład użycia (konwersja z XMLSchema na DRL): | |
<code java> | |
Reader aXmlSource = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/Sample.xml" ) ); | |
XmlPackageReader aXmlParser = new XmlPackageReader(); | |
PackageDescr aDrlDescr = aXmlParser.read(aXmlSource); | |
DrlDumper aDrlDumper = new DrlDumper(); | |
String aDrlString = aDrlDumper.dump(aDrlDescr); | |
Writer aDrlOutput = new BufferedWriter(new FileWriter("Sample.drl")); | |
try { | |
aDrlOutput.write(aDrlString); | |
} | |
finally | |
{ | |
aDrlOutput.close(); | |
} | |
aXmlSource.close(); | |
</code> | |
| |
====== Spotkania ====== | |
[[pl:miw:2009:miw09_drools_x:spotkania|Notatki ze spotkań projektowych]] | |
| |
====== Projekt ====== | |
[[pl:miw:2009:miw09_drools_instalacja|Instalacja Drools'a]]\\ | |
[[pl:miw:2009:miw09_drools_x:projekt|Poszerzenie projektu o gramatyki Drools'a]] | |
| |
====== Materiały ====== | |
* [[http://www.jboss.org/drools/|Drools]] <llysik@gmail.com> | |
* [[http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/index.html|Drools 4.0.7 dokumentacja]] | |
* [[http://en.wikipedia.org/wiki/Rete_algorithm|Algorytm Rete]] | |
* [[http://en.wikipedia.org/wiki/Forward_chaining|Forward chaining]] | |
* [[http://www.comp.rgu.ac.uk/staff/smc/teaching/clips/tutorial/node2.html|Wprowadzenie do CLIPS]] | |
* [[http://iweb.tntech.edu/bhuguenard/ds6530/ClipsTutorial/tableOfContents.htm|Tutoriale do CLIPS]] | |
* [[http://www.csie.ntu.edu.tw/~sylee/courses/clips/design.htm|Przykłady do CLIPS]] | |
* [[http://sourceforge.net/project/showfiles.php?group_id=215471&package_id=260062|download CLIPS (również przykłady)]] | |
* [[http://www.jboss.org/drools/downloads.html|Drools - download]] | |
* [[http://www.jboss.org/tools/download.html|JBoss-tools - download (plugin do eclipse)]] | |
* [[http://www.eclipse.org/gef/downloads/|GEF - download (plugin do eclipse - potrzebny do JBoss-tools)]] | |
* [[http://blog.athico.com/|Drools - blog]] | |
* [[http://blog.athico.com/2008/02/drools-clips.html|Drools - blog - import kodu z Clips'a]] | |
* [[http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/|Clips -> Drools - Drools shell supporting Clips]] | |
* [[http://download.jboss.org/drools/release/4.0.7.19894.GA/drools-4.0.7-eclipse3.2.zip|Drools 4.0.7 Eclipse 3.2 Workbench - plugin drools'a do eclipse'a]] | |
* [[pl:miw:miw08_xtt_rif]] | |
* [[https://developer.opencloud.com/devportal/display/FSMDv083/Appendix+B.+VFSM+DSL+Grammar|Gramatyka DSL w formacie EBNF ANTLR]] | |
* [[http://www.w3.org/2005/rules/wiki/RIF_Working_Group|RIF Working Group]] | |
* [[http://www.w3.org/2005/rules/wg/draft/ED-rif-bld-20081218/#XML_Serialization_Syntax_for_RIF-BLD|RIF syntax example]] | |
| |