You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(4) |
Oct
(2) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
(4) |
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
2011 |
Jan
(1) |
Feb
(1) |
Mar
(3) |
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(1) |
Nov
(1) |
Dec
(1) |
2012 |
Jan
(3) |
Feb
(1) |
Mar
(3) |
Apr
(1) |
May
(1) |
Jun
(4) |
Jul
(2) |
Aug
|
Sep
(2) |
Oct
|
Nov
(4) |
Dec
(1) |
2013 |
Jan
(2) |
Feb
(1) |
Mar
|
Apr
(2) |
May
(3) |
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Jean-Marc V. <jea...@gm...> - 2012-06-09 08:10:31
|
2012/6/9 Jean-Marc Vanel <jea...@gm...>: > Hi all > > There are recent changes that can affect those of you who maintain a > source build of EulerGUI. > > HISTORY > First I uploaded Pellet jars to the Maven EulerGUI repository (as the > previous repository disappeared). > Some days later, I upgraded Jena and ARQ to latest version in Apache > incubating project. > Some more days later, I upgraded in the POM file for Pellet the Maven > EulerGUI repository, the dependency towards Jena. > > SYMPTOM > As a result, running EulerGUI in eclipse can fail with class not found. > Runing mvn dependency:tree shows that Jena 2.6.3 is still there. > > REMEDY > # Delete this directory: > rm -r ~/.m2/repository/com/owldl/pellet/2.2.2 > # Re-build EulerGUI and the eclipse configuration: > mvn -Dmaven.test.skip=true install > mvn eclipse:eclipse > > -- > Jean-Marc Vanel > Déductions SARL - Consulting, services, training, > Rule-based programming, Semantic Web > http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + > rules, XML, UML, eCore, Java bytecode > +33 (0)6 89 16 29 52 > chat : irc://irc.freenode.net#eulergui -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2012-06-09 07:54:39
|
Hi all There are recent changes that can affect those of you who maintain a source build of EulerGUI. HISTORY First I uploaded Pellet jars to the Maven EulerGUI repository (as the previous repository disappeared). Some days later, I upgraded Jena and ARQ to latest version in Apache incubating project. Some more days later, I upgraded in the POM file for Pellet the Maven EulerGUI repository, the dependency towards Jena. SYMPTOM As a result, running EulerGUI in eclipse can fail with class not found. Runing mvn dependency:tree shows that Jena 2.6.3 is still there. REMEDY # Delete this directory: rm -r ~/.m2/repository/com/owldl/pellet/2.2.2 # Re-build EulerGUI and the eclipse configuration: mvn -Dmaven.test.skip=true mvn eclipse:eclipse -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2012-05-29 20:40:54
|
The video is here ; it shows most of the features, except SPARQL and GraphViz graphs. http://www.youtube.com/watch?v=x6ZgoiH1K9Y&feature=youtu.be Download software: http://sourceforge.net/projects/eulergui/files/eulergui/1.11/ Minimal EulerGUI 1.11 This is the first release of the Minimal EulerGUI. It has exactly the same licence as Maximal (full) EulerGUI, that is LGPL. It is just a simpler version for Semantic Web users, who are not interested in importing UML, XMI, XML, and Java framework for application building. Only one inference engine is available: Euler EYE engine ( http://eulersharp.sourceforge.net/). Main features: - N3 editor: syntax coloring, tooltip with explanations about the resource under the mouse; HTTP connection to prefix.cc site for filling missing N3 prefixes; when an N3 file is modified on disk or Internet, it is re-parsed, and syntax errors are highlighted - button to import from: N3/Turtle, RDF, OWL/XML, SPARQL, from local files or URL - show tree view of OWL inferred class hierarchy using Pellet OWL reasoner - action to add all refered ontologies (through N3 prefixes) to current project - automatically loads the rule base for "Case Based Fuzzy Cognitive Maps" when the prefix fl: is referred ( for http://eulersharp.sourceforge.net/2003/03swap/fl-rules# ) Sorry for the large size ( 37Mb). User Manual for the Maximal (full) EulerGUI: http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html Enjoy -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2012-04-22 17:28:13
|
Hi I am pleased to announce the release 1.10 of EulerGUI, a development tool and a framework for the Semantic Web and rules. The improvements mainly concern the inference engine with RETE Drools N3, and SPARQL queries. With the Drools inference engine, adapted to the N3 rule language for the Semantic Web, you can build applications where all the business logic is interpreted directly by the engine ( see EulerGUI application building Framework<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#L7038> ). More builtin functions: mathematical, string , were added . In addition, we rely on Drools for automatically retracting GUI components when a business data is deleted ( see Leverage on Drools to automatically retract GUI components<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/n3-rules-triggering-java.html#L33211> ). We worked on the capability of extension point in the configuration files in N3, like Eclipse or Spring, but more powerful (see configure EulerGUI in N3<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/configure-eulergui-in-n3.html> ). SPARQL queries belong to the features "graphical tool for exploring the Semantic Web", usable by the users of these technologies, and also for teaching Semantic Web . There are several fixes for SPARQL: - Sometimes the query was executed twice - Progress indicator when the query runs - Results buttons disabled until the request is completed - can be changed after the fact the query type (SELECT, CONSTRUCT, ...), We added buttons to display the graph N3/RDF as an array. Download: https://sourceforge.net/projects/eulergui/ Documentation : http://eulergui.sourceforge.net/documentation.html Change Log : http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/CHANGELOG -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2012-03-29 10:55:02
|
Hi With Revision 2980<http://eulergui.svn.sourceforge.net/viewvc/eulergui?view=revision&revision=2980>, the extension point capabilities of EulerGUI are used for real. Now the result display features are set by N3 configuration rules in src/main/resources/eulergui/gui/controller/application-rules.n3<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/src/main/resources/eulergui/gui/controller/application-rules.n3> These result display features are displayed by 4 buttons on upper right corner of main window, and are implemented by there classes: ResultEditorAction, ResultEditorN3Action, ResultGraphvizAction, ResultTableAction There is just one rule to configure these features : { ?GUI a java:n3_project-ProjectGUI ; javap:resultManagement ?R . } => { ?ResultEditorAction a java:eulergui-gui-actions-ResultEditorAction ; javam:setProjectGUI( ?GUI ). ?ResultEditorN3Action a java:eulergui-gui-actions-ResultEditorN3Action ; javam:setProjectGUI( ?GUI ). ?ResultGraphvizAction a java:eulergui-gui-actions-ResultGraphvizAction ; javam:setProjectGUI( ?GUI ). ?ResultTableAction a java:eulergui-gui-actions-ResultTableAction ; javam:setProjectGUI( ?GUI ). ?R javam:addAction ( ?ResultEditorAction ) ; javam:addAction ( ?ResultEditorN3Action ) ; javam:addAction ( ?ResultGraphvizAction ) ; javam:addAction ( ?ResultTableAction ) }. This rule says : "for each main window ProjectGUI, with a field resultManagement ?R, create the 4 objects ?ResultEditorAction , etc, and add them to ?R through method addAction". The method addAction on class ResultManagement is just one of 10 extension points that are planned : http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/architecture.html#L762 In the Roadmap for EulerGUI 2.0 : http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#L9989 this task is described this way : Features and code changes CommentsEstimate (skilled developper) Sub-feature *extension points* for adding features in N3 configuration filewill also enable many things: user defined extensions point à la eclipse; several user modes ; this will also be similar to Spring configuration, but with possibly platform and context -aware rules here; estimation just for creating interfaces and containers in Java2new N3 sources types: RDFa, ATTEMPTO sentences, ng4j / semweb client<http://www4.wiwiss.fu-berlin.de/bizer/ng4j/semwebclient/> Note that the main architectural advantage of extensions point à la eclipse<http://wiki.eclipse.org/FAQ_What_are_extensions_and_extension_points%3F>is to be able to add a feature without modifying a line in the Java code. But here, contrary to Spring or eclipse stuff, we have the whole power of rules here: it is possible to take in account machine and user context and history. This mechanism is usable also in applications built with the EulerGUI framework<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#L7038> . CAVEAT: - no support for checking Java methods and classes is provided in EulerGUI editor, and error here raise Drools compliation errors that are not user-friendly - the above rule N3 file is accessible to EulerGUI through the classpath, so to modify the internal rules, one must rebuild EulerGUI (or work in eclipse). -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2012-03-14 10:44:12
|
EulerGUI : enhance the table view Now we have a new table view for each N3 source. Currently the class TableModelFromN3 takes as argument a list of triples from which row and columns are computed. Currently it has several flaws: 1. it only offers a snapshot of the given triples, it does not allow dynamics updates or removals, following model-view design pattern 2. the order of rows, and columns, is determined arbitrarily by the underlying Drools working memory; it is not possible for the user to change the order of rows (preferably by drag and drop), and the changes are not reflected in the KB 3. URI resources should have a relevant look-and-feel: either shown as hyperlinks, or show tooltip with properties for this URI, or give choice to download the URI, and highlight other occurences in current table 4. no possibility of showing multi-valued properties for a given resource Some enhancements are already possible by the framework: - add a column of derived values by adding a rule like : { ?X ... } => { ?X :newProperty ?COMPUTED_VALUE }. - change order of rows by clicking on columns (but not kept in the KB) - change order of columns (but not kept in the KB) - edit a cell (but changes not kept in the KB) For point 1. , the design explained in previous post in the list must be used. More precisely, there will be a new class N3TableModel extending DefaultTableModel, and with methods : /** populate the table with rows made of all triples ?uri ?P ?V */ void setRows( List<String> uri ); List<String> uri getRows(); List<String> uri getColumns(); /** add at the end of table a row made of all triples ?uri ?P ?V */ void add( String uri ); void remove( String uri ); /** add in table after given Uri a row made of all triples ?uri ?P ?V */ void add( String uri, String afterUri ); void add( String uri ); /** add a cell in the table; several cases: - if cell exists but is empty, it is filled - if cell exists but is not empty, a new colunm will be added - if cell does not exist, a new colunm will be added */ void addElement( ITriple t ); void removeElement( ITriple t ); For implementation, we will extract methods from TableModelFromN3. For point 2., the above API offers methods. For implemeting drag and drop for columns, there is no obvious way, cf this Google search: *move rows by clicking jtable* One thing is sure, by default sorters in JTable manipulate the view, and the table model remains unchanged by default, see : http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sortin -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2012-03-13 18:26:18
|
Hi all I experimented a way to leverage on Drools to automatically retract GUI components and content when some domain fact triple is retracted from the Knowledge Base. We leverage on Drools thruth maintenance (alias logicial insert) . How to test ( use snapshot<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#Install1>) : 1. Open test/n3JavaMapping-GUI.n3p<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/test/n3JavaMapping-GUI.n3p> 2. run Drools engine ==> a new Window with "data" appears 3. Open N3 shell 4. paste this in N3 shell: @prefix kb: <http://deductions.sf.net/ontology/knowledge_base.owl#> . _:d kb:retract ( <http://test#x> <http://test#p> "data" ) . ==> in new Window , "data" disappears How it works: There is a Swing DefaultListModel associated to the URI :listModel . Then the rule says: whenever there is a triple :x :p ?V , add ?V to the ListModel . :listModel a java:javax-swing-DefaultListModel. { :x :p ?V . } => { :listModel javam:addElement ( ?V ). } . The DefaultListModel is added in a JList object itself added to a JFrame ( standard Swing technology, just wrapped in N3 ) : :JFRAME a java:javax-swing-JFrame . :JLIST a java:javax-swing-JList . :JLIST javam:setModel ( :listModel ) . :JFRAME javam:add :JLIST . :JFRAME javam:setSize ( 200 200 ) . :JFRAME java:visible true . So the scene is set at step 2. As a by-product, this has added to the KB an object DeferredMethodCall that represents the addElement() method call in the consequent of the rule. This is N3 + Drools engine machinery ( BTW it allows to make calls deferred until both subject and arguments are bound ) . Now, when the triple :x :p "data" is retracted, Drools automatically retracts the DeferredMethodCall object representing the addElement() method call: - because the antecedent of the rule matches the retraction, - and because of thruth maintenance ( logicial insert ). We added a class JavaObjectsRetractionListener implementing WorkingMemoryEventListener which is called when the DeferredMethodCall object is retracted. The listener calls removeElement when the method was addElement (also another common pattern : remove and add methods names). So the element "data" is removed from DefaultListModel, which removes the list item in the window by standard Swing Model - View design pattern. So, this amounts to "monitor" in real time in the GUI additions and removals of N3 pattern: :x :p ?V . Of course the monitored pattern can be as complex as needed, or :x :p ?V. can be a consequence by other rules. -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2012-02-11 15:25:38
|
Hi all I just added a page about how to make a rule based web application with Wicket , EulerGUI API , and Déductions Swing rule base . http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/webapp.html I wrote this because some of you may like to do this. Meanwhile, I prefer to spend time to enhance and refactor this Déductions Swing rule base . Enjoy ! -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2012-01-10 21:53:20
|
Hi Another fix before release: when clicking on N3 source button, the editor was not always in foreground As usual, a new snapshot is here : http://eulergui.sourceforge.net/tmp/ 2012/1/9 Jean-Marc Vanel <jea...@gm...> > Here the updated TODO list ( + means DONE ). > > EulerGUI : TODO before release 1.9 > > - + upon opening project , button to open the editor is grayed in case > of syntax error > - + Drools/N3 engine: Infinite loop with owl-rules.n3 : isolated RDF > lists are not implemented > - Drools/N3 engine: remove insertlogical for project main query > - a local absolute non existing path such as > > file:/C:/Users/ltemal/Dropbox/Taxo_share_Temal/Ontologies/TaxoPlayerOntologies/peuplingTest.n3 > > makes lots of irrelevant messages in standard output (on Linux ) , > > while on Windows there is another problem > - with a large number of files in the project, all is not entirely > visible : there should be a scroll box > - + new N3 search : editor button does not appear > - new SPARQL : editor button does not appear > > not reproduced on Linux !!!!!! > - Fix these messages: > > java.lang.InstantiationException: eulergui.n3model.LinesAndCols > Continuing ... > java.lang.RuntimeException: failed to evaluate: <unbound>=Class.new(); > > This is probably due to this method in N3Source: > > public URL getLocation() > > - when running several times the Drools engine, the lower result pane > is not cleared, and shows precedings runs > > > 2012/1/5 Jean-Marc Vanel <jea...@gm...>: > > > Hello > > > > Here is updated list of stuff to do before release 1.9. > > Just the minimal stuff, no new feature. Except owl-rules.n3 that is > really > > necessary for real projects . > > > > EulerGUI : TODO before release 1.9 > > > > upon opening project , button to open the editor is grayed in case of > syntax > > error > > Drools/N3 engine: Infinite loop with owl-rules.n3 : isolated RDF lists > are > > not implemented > > Drools/N3 engine: remove insertlogical for project main query > > a local absolute non existing path such as > > > > > file:/C:/Users/ltemal/Dropbox/Taxo_share_Temal/Ontologies/TaxoPlayerOntologies/peuplingTest.n3 > > > > makes lots of irrelevant messages in standard output > > > > with a large number of files in the project, all is not entirely visible > : > > there should be a scroll box > > new N3 search : button does not appear > > new SPARQL : button does not appear > > > > > > Other issues : > > > > the progress frame should show what's going on : inference, or loading > an N3 > > Source > > problems with foaf_import2.n3p : generated form has no datatype > properties; > > message "not all is saved" > > on Mac, when yap is not available, adding an RDF file is impossible > > problems when loading MPEG7.owl > > test builtin log:dtlit ; probably field Triple.object is not used anymore > > add datatype for numbers, booleans > > why does this fail ? Calling a Java method though N3 consequent when > > expected Java argument is a String , but provided argument is a resource > is > > probably not implemented. > > > > { ?L :alert "true" > > # ; log:uri ?LL . > > } => { :application :displayAlert ?L . }. > > > > { :application :displayAlert ?LL . > > } => { > > ?F a java:eulergui-gui-TemporaryFrame > > ; javap:localizedMessage ?LL . > > }. > > > > buttons do NOT appear right away when you add a URL N3 source > > bug unexplained : when dragging'drop > > http://morpheus.cs.umbc.edu/aks1/ontosem.owl from > > > http://swoogle.umbc.edu/index.php?option=com_frontpage&service=search&queryType=search_swd_ontology&searchString=botany&searchStart=1 > > > > I get the warning about memory insufficient , but -Xmx is 2g , and using > the > > same OWL donloaded manually , it works ! > > > > add Unix shell commands in N3 shell > > > > > > -- > > Jean-Marc Vanel > > Déductions SARL - Consulting, services, training, > > Rule-based programming, Semantic Web > > http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + > > rules, XML, UML, eCore, Java bytecode > > +33 (0)6 89 16 29 52 > > chat : irc://irc.freenode.net#eulergui > > > > -- > Jean-Marc Vanel > Déductions SARL - Consulting, services, training, > Rule-based programming, Semantic Web > http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + > rules, XML, UML, eCore, Java bytecode > +33 (0)6 89 16 29 52 > chat : irc://irc.freenode.net#eulergui > > -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2012-01-08 23:30:05
|
Here the updated TODO list ( + means DONE ). EulerGUI : TODO before release 1.9 - + upon opening project , button to open the editor is grayed in case of syntax error - + Drools/N3 engine: Infinite loop with owl-rules.n3 : isolated RDF lists are not implemented - Drools/N3 engine: remove insertlogical for project main query - a local absolute non existing path such as file:/C:/Users/ltemal/Dropbox/Taxo_share_Temal/Ontologies/TaxoPlayerOntologies/peuplingTest.n3 makes lots of irrelevant messages in standard output (on Linux ) , while on Windows there is another problem - with a large number of files in the project, all is not entirely visible : there should be a scroll box - + new N3 search : editor button does not appear - new SPARQL : editor button does not appear not reproduced on Linux !!!!!! - Fix these messages: java.lang.InstantiationException: eulergui.n3model.LinesAndCols Continuing ... java.lang.RuntimeException: failed to evaluate: <unbound>=Class.new(); This is probably due to this method in N3Source: public URL getLocation() - when running several times the Drools engine, the lower result pane is not cleared, and shows precedings runs 2012/1/5 Jean-Marc Vanel <jea...@gm...>: > Hello > > Here is updated list of stuff to do before release 1.9. > Just the minimal stuff, no new feature. Except owl-rules.n3 that is really > necessary for real projects . > > EulerGUI : TODO before release 1.9 > > upon opening project , button to open the editor is grayed in case of syntax > error > Drools/N3 engine: Infinite loop with owl-rules.n3 : isolated RDF lists are > not implemented > Drools/N3 engine: remove insertlogical for project main query > a local absolute non existing path such as > > file:/C:/Users/ltemal/Dropbox/Taxo_share_Temal/Ontologies/TaxoPlayerOntologies/peuplingTest.n3 > > makes lots of irrelevant messages in standard output > > with a large number of files in the project, all is not entirely visible : > there should be a scroll box > new N3 search : button does not appear > new SPARQL : button does not appear > > > Other issues : > > the progress frame should show what's going on : inference, or loading an N3 > Source > problems with foaf_import2.n3p : generated form has no datatype properties; > message "not all is saved" > on Mac, when yap is not available, adding an RDF file is impossible > problems when loading MPEG7.owl > test builtin log:dtlit ; probably field Triple.object is not used anymore > add datatype for numbers, booleans > why does this fail ? Calling a Java method though N3 consequent when > expected Java argument is a String , but provided argument is a resource is > probably not implemented. > > { ?L :alert "true" > # ; log:uri ?LL . > } => { :application :displayAlert ?L . }. > > { :application :displayAlert ?LL . > } => { > ?F a java:eulergui-gui-TemporaryFrame > ; javap:localizedMessage ?LL . > }. > > buttons do NOT appear right away when you add a URL N3 source > bug unexplained : when dragging'drop > http://morpheus.cs.umbc.edu/aks1/ontosem.owl from > http://swoogle.umbc.edu/index.php?option=com_frontpage&service=search&queryType=search_swd_ontology&searchString=botany&searchStart=1 > > I get the warning about memory insufficient , but -Xmx is 2g , and using the > same OWL donloaded manually , it works ! > > add Unix shell commands in N3 shell > > > -- > Jean-Marc Vanel > Déductions SARL - Consulting, services, training, > Rule-based programming, Semantic Web > http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + > rules, XML, UML, eCore, Java bytecode > +33 (0)6 89 16 29 52 > chat : irc://irc.freenode.net#eulergui -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2012-01-05 17:14:27
|
Hello Here is updated list of stuff to do before release 1.9. Just the minimal stuff, no new feature. Except owl-rules.n3 that is really necessary for real projects . EulerGUI : TODO before release 1.9 - upon opening project , button to open the editor is grayed in case of syntax error - Drools/N3 engine: Infinite loop with owl-rules.n3 : isolated RDF lists are not implemented - Drools/N3 engine: remove insertlogical for project main query - a local absolute non existing path such as file:/C:/Users/ltemal/Dropbox/Taxo_share_Temal/Ontologies/TaxoPlayerOntologies/peuplingTest.n3 makes lots of irrelevant messages in standard output - with a large number of files in the project, all is not entirely visible : there should be a scroll box - new N3 search : button does not appear - new SPARQL : button does not appear Other issues : - the progress frame should show what's going on : inference, or loading an N3 Source - problems with foaf_import2.n3p : generated form has no datatype properties; message "not all is saved" - on Mac, when yap is not available, adding an RDF file is impossible - problems when loading MPEG7.owl - test builtin log:dtlit ; probably field Triple.object is not used anymore - add datatype for numbers, booleans - why does this fail ? Calling a Java method though N3 consequent when expected Java argument is a String , but provided argument is a resource is probably not implemented. { ?L :alert "true" # ; log:uri ?LL . } => { :application :displayAlert ?L . }. { :application :displayAlert ?LL . } => { ?F a java:eulergui-gui-TemporaryFrame ; javap:localizedMessage ?LL . }. - buttons do NOT appear right away when you add a URL N3 source - bug unexplained : when dragging'drop http://morpheus.cs.umbc.edu/aks1/ontosem.owl from http://swoogle.umbc.edu/index.php?option=com_frontpage&service=search&queryType=search_swd_ontology&searchString=botany&searchStart=1 I get the warning about memory insufficient , but -Xmx is 2g , and using the same OWL donloaded manually , it works ! - add Unix shell commands in N3 shell -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2011-12-29 16:47:51
|
Hi Pasted from my blog ; comments welcome : Rules are not only for business rules In fact business rules are raw material for the building of business applications just like ontologies and structural models. And, because we build business applications using rules (applicative and infrastructure rules), this means having rules manipulating rules. We already have such rules manipulating rules to : - transform SWRL rules into N3 rules - check N3 rules for undeclared properties and classes - declare undeclared properties and classes in N3 rules We need to have more rules manipulating rules to : 1. transform N3 rules into Drools rules (currently implemented by ad-hoc Java code) 2. generate SPARQL queries from N3 rule base and a *simplified N3 query* (an N3 expresion with triples including variables but no braces) Point 1 will stay like this in the near future, as current implementation is well tested and extensible. The point 2 is necessary for automating access to Linked Open Data (see Roadmap for EulerGUI 2.1<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#L9989> , and Sketch of a roadmap / The Déductions stuff<file:///Volumes/NO%20NAME/jmvanel.free.fr/computer-notes_2008.html#L141> in this blog). We need to design and implement a backward engine for querying SPARQL databases; it will generate a big SPARQL query by recursively accumulating criterium terms, substituting bound variables, renaming variables if necessary. I used to think that for point 2, the capabilities of Euler or CHR<http://en.wikipedia.org/wiki/Constraint_Handling_Rules> to handle unbound variables can be leveraged. But I changed my mind. Since I already have experience with dealing with SWRL, it ' s probably quite easy to first convert the N3 to SWRL. Good thing with SWRL is, it's plain RDF, and as a consequence there's no possible confusion between input rules and transformation rules (this is actually a problem when processing N3 with N3). It's also easier to match rule parts when the rule is expressed as pure RDF graph (SWRL or other). So the roadmap for this SPARQL generation feature could be : 1. transform N3 rules into SWRL rules 2. transform one SWRL rule into SPARQL (needs an RDF vocabulary for SPARQL queries) 3. add recursivity by finding SWRL rules matching a simplified N3 query 4. add recursivity by replacing matching triples in antecedent with their definition from a rule As an exemple, think of a family relationship rule base (see rules examples - Family relationships<http://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui/html/rules-examples.html#L492> ). Starting from a *simplified N3 query* : :John :hasUncle ?U By 3, this rule is picked: { ?X hasParent ?P . ?P hasBrother ?B . } => { ?X hasUncle ?Y }. By 4, the rule for hasBrother is picked, and the antecedent is substituted in preceding rule : { ?X hasParent ?P . ?B a Male. ?P hasSibling ?B . } => { ?X hasUncle ?Y }. For property hasParent, a background declaration states that the corresponding triples are hosted in some SPARQL endpoint: hasParent eg:inSPARQL_endpoint <http://mydatasource.org/> . So, no need to recurse on property hasParent. Similarly, for class Male, , a background declaration states that the corresponding triples are hosted in some SPARQL endpoint: Male eg:inSPARQL_endpoint <http://mydatasource.org/> . Process goes on with expanding hasSibling . -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2011-11-21 10:26:30
|
Hi EulerGUI 1.9 is almost ready, I just a have to fix an issue on Windows with file path. The CHANGELOG is ready: https://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui/CHANGELOG I also added a (tentative) Roadmap for EulerGUI : http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#L9989 On nov. 10th, I talked at Laboratoire d'Informatique Medicale in Rennes (France). They are expert users of Protégé. We talked about how N3(+OWL) and EulerGUI compares to SWRL+OWL+Protégé. The main thing is that N3 is able to query the OWL ontology itself, while SWRL cannot . Someone in the team already used Drools, and I showed the automatic translation of OWL axioms into N3 rules. Also for partial matching of individuals to OWL classes, I proposed to compute a coefficient between 0 and 1 . Cheers -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2011-10-23 16:45:50
|
Here it is : http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/configure-eulergui-in-n3.html Configuration files in N3 offer features like Eclipse extensions points and Spring and Guice dependency injection. ... After EulerGUI 1.9 ( tomorrow ) , I'll use this technique to modularize existing N3 Sources types, and add RDFa and ng4j semwebclient : http://www4.wiwiss.fu-berlin.de/bizer/ng4j/semwebclient/ -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2011-09-28 10:51:25
|
BTW I uploaded a snapshot ; you can also load http://graph.facebook.com/jmvanel into EulerGUI :) . I'm having fun with N3 rules triggering Java actions; run project examples/BloodPressure.n3p<https://eulergui.svn.sourceforge.net/svnroot/eulergui/trunk/eulergui/examples/BloodPressure.n3p>. This works nicely : { ?L :alert "true" ; log:uri ?LL . } => { ?F a java:javax-swing-JFrame ; javap:title ?LL ; javam:setSize ( 200 200 ) ; javap:visible true . }. However from a software engineering point of view, this is mixing too much N3 and Java. On the right handside, one has to know too much of Java. And EulerGUI does not have the facilities of eclipse for Java code completion. For EulerGUI framework, the recommended practice is to encapsulate the Java action in a class . Then this class itself will be encapulated in a pure N3 action: { ?L :alert "true" ; log:uri ?LL . } => { :application :displayAlert ?LL . }. { :application :displayAlert ?LL . } => { ?F a java:eulergui-gui-TemporaryFrame ; javap:localizedMessage ?LL . }. In this article, I showed how one can add features to the current project, which become thus a kind of application. In a next article, I'll show how one can add features to EulerGUI itself, expressed by rules, Java classes, or a mixture of both. The snapshots are here : http://eulergui.sourceforge.net/tmp/ -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 chat : irc://irc.freenode.net#eulergui |
From: Jean-Marc V. <jea...@gm...> - 2011-05-30 09:21:50
|
Hi We are looking for testers for EulerGUI 1.9 beta. If you want to try, be sure to take snapshot from http://eulergui.sourceforge.net/tmp/ The manual is accessible from Help menu , or from : http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#Logic1 EulerGUI is a Semantic Web / N3 GUI and framework, with rules engines, mixing business rules and Java. -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 -- +33 (0)1 39 55 58 16 ( we rarely listen to voice messages, please send a mail instead ) |
From: Jean-Marc V. <jea...@gm...> - 2011-05-25 15:37:42
|
Hi This was a problem that was here for more than a year. One of the dependency jars, jEdit, that was prepared for this project on our Maven depot, had all its classes duplicated in a wrong directory classes/ in the jar. This was badly interaracting with recent changes in Maven. As a consequence, the jEdit editor windows were not working. This is now fixed, and if you build from sources, these command should get you going : rm $HOME/.m2/repository/org/jedit/jedit/4.3.1/jedit-4.3.1.jar mvn clean rm -r $HOME/.m2/repository/eulergui/eulergui/1.9-SNAPSHOT/ mvn -Dmaven.test.skip=true install For the others not building from sources , a snapshot has been uploaded at the usual place : http://eulergui.sourceforge.net/tmp/ -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 -- +33 (0)1 39 55 58 16 ( we rarely listen to voice messages, please send a mail instead ) |
From: Jean-Marc V. <jea...@gm...> - 2011-05-05 14:54:35
|
Hi all We're almost ready for a new release 1.9 . Let me paste below this paragraph from the Manual : http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#Generate Interpret Java instantiations and calls in N3 sources This is the main new feature of release 1.9 . Also known as "embedded Java objects" , this means that Java object within the N3+Java Knowledge Base react to rules in real time. It leverages on the embedded Drools forward chaining inference engine. This architecture is leveraged in Generated Swing applications<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html#Generated>. See details in "N3 - Java mapping" in architure page<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/architecture.html#L5714> . On an architectural point of view, this is very important. We think that rules and Description Logic are are better fit to business rules than Object Oriented languages. This feature allows to keep business rules written 100% in N3 and OWL, while other rules ("mixed rules") have Java instantiation, property or method calls in their consequence side. This is the ultimate in *keeping business logic and infrastructure and platform code separate*. This good practice is recognized as cornerstone of software engineering, but it's too easy to violate when writing both business logic and infrastructure logic in Java. With the EulerGUI + Déductions framework: - no business logic is in Java (or other precedural language); - pure business logic are N3 rules that have no Java related URI prefixes, or OWL ontologies; - "mixed rules" are easily traceable by their Java related URI prefixes -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 -- +33 (0)1 39 55 58 16 ( we rarely listen to voice messages, please send a mail instead ) |
From: Jean-Marc V. <jea...@gm...> - 2011-03-15 10:06:20
|
Hi Reminder The EulerGUI Integrated Development Environment (IDE) allows one to develop and run rules in N3 logic language, applied to data and models in various formats converted in N3 (Notation 3). N3 is a convergence language that allows to express data (facts), classes and properties, and rules. It is the main language for the Semantic Web, being much more readable and concise than RDF (Resource Description Format). Compared to pure point-and-click tools like Protégé, EulerGUI is centered on textual editor for N3 source. The main new feature is a 2 clicks tool to add all referred ontologies to current project. This plays particularly well with other features. You can refer to an ontology or vocabulary by using its common prefix in the editor, e.g. : :p a foaf:Person . Then, upon saving the corresponding prefix declaration will be added by looking up the http://prefix.cc web service : @prefix foaf: <http://xmlns.com/foaf/0.1/> . Then with the new feature, you can actually add the URI of the FOAF prefix to the project, which downloads the FOAF ontology as N3. You can then consult the FOAF ontology in the N3 editor, to discover all available properties and classes. These properties' label and RDF comments are also visible in the editor as tooltips. You can also launch the OWL reasoner, which shows a tree view of classes in FOAF and in all N3 sources in project. The second new feature is a button to stop the current inference engine. This is useful when a bad rule base goes into an infinite loop. As a side dish, there is a rule base that acts as a helper for documenting a rule base. That is, every non declared property generates a skeleton declaration; the same for undeclared classes. Here is a how-to: http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documenting_rule_base.html Download from https://sourceforge.net/projects/eulergui EulerGUI Manual here: http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 -- +33 (0)1 39 55 58 16 ( we rarely listen to voice messages, please send a mail instead ) |
From: Jean-Marc V. <jea...@gm...> - 2011-03-09 19:32:28
|
Hi all I just wrote a small rule base that acts as a helper for documenting a rule base. That is, every non declared property generates a skeleton declaration. Here is a how-to : "Documenting a rule base with EulerGUI<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documenting_rule_base.html> ". Right now I'll extend it to also check undeclared classes. We hope to include later other logical and quality checks on rule bases (suggestions welcome). -- Jean-Marc Vanel Déductions SARL - Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ - EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 -- +33 (0)1 39 55 58 16 ( we rarely listen to voice messages, please send a mail instead ) |
From: Jean-Marc V. <jea...@gm...> - 2011-03-01 18:48:12
|
Hi There are 3 new features recently . 1. new entry in Tools : Add Referred Ontologies to current project 2. a button to stop current inference engine. 3. add a Basic Runtime with a command line N3 interface : class BasicRuntime. Here is how the dialog looks : Enter RDF triples, one per line; empty line to stop. Bound prefixes: [dc:, foaf:, owl:, rdf:, rdfs:, vs:, wot:, foaf:] :xx a foaf:Person . TripleStoreDrools.store( <file:/tmp/translation-9170350070102438983.n3#xx> < http://www.w3.org/1999/02/22-rdf-syntax-ns#type> < http://xmlns.com/foaf/0.1/Person> . It's a laboratory for exploring application generation. These extensions are in project : - integrate in the GUI, probably in a tab - keep all input in an N3 file - have commands for actions in EulerGUI: open N3 source, launch inference engine X, etc -- Jean-Marc Vanel Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 -- +33 (0)1 39 55 58 16 ( we rarely listen to voice messages, please send a mail instead ) |
From: Jean-Marc V. <jea...@gm...> - 2011-02-04 09:59:53
|
There is a new feature : a button to stop current inference engine. Internally this relies on a new interface InferenceEngine . It would be nice to show the time remaining, but in fact there is no estimate at all. For Drools engine it should be possible to to show the size of the agenda, but this is not a direct indication of the remaining work. So we must show the elapsed time (TO DO). Note that in order to commit all that with the test suite OK, I just set a sufficient delay in the test with Thread.sleep( 40000 ) . Currently nothing is forbidden during the inference runs; clearly if the user mofifies the project or the N3 sources during the inference run, the computation can be incoherent. Also we paved the way for a new RETE engine by Luc Peuvrier, Reasoner4J. The button is there but currently does nothing. There is a snapshot at the usual place (with latest Euler) : http://eulergui.sourceforge.net/tmp/ Note that sftp towards web.sourceforge.net did not work at once; had to remove the old RSA keys in $HOME/.ssh/known_hosts . -- Jean-Marc Vanel Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 -- +33 (0)1 39 55 58 16 ( we rarely listen to voice messages, please send a mail instead ) |
From: Jean-Marc V. <jea...@gm...> - 2011-01-07 12:30:35
|
Happy new year! Here is an excerpt of the Change Log : FEATURES: - library upgrades: Drools 5.1.1, Jena 2.6.4, ARQ 2.8.7, Pellet 2.2.2, Euler 2010-12-31 - Read an OWL/XML document; from a file XXX.xml XXX.owl, or from an URL; recognizes the root XML element (uses OWL API 3.1.0) - when an OWL, RDF, XML, XMI file is modified on disk or Internet, it is re-translated to N3 - when an N3 file is modified on disk or Internet, it is re-parsed, and syntax errors are highlighted - important errors trigger a self-vanishing red popup (no more relying on the standard oputput) - editor using http://prefix.cc for filling missing N3 prefixes when saving N3 files - Drools N3 engine : * Use Drools' insertLogical() feature for automatic retraction of consequences no more holding, * implement e:max, e:min (with dynamic RDF lists coming from e:findall) * better handling of RDF lists, predicates list:in, math:memberCount * better translation of e:findall * fewer calls to the eval() macro of Drools, * implement add and multiply builtins with more than 2 operands * eg:trace works with variables created in an algebraic formula * Jos de Roo's owl-rules.n3 now passes Drools translator, e.g. { } => { ?X :p ?V }. - new cache for compiled rule bases using OSCache - new N3 - Java mapping, leverages on Drools to call Java methods in real time from N3 rules; will replace the JavaScript+Java translator in most places - N3 conversions of plain XML documents (by Gloze) are cached - Jena view of the result (second yellow button) : add N3 prefixes - using TemporaryFrame instead of standard outuput: explanation of the OWL inconsistency when calling Pellet reasoner, errors during inference - view of the result as GraphViz graph - enhance tooltips in N3 editor : now N3 terms like :xx or p:xx work also - Internationalization: update: german, french; new: italian, portuguese, romanian - when an N3 data is deactivated, the triples are removed from the user KB; this demonstrates TMS in examples/domotic.n3p - EulerGUI command line arguments : create a new project from multiple file names or URL of N3 sources, Euler options; a complete Euler command line is turned into an EulerGUI project - before launching inference engine, expand Arguments entered in the input field - N3 Source Factory : if content Type equals "text/plain", then consider the URI is N3 INNER workings: - Refactoring: simplify ProjectGUI with more consistent MVC pattern, in class Project (Olivier Rossel) Many FIXES More details in the CHANGELOG<http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/CHANGELOG> . DOWNLOAD: http://sourceforge.net/projects/eulergui/ User Manual: http://eulergui.sourceforge.net/documentation.html -- Jean-Marc Vanel Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 -- +33 (0)1 39 55 58 16 ( we rarely listen to voice messages, please send a mail instead ) |
From: Jean-Marc V. <jea...@gm...> - 2010-11-09 15:13:47
|
Hi Comments and critics welcome ! The Jena object model for RDF and inference Reference: Jena 2 Inference support <http://jena.sourceforge.net/inference/>; Jena JavaDoc <http://jena.sourceforge.net/javadoc/index.html> ; EulerGUI JavaDoc<http://eulergui.sourceforge.net/maven-site-dev/apidocs/>(NEW!) InfGraph ---|> Graph ---|> GraphAdd bound Reasonner <>------ InfGraph schema Reasonner <>------ Graph InfGraph is a Graph where Triples added by inference can be distinguished. Each Reasoner implementation is associated to ReasonerFactory. ReasonerFactory are registered in a singleton ReasonerRegistry. Graph is on the SPI side (Service Provider Interface), while Model (a huge interface) is on the API side. Comparison with EulerGUI model In EulerGUI this does not exist: - distinction between Graph and InfGraph - the equivalent of Reasonner, ReasonerFactory, and ReasonerRegistry In EulerGUI this exists: - ITripleStore is the equivalent of Graph - Project is the equivalent of Model - N3Source has no equivalent in Jena Project and N3Source are at the heart of EulerGUI. The accent is put on how to build a RDF + rules Model out of heteroneous parts. In contrast in Jena the accent is put on the RDF Model itself, and once a source is added to the Model, this action of adding is forgotten. About reasoner support, there are differences. In Jena, one can bind many reasoners of the same or different implementation to the same Graph, resulting in as many InfGraph objects. In EulerGUI, each different engine implementation is a unique service. A common feature is that different rule engines do not collaborate, each has its own augmented model. Currently (alas) the glue code for the inference engines (alias reasoners) in EulerGUI is all in class Project. The first task is to modularize the inference engines support in EulerGUI. To this end, these hardships exist: - some engines produce an explicit result, like Euler, while some like Drools enrich the triple set - some engines produce a result that can be N3 rules and quoted graphs, like Euler, while some like Drools just produce triples Modularizing the inference engines support in EulerGUI The first thing in modularizing the inference engines support in EulerGUI is to design an *API to be used by the GUI layer*. The possible inference engines should not be hard coded in the class Project, but offered as a uniform list of services. The minimal capabilities expected from an inference engine instance (already bound to a Project) are in this interface : public interface InferenceEngine { void setArguments(String args); String getArguments(); N3Source launch(); String getWarnings(); // and errors also } This is easy to do, but does not take in account the dynamic knowledge base features of Drools. Drools' RuleBase and WorkingMemory are used directly in Project. These existing EulerGUI interfaces should be used more: ITripleStoreRETE ---|> ITripleStore The idea is to simply add this method in interface InferenceEngine : /** non dynamic knowledge base can return a NullTripleStore */ ITripleStore getTripleStore(); Note the use of the null object design pattern<http://en.wikipedia.org/wiki/Null_Object_pattern>. A non dynamic knowledge base can also return a real ITripleStore, that can be implemented by parsing and aggregating the N3 sources. This is a service that is not currently provided by EulerGUI. Here the interface ITripleStoreRETE is not necessary, as one can call InferenceEngine.launch() . The GUI layer should be able to get a uniform list of services corresponding to the possible inference engines, and bind a Project to an inference engine: public interface InferenceEngineSupport { List<InferenceEngineFactory> getInferenceEngines(); } The interface InferenceEngineFactory is just a place holder for an Inference Engine implementation, and a concrete implementation knows how to create an actual InferenceEngine, and bind it to a Project. public interface InferenceEngineFactory { InferenceEngine bindInferenceEngine( InferenceEngineFactory e, Project p ); String showShortName(); String showLongName(); } Now to add SPI support, one can just add an interface InferenceEngineRegistry: public interface InferenceEngineRegistry { void register( InferenceEngineFactory e ); InferenceEngineSupport getInferenceEngineSupport(); } The interface InferenceEngineRegistry should be implemented as a singleton. Note that other design goals could be worked on: - reuse in EulerGUI the available reasoners from Jena - provide the available reasoners from EulerGUI as Jena Reasoners -- Jean-Marc Vanel Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 -- +33 (0)1 39 55 58 16 ( we rarely listen to voice messages, please send a mail instead ) |
From: Jean-Marc V. <jea...@gm...> - 2010-10-01 09:53:10
|
N3 rule examples were updated: http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/rules-examples.html These paragraphs were updated: Physic modeling: algebraic expressions These paragraphs were added: Queries on classes and properties Software infrastructure Finite State Machine "make" utility NOTE: this refers to a snapshot of EulerGUI that I uploaded at the usual place: http://eulergui.sourceforge.net/tmp/ -- Jean-Marc Vanel Consulting, services, training, Rule-based programming, Semantic Web http://jmvanel.free.fr/ EulerGUI, a turntable GUI for Semantic Web + rules, XML, UML, eCore, Java bytecode +33 (0)6 89 16 29 52 -- +33 (0)1 39 55 58 16 ( we rarely listen to voice messages, please send a mail instead ) |