From: <jm...@us...> - 2010-03-22 12:34:56
|
Revision: 1336 http://eulergui.svn.sourceforge.net/eulergui/?rev=1336&view=rev Author: jmvanel Date: 2010-03-22 12:34:49 +0000 (Mon, 22 Mar 2010) Log Message: ----------- update doc.: n3_rules_good_practices.html, taches, documentation.html : EulerGUI should flag non-monotonic (non OWA) rules and documents containing such rules. Modified Paths: -------------- trunk/eulergui/html/documentation.html trunk/eulergui/html/n3_rules_good_practices.html trunk/eulergui/html/taches.html Property Changed: ---------------- trunk/eulergui/html/n3_rules_good_practices.html Modified: trunk/eulergui/html/documentation.html =================================================================== --- trunk/eulergui/html/documentation.html 2010-03-21 12:37:18 UTC (rev 1335) +++ trunk/eulergui/html/documentation.html 2010-03-22 12:34:49 UTC (rev 1336) @@ -11,7 +11,7 @@ <body> <p style="text-align:center;font-size: 20pt">Euler GUI Manual</p> -<p>© Jean-Marc Vanel - $Date: 2010-03-19$ - <a +<p>© Jean-Marc Vanel - $Date: 2010-03-21$ - <a href="http://eulergui.sourceforge.net/documentation.html">a view possibly older in sync. with EulerGUI release </a> - <a href="http://eulergui.svn.sourceforge.net/viewvc/eulergui/trunk/eulergui/html/documentation.html">Latest @@ -2248,7 +2248,8 @@ <h2 id="TODO">Missing features</h2> <p>Partly prioritized, mostly historical, with older ideas below.</p> -<pre>- an N3 file with fileencoding=utf-8, fileencodings=ucs-bom,utf-8,default,latin1 +<pre>- EulerGUI should flag non-monotonic (non OWA) rules and documents containing such rules. +- an N3 file with fileencoding=utf-8, fileencodings=ucs-bom,utf-8,default,latin1 is not parsed right when it contains a non-ASCII character - add to project ontologies imported by owl:import - refresh all conversions to N3 (useful if modifications in e.g. Protégé) Modified: trunk/eulergui/html/n3_rules_good_practices.html =================================================================== --- trunk/eulergui/html/n3_rules_good_practices.html 2010-03-21 12:37:18 UTC (rev 1335) +++ trunk/eulergui/html/n3_rules_good_practices.html 2010-03-22 12:34:49 UTC (rev 1336) @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="iso-8859-1"?> +<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> + <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>N3 rules good practices</title> <style type="text/css"> @@ -16,14 +16,14 @@ <p style="font-size: 20pt">N3 rules: good practices, design patterns, refactoring</p> -<p>\xA9 Jean-Marc Vanel - $Date$</p> +<p>© Jean-Marc Vanel - $Date$</p> <p>TOC</p> <div class="toc"> <ul> <li><a href="#L470">Introduction</a></li> - <li><a href="#L587">The limitations of RDF</a> + <li><a href="#L587">The limitations of RDF</a> <ul> <li><a href="#L930">Open world assumption</a></li> <li><a href="#L1262">Monotonicity</a></li> @@ -31,27 +31,27 @@ </li> <li><a href="#L593">The limitations of N3 logic</a></li> <li><a href="#L944">Using OWL ontologies</a></li> - <li><a href="#L387">Variables patterns</a> + <li><a href="#L387">Variables patterns</a> <ul> <li><a href="#L398">Quantification</a></li> <li><a href="#L420">Multiple occurences</a></li> </ul> </li> - <li><a href="#L180">Design patterns</a> + <li><a href="#L180">Design patterns</a> <ul> <li><a href="#L432">Annotate the existing objects</a></li> <li><a href="#L445">Create new objects</a></li> </ul> </li> <li><a href="#L557">Data structures</a></li> - <li><a href="#L255">Lists variants</a> + <li><a href="#L255">Lists variants</a> <ul> <li><a href="#L215">Lists OWL style</a></li> <li><a href="#L303">Cloning a list</a></li> <li><a href="#L170">Accumulating by recursion</a></li> </ul> </li> - <li><a href="#L26">N3 refactorings</a> + <li><a href="#L26">N3 refactorings</a> <ul> <li><a href="#L135">Extract part of antecedent</a></li> </ul> @@ -72,7 +72,7 @@ <p><a href="http://www.google.fr/search?q=SWRL+design+pattern">Google search SWRL+design+pattern</a></p> -<p><a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ">Prot\xE9g\xE9 +<p><a href="http://protege.cim3.net/cgi-bin/wiki.pl?SWRLLanguageFAQ">Protégé wiki SWRL Language FAQ</a></p> <p></p> @@ -107,7 +107,7 @@ language, there is no limitation. Everything that can be expressed in XML, XMI, SQL, JSON, can also be expressed in RDF and N3. Moreover, RDF is by design adapted to Internet: URI are globally unique identifiers that can be -dererenced, and it has SWRL for query language and protocol.</p> +dereferenced, and it has SWRL for query language and protocol.</p> <p>Then the principles of the Semantic Web imply the Open World Assumption, which is a necessary limitation for the huge and ever changing Web.</p> @@ -116,9 +116,9 @@ href="http://www.betaversion.org/~stefano/linotype/news/91/">Open world assumption</a></h3> -<p>The closed world assumption implies that everything we don’t know is -false, while the open world assumption states that everything we don’t -know is undefined. </p> +<p>The closed world assumption implies that everything we don’t know is +false, while the open world assumption states that everything we don’t know +is undefined. </p> <p>The closed world is the point of vue of all databases, except RDF databases. Related to closed world assumption, there is a the unique name assumption, @@ -145,6 +145,16 @@ form of negation; see the paragraph "Motivation" of <a href="http://www.w3.org/DesignIssues/N3Logic">DesignIssues / N3Logic</a> .</p> +<h2>Rules languages</h2> + +<p>http://www.jessrules.com/jess/index.shtml</p> + +<p>http://www.jessrules.com/jess/docs/71/rules.html#rules</p> + +<p>http://www.w3.org/Submission/SWRL</p> + +<p>http://protege.cim3.net/cgi-bin/wiki.pl?SWRLTutorialESWC2010#nidB64</p> + <h2 id="L593">The limitations of N3 logic</h2> <p>The original N3 logic (like SWRL) follows strictly the principles of the @@ -208,20 +218,50 @@ <h2 id="L557">Data structures</h2> -<p>No sets ? Why ? Because ordinary RDF properties act as sets.</p> +<p>No sets ? Why ? Because an ordinary RDF property <code>myProp</code> plus a +resource <code>R</code> defines the set of ?V such that :</p> -<p>RDF is a bunch of associative arrays (called maps in Java and C++). ????</p> +<p><code>R myProp ?V .</code></p> +<p>RDF is a bunch of associative arrays (called maps in Java and C++). More +precisely each resource in subject position can be considered as an associative +array whose keys are the properties and whose values are the objects.</p> + <h2 id="L255">Lists variants</h2> -<p>RDF lists, OWL, linked list.</p> +<p>We are dealing here with ordered lists. As noted before, non-ordered lists +(sets) are just expressible with ordinary RDF statements.</p> -<p>transitive properties</p> +<p>In RDF, there is a special pre-defined class rdf:List, with two properties +<code>rdf:first</code> and <code>rdf:rest</code>, and a resource +<code>rdf:nil</code> to terminate the list. But in fact, this is just the +simplest way to define a linked list with a graph language like RDF. Instead of +rdf:rest, any domain specific property can be used to define a linked list.</p> +<h3>Transitive properties</h3> + +<p>Transitive properties are frequent for relations like: physical containment, +ordering relationship, entreprise hierarchy, ancestor relation, ... They are +typically modelized by an OWL Transitive property.</p> + +<p>???</p> + <h3 id="L215">Lists OWL style</h3> -<p>????</p> +<p>When using a plain domain specific property to define a linked list, there +is </p> +<p></p> +<pre>class List hasNext only List + class EmptyList hasContents max 0, hasNext max 0 + +object property hasContents functional + +object property hasRest transitive + object property hasNext functional</pre> + +<p></p> + <p>There is a paper describing the list pattern in OWL:</p> <p>Drummond, N., Rector, A.L., Stevens, R., Moulton, G., Horridge, M., Wang, H, @@ -233,6 +273,20 @@ <p></p> +<p>To use this OWL list ontology, one must import the ontology from the generic +URL:</p> + +<p><a +href="http://www.co-ode.org/ontologies/lists/list.owl">http://www.co-ode.org/ontologies/lists/list.owl</a></p> + +<p></p> + +<p>and particularize the class OWLList as a list of cities, by two +owl:Restrictions , like this (in Manchester OWL syntax) :</p> +<pre><code>Itinerary equivalentTo</code><code> hasContents only City</code><code> and OWLList</code><code> and isFollowedBy only Itinerary</code></pre> + +<p></p> + <h3 id="L303">Cloning a list</h3> <p>Here is an example with user specific :first and :rest properties , <a Property changes on: trunk/eulergui/html/n3_rules_good_practices.html ___________________________________________________________________ Added: svn:keywords + Date Modified: trunk/eulergui/html/taches.html =================================================================== --- trunk/eulergui/html/taches.html 2010-03-21 12:37:18 UTC (rev 1335) +++ trunk/eulergui/html/taches.html 2010-03-22 12:34:49 UTC (rev 1336) @@ -15,22 +15,16 @@ </head> <body> -<p>Taches EulerGUI</p> +<p><span style="font-size: 20pt">Taches EulerGUI</span></p> -<p></p> - <p>Conception : points \xE0 voir:</p> -<p></p> - <p>plusieurs WM ou une seule ? a priori une seule</p> <p></p> <h2>1.1 ficher de donn\xE9es et de configuration en N3</h2> -<p></p> - <h2>Validation des donn\xE9es (contraintes)</h2> <p>Prendre en compte la validation des donn\xE9es (contraintes) : faut-il une @@ -73,6 +67,12 @@ <td><strong>Commentaire</strong></td> </tr> <tr> + <td>log et fen\xEAtres de messages</td> + <td></td> + <td>voir si un IDE ne fait pas automatiquement une partie du travail; + ajouter un espace messages</td> + </tr> + <tr> <td>I18N</td> <td></td> <td>dans Java : pas de pb; dans N3: 1. entrer les valeurs de xml:lang en @@ -88,10 +88,11 @@ <td>FAIT, \xE0 documenter</td> </tr> <tr> - <td>log et fen\xEAtres de messages</td> + <td>\xE9crire un "script" en Java : lancer les cas de d\xE9mo : FaceBook, ceux + du manuel D\xE9ductions</td> <td></td> - <td>voir si un IDE ne fait pas automatiquement une partie du travail; - ajouter un espace messages</td> + <td>il serait bien de g\xE9n\xE9rer une config. JNLP \xE0 partir de la config. + Maven.</td> </tr> <tr> <td>catalogue de XML Schema en N3</td> @@ -99,44 +100,54 @@ <td>se mettre d'accord sur le vocabulaire RDF</td> </tr> <tr> - <td>\xE9crire un "script" en Java : lancer les cas de d\xE9mo : FaceBook, ceux - du manuel D\xE9ductions</td> - <td></td> - <td>il serait bien de g\xE9n\xE9rer une config. JNLP \xE0 partir de la config. - Maven.</td> - </tr> - <tr> <td>Utiliser Jython</td> <td></td> - <td></td> + <td>probl\xE8mes avec rdflib</td> </tr> <tr> <td>1.1 avoir un ficher de donn\xE9es et de configuration en N3 ( actuellement, la honte, c'est du XMLEncoder ) ;</td> <td></td> - <td>refactorer Project pour mettre toutes les donn\xE9es dans une KB.</td> + <td>on a d'aboord envisag\xE9 de refactorer Project pour mettre toutes les + donn\xE9es dans une KB; + + <p>le proto. actuel garde la structure de donn\xE9es Java, mais ajoute un + listener qui remplit la KB, cf</p> + + <p><a href="project_ontology.html">Proposal for a new ontology and N3 + format for RDF + OWL + rules projects</a></p> + </td> </tr> <tr> <td>1.2 pouvoir exporter les mini-application avec formulaires g\xE9n\xE9r\xE9es (actuellement elles ne tournent que dans l'IDE )</td> <td></td> - <td>bla??????????</td> + <td>en fait on n'a pas besoin dans un premier temps d'extraire les + classes n\xE9cessaires (runtime Drools, instanciateur, etc) , on peut + utiliser le gros jar de EulerGUI; + + <p>ce serait juste un argument <code>--launch</code> qui lancer + l'application g\xE9n\xE9r\xE9e .</p> + </td> </tr> <tr> <td>1.3 am\xE9liorer ces mini-application, les rendres plus configurables</td> <td></td> - <td>??????????? hyperlien , cf Prot\xE9g\xE9 Forms - - <p>sans en faire trop car c'est du boulot ( mais on est au coeur de la - d\xE9marche qui est de d\xE9duire l'application, et qui permettra \xE0 terme de - g\xE9n\xE9rer une application telle que EulerGUI )</p> + <td><p>sans en faire trop car c'est du boulot ( mais on est au coeur de + la d\xE9marche qui est de d\xE9duire l'application, et qui permettra \xE0 terme + de g\xE9n\xE9rer une application telle que EulerGUI )</p> </td> </tr> <tr> <td>int\xE9grer le composant form de Prot\xE9g\xE9 3</td> <td></td> - <td>: qui l'a fait ? D\xE9pendant de la vieille API CLIPS </td> + <td>cf <a + href="http://protegewiki.stanford.edu/index.php/UseProtegeFormsInApplications">Using + Protege Forms in Other Applications</a> + + <p>: qui l'a fait ? D\xE9pendant de la vieille API CLIPS </p> + </td> </tr> <tr> <td>1.4 embarquer un moteur de r\xE8gle dans l'application EulerGUI @@ -151,20 +162,33 @@ savoir que si le projet inclut certains URL, alors c'est un projet d'IHM, et alors il faudra lancer certains outils; d\xE9corer les sources du projet en fonction de leur contenu, statut, statistiques et - m\xE9triques, historique, etc</td> + m\xE9triques, historique, etc + + <p>cf <a href="project_ontology.html">Proposal for a new ontology and + N3 format for RDF + OWL + rules projects</a></p> + + <p></p> + </td> </tr> <tr> <td>1.4.1 aller vers un EulerGUI autog\xE9n\xE9r\xE9</td> <td></td> - <td>pouvoir int\xE9grer commod\xE9ment du code Java existant</td> + <td>d\xE9j\xE0 pouvoir int\xE9grer commod\xE9ment du code Java existant et des r\xE8gles + dans le EulerGUI existant</td> </tr> <tr> <td>1.5 int\xE9grer dans la cha\xEEne l'outil Attempto Ace View, pour pouvoir entrer les mod\xE8les, r\xE8gles, et donn\xE9es en Anglais Controll\xE9</td> <td></td> - <td>cela implique: soit de traduire le SWRL en logique N3, soit - d'utiliser Pellet + API Prot\xE9g\xE9 / OWL API (qui prennent du SWRL) \xE0 la - place du moteur Drools / N3 de EulerGUI</td> + <td>cela implique: + <ul> + <li>soit de traduire le SWRL en logique N3, </li> + <li>soit d'adapter le code Prolog existant qui g\xE9n\xE9rer du + OWL+SWRL</li> + <li>soit d'utiliser Pellet + API Prot\xE9g\xE9 / OWL API (qui prennent du + SWRL) \xE0 la place du moteur Drools / N3 de EulerGUI</li> + </ul> + </td> </tr> <tr> <td>1.6 \xE9diteur N3 int\xE9gr\xE9 en Java: ajouter diverses facilit\xE9s : Control @@ -203,7 +227,12 @@ propri\xE9t\xE9s et classes non d\xE9clar\xE9es par ailleurs</p> </td> <td></td> - <td></td> + <td>une base de r\xE8gles existe d\xE9j\xE0, qui avertit des propri\xE9t\xE9s non + d\xE9clar\xE9es: + + <p>voir <a + href="deductions/n3_new/model-rules-coherence.n3p">deductions/n3_new/model-rules-coherence.n3p</a></p> + </td> </tr> <tr> <td>1.9 requ\xEAtes param\xE9tr\xE9es (alias query en Drools)</td> @@ -349,11 +378,9 @@ </tr> </tbody> </table> -<ul> - <li></li> - <li></li> -</ul> <p></p> + +<p></p> </body> </html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |