<p></p>

<p>The preceding announce on this list was on february 23:</p>

<p><a href="http://www.nabble.com/EulerGUI-released---IDE-for-semantic-Web-with-Drools-engine-and-Drools-export-td22164229.html">http://www.nabble.com/EulerGUI-released---IDE-for-semantic-Web-with-Drools-engine-and-Drools-export-td22164229.html</a></p>




<p>In short, EulerGUI is an IDE centered around a Semantic Web language 
called
<a href="http://www.w3.org/2000/10/swap/Primer">N3</a>. N3 is a good 
candidate
for a universal data + models + rules + queries textual language. The 
RDF
subset of N3 is perfectly isomorphic to RDF, but as human readable as 
can be.
And it is readable by Protégé, Jena, and others tools. The OWL (ontology) modeling language, being 
expressed as
RDF, is thus also expressible in N3. Here is an example for an OWL model
 :</p>
<pre>:Person a owl:Class .<br><br>:name    a       owl:DatatypeProperty ;<br>      rdfs:domain :Person ;            <br>      rdfs:range xsd:string ;          <br>      rdfs:comment &quot;First name and last name&quot; ;<br>
      rdfs:label &quot;name&quot; .<br><br>:Address a owl:Class .<br><br>:hasAddress    a       owl:ObjectProperty ;<br>      rdfs:domain :Person ;<br>      rdfs:range :Address ;<br>      rdfs:comment &quot;click to enter address&quot;@en ;<br>
      rdfs:label &quot;address&quot; .</pre>



<p>Here is an example of a simple rule in N3 logic :</p>
<pre>{ ?C hasParent ?P. ?P hasBrother ?B } =&gt; { ?C hasUncle ?B }.</pre>



<p>This rule is translated into Drools, giving this:</p>
<pre>rule &quot;family-rules.n3 0&quot;<br>when<br>  Triple( $C : subject, predicate == &quot;&lt;file:/home/jmv/family-rules.n3#hasParent&gt;&quot;,<br>          $P : object )<br>  Triple( subject == $P, predicate == &quot;&lt;file:/home/jmv/family-rules.n3#hasBrother&gt;&quot;,<br>
          $B : object )<br>  not(<br>    Triple( subject == $C, predicate == &quot;&lt;file:/home/jmv/family-rules.n3#hasUncle&gt;&quot;,<br>    object == $B ) )<br>then<br>  Triple newTriple;<br>  newTriple = new Triple( $C, &quot;&lt;file:/home/jmv/family-rules.n3#hasUncle&gt;&quot;, $B );<br>
  insert( newTriple );<br>endncle&gt;&quot;, $B );  insert( newTriple );<br><br>end</pre>



<p>As you can see, a negation of the consequent (RHS) is added in the antecedent, to avoid
 extra
responses.</p>

<p>This is one of the new features. The others are :</p>
<ul><li>thanks to relative file or URL&#39;s for source files and subprojects,
 a
    whole project can be opened from a single URL</li><li>subprojects and pipeline of projects (alias post-processing 
project)</li><li>open UML or eCore documents; they are translated into N3 </li><li>drag&#39;n&#39;drop of URL ending with .n3, .rdf, .owl, .uml, .xmi, or 
.ecore,
  </li><li>rule sets to translate UML and eCore class models into OWL; for 
example
    EulerGUI translates the whole of the UML 2 metamodel from an eCore 
file</li></ul>

<p>The rule base, the models, and the data are exportable for using with
 Drools
independently. So, for the Drools community, EulerGUI allows to import 
models
and data from N3, RDF, OWL, UML, eCore documents. Also for some people, 
writing
N3 rules can be easier than Drools language.</p>

<p>As you see above, the translation makes use of a particuliar form of 
Drools
language, which makes use of a single Java class, Triple, that models 
RDF
statements. This is quite far from the intended Drools usage, but it 
shows the
power and flexibility of Drools. When embedded into generated Java Swing
applications, a Drools engine is able to generate a form in a few 
milliseconds
from the class model! Also this design, based on a single Java class, 
allows to
add and remove business classes at runtime.</p>



<p><a href="http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html">The
EulerGUI
 documentation</a>.</p>

<p>Déductions is a Java Swing application generator from OWL models and 
N3
logic rules.</p>

<p><a href="http://deductions.svn.sourceforge.net/viewvc/deductions/html/GUIgenerator.html">The
User
 Manual for the application generator</a> .</p><br clear="all"><br>-- <br>Jean-Marc Vanel<br>Consulting, services, training,<br>Rule-based programming, Semantic Web<br><a href="http://jmvanel.free.fr/">http://jmvanel.free.fr/</a><br>
+33 (0)6 89 16 29 52 -- +33 (0)1 39 55 58 16<br>( we rarely listen to voice messages, please send a mail instead )<br>