You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by an...@apache.org on 2013/04/05 18:09:10 UTC

svn commit: r1465023 [1/4] - in /stanbol/trunk/rules: adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ adapters/clerezza/src/test/java/org/apache/stanbol/rules/adapters/clerezza/ adapters/jena/src/main/java/org/apache/stanbol...

Author: anuzzolese
Date: Fri Apr  5 16:09:09 2013
New Revision: 1465023

URL: http://svn.apache.org/r1465023
Log:
[STANBOL-560] Improvement of Rules' code.

Added:
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/VariableClauseEntry.java
Modified:
    stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdapter.java
    stanbol/trunk/rules/adapters/clerezza/src/test/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdpterTest.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/JenaAdapter.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/NodeFactory.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/DifferentAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/DivisionAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/EndsWithAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/GreaterEqualThanAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/GreaterThanAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/IndividualPropertyAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/IsBlankAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LessEqualThanAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LessThanAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LetAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/MultiplicationAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/NumberAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/NumericVariableAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/StrAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/StringVariableAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/SubtractionAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/SumAtom.java
    stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/VariableAtom.java
    stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLAdapter.java
    stanbol/trunk/rules/adapters/swrl/src/main/java/org/apache/stanbol/rules/adapters/swrl/SWRLAdapter.java
    stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/ClerezzaRuleStore.java
    stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/ParseException.java
    stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/RuleGrammar.jj
    stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/RuleParserImpl.java
    stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/RuleParserImplConstants.java
    stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/RuleParserImplTokenManager.java
    stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/SimpleCharStream.java
    stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/Token.java
    stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/TokenMgrError.java
    stanbol/trunk/rules/refactor/src/main/java/org/apache/stanbol/rules/refactor/impl/RefactorerImpl.java

Modified: stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdapter.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdapter.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdapter.java (original)
+++ stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdapter.java Fri Apr  5 16:09:09 2013
@@ -17,6 +17,9 @@
 
 package org.apache.stanbol.rules.adapters.clerezza;
 
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Dictionary;
@@ -25,6 +28,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.clerezza.rdf.core.UriRef;
 import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
 import org.apache.clerezza.rdf.core.sparql.query.Expression;
 import org.apache.clerezza.rdf.core.sparql.query.TriplePattern;
@@ -48,10 +52,22 @@ import org.apache.stanbol.rules.base.api
 import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
 import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
 import org.apache.stanbol.rules.base.api.util.RuleList;
+import org.apache.stanbol.rules.manager.KB;
+import org.apache.stanbol.rules.manager.RecipeImpl;
+import org.apache.stanbol.rules.manager.parse.RuleParserImpl;
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.hp.hpl.jena.query.Query;
+import com.hp.hpl.jena.query.QueryExecution;
+import com.hp.hpl.jena.query.QueryExecutionFactory;
+import com.hp.hpl.jena.query.QueryFactory;
+import com.hp.hpl.jena.query.Syntax;
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.util.FileManager;
+
 /**
  * 
  * The Rule Adapter for Clerezza.<br/>
@@ -74,12 +90,14 @@ public class ClerezzaAdapter extends Abs
 
     @Reference
     RuleAdaptersFactory ruleAdaptersFactory;
-
+    
+    ComponentContext componentContext;
+    
     /**
      * For OSGi environments.
      */
     public ClerezzaAdapter() {
-
+        
     }
 
     /**
@@ -102,6 +120,8 @@ public class ClerezzaAdapter extends Abs
         } catch (UnavailableRuleObjectException e) {
             log.error("Failed to add the adapter to the registry.", e);
         }
+        
+        
     }
 
     @SuppressWarnings("unchecked")
@@ -190,16 +210,30 @@ public class ClerezzaAdapter extends Abs
 
         if (type == ConstructQuery.class) {
 
+            //ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            
+            //log.info("loader : " + loader);
+           
+            
+           
+
             String className = ruleAtom.getClass().getSimpleName();
 
             String canonicalName = ARTIFACT + "." + className;
 
             try {
-
-                // ClassLoader loader = Thread.currentThread().getContextClassLoader();
-                // Class<AdaptableAtom> clerezzaAtomClass = (Class<AdaptableAtom>)
-                // loader.loadClass(canonicalName);
-                Class<AdaptableAtom> clerezzaAtomClass = (Class<AdaptableAtom>) Class.forName(canonicalName);
+                Class<AdaptableAtom> clerezzaAtomClass = null;
+                if(componentContext != null){
+                    // in OSGi environment 
+                    clerezzaAtomClass = componentContext.getBundleContext().getBundle().loadClass(canonicalName);
+                }
+                else{
+                    // in non-OSGi environment
+                    clerezzaAtomClass = (Class<AdaptableAtom>) Thread.currentThread().getContextClassLoader().loadClass(canonicalName);
+                }
+                /* Class<AdaptableAtom> clerezzaAtomClass = (Class<AdaptableAtom>) loader
+                        .loadClass(canonicalName);
+                        */
 
                 try {
                     AdaptableAtom clerezzaAtom = clerezzaAtomClass.newInstance();
@@ -243,6 +277,9 @@ public class ClerezzaAdapter extends Abs
         if (context == null) {
             throw new IllegalStateException("No valid" + ComponentContext.class + " parsed in activate!");
         }
+        
+        componentContext = context;
+        
         activate((Dictionary<String,Object>) context.getProperties());
     }
 
@@ -270,10 +307,77 @@ public class ClerezzaAdapter extends Abs
 
     @Override
     public <T> boolean canAdaptTo(Adaptable adaptable, Class<T> type) {
-        if (type == ConstructQuery.class) {
+        if(type == ConstructQuery.class){
             return true;
-        } else {
+        }
+        else{
             return false;
         }
     }
+    
+    
+    public static void main(String[] args){
+        RuleAdapter ruleAdapter = new ClerezzaAdapter();
+        try {
+            KB kb = RuleParserImpl.parse("http://sssw.org/2012/rules/", new FileInputStream("/Users/mac/Documents/CNR/SSSW2012/construct/exercise3"));
+            System.out.println("Rules: " + kb.getRuleList().size());
+            Recipe recipe = new RecipeImpl(new UriRef("http://sssw.org/2012/rules/"), "Recipe", kb.getRuleList());
+            
+            //List<ConstructQuery> jenaRules = (List<ConstructQuery>) ruleAdapter.adaptTo(recipe, ConstructQuery.class);
+            
+            String rules = "[ Exercise1: (http://dbpedia.org/resource/Madrid http://dbpedia.org/ontology/locationOf ?location) (?location rdf:type http://dbpedia.org/ontology/Museum) (?location http://dbpedia.org/ontology/numberOfVisitors ?visitors) greaterThan(?visitors '2000000'^^http://www.w3.org/2001/XMLSchema#integer) -> (?location rdf:type http://www.mytravels.com/Itinerary/MadridItinerary) ]";
+            
+            //List<com.hp.hpl.jena.reasoner.rulesys.Rule> jenaRules = com.hp.hpl.jena.reasoner.rulesys.Rule.parseRules(rules);
+            
+            
+            String spqral = "CONSTRUCT " +
+            "{ ?city a <http://www.mytravels.com/Itinerary/MovieCityItinerary> . " +
+            "   ?city <http://www.w3.org/2000/01/rdf-schema#label> ?cLabel . " +
+            "   ?event a <http://linkedevents.org/ontology/Event> . " +
+            "   ?event <http://linkedevents.org/ontology/atPlace> ?location . " +
+            "   ?location <http://www.w3.org/2000/01/rdf-schema#label> ?lLabel . " +
+            "   ?location <http://www.w3.org/2002/07/owl#sameAs> ?city" +
+            "} " +
+            "WHERE " +
+            "{ " +
+            "   ?city a <http://www.mytravels.com/Itinerary/MovieCityItinerary> . " +
+            "   ?city <http://www.w3.org/2000/01/rdf-schema#label> ?cLabel . " +
+            "   ?event a <http://linkedevents.org/ontology/Event> . " +
+            "   ?event <http://linkedevents.org/ontology/atPlace> ?location . " +
+            "   ?location <http://www.w3.org/2000/01/rdf-schema#label> ?lLabel . " +
+            "   FILTER(?lLabel = ?cLabel) " +            
+            "}";
+            Model m = ModelFactory.createDefaultModel();
+            Model model = FileManager.get().loadModel("/Users/mac/Documents/CNR/SSSW2012/datasets_new/Exercise5_tmp.rdf");
+            //for(ConstructQuery constructQuery : jenaRules){
+                //Query query = QueryFactory.create(constructQuery.toString(), Syntax.syntaxARQ);
+                Query query = QueryFactory.create(spqral, Syntax.syntaxARQ);
+                QueryExecution queryExecution = QueryExecutionFactory.create(query, model);
+                
+                //System.out.println(constructQuery.toString());
+                m.add(queryExecution.execConstruct());
+           //}
+            
+            FileOutputStream max = new FileOutputStream("/Users/mac/Documents/CNR/SSSW2012/datasets_new/example5.rdf");
+            m.write(max);
+            
+            
+        } catch (FileNotFoundException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } /*catch (RuleAtomCallExeption e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (UnavailableRuleObjectException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (UnsupportedTypeForExportException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }*/
+        
+        
+    }
+    
+    
 }

Modified: stanbol/trunk/rules/adapters/clerezza/src/test/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdpterTest.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/clerezza/src/test/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdpterTest.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/clerezza/src/test/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdpterTest.java (original)
+++ stanbol/trunk/rules/adapters/clerezza/src/test/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdpterTest.java Fri Apr  5 16:09:09 2013
@@ -17,20 +17,31 @@
 
 package org.apache.stanbol.rules.adapters.clerezza;
 
+import java.util.Dictionary;
+import java.util.Hashtable;
 import java.util.List;
 
 import junit.framework.Assert;
 
 import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.TcManager;
+import org.apache.clerezza.rdf.core.access.WeightedTcProvider;
 import org.apache.clerezza.rdf.core.sparql.ParseException;
+import org.apache.clerezza.rdf.core.sparql.QueryEngine;
 import org.apache.clerezza.rdf.core.sparql.QueryParser;
 import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.jena.sparql.JenaSparqlEngine;
+import org.apache.clerezza.rdf.simple.storage.SimpleTcProvider;
 import org.apache.stanbol.rules.adapters.clerezza.ClerezzaAdapter;
+import org.apache.stanbol.rules.adapters.impl.RuleAdaptersFactoryImpl;
 import org.apache.stanbol.rules.base.api.Recipe;
 import org.apache.stanbol.rules.base.api.RuleAdapter;
+import org.apache.stanbol.rules.base.api.RuleAdaptersFactory;
 import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.RuleStore;
 import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
 import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.ClerezzaRuleStore;
 import org.apache.stanbol.rules.manager.KB;
 import org.apache.stanbol.rules.manager.RecipeImpl;
 import org.apache.stanbol.rules.manager.parse.RuleParserImpl;
@@ -59,7 +70,24 @@ public class ClerezzaAdpterTest {
 
     @BeforeClass
     public static void setUpClass() {
-        ruleAdapter = new ClerezzaAdapter();
+        
+        class SpecialTcManager extends TcManager {
+            public SpecialTcManager(QueryEngine qe, WeightedTcProvider wtcp) {
+                super();
+                bindQueryEngine(qe);
+                bindWeightedTcProvider(wtcp);
+            }
+        }
+        
+        QueryEngine qe = new JenaSparqlEngine();
+        WeightedTcProvider wtcp = new SimpleTcProvider();
+        TcManager tcm = new SpecialTcManager(qe, wtcp);
+
+        Dictionary<String,Object> configuration = new Hashtable<String,Object>();
+        RuleAdaptersFactory ruleAdaptersFactory = new RuleAdaptersFactoryImpl();
+        RuleStore ruleStore = new ClerezzaRuleStore(configuration, tcm);
+        
+        ruleAdapter = new ClerezzaAdapter(configuration, ruleStore, ruleAdaptersFactory);
     }
 
     @AfterClass

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/JenaAdapter.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/JenaAdapter.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/JenaAdapter.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/JenaAdapter.java Fri Apr  5 16:09:09 2013
@@ -17,12 +17,19 @@
 
 package org.apache.stanbol.rules.adapters.jena;
 
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Dictionary;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.sparql.ResultSet;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
@@ -30,6 +37,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Service;
 import org.apache.stanbol.rules.adapters.AbstractRuleAdapter;
 import org.apache.stanbol.rules.adapters.AdaptableAtom;
+import org.apache.stanbol.rules.adapters.jena.atoms.VariableAtom;
 import org.apache.stanbol.rules.base.api.Adaptable;
 import org.apache.stanbol.rules.base.api.Recipe;
 import org.apache.stanbol.rules.base.api.Rule;
@@ -42,11 +50,36 @@ import org.apache.stanbol.rules.base.api
 import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
 import org.apache.stanbol.rules.base.api.util.AtomList;
 import org.apache.stanbol.rules.base.api.util.RuleList;
+import org.apache.stanbol.rules.manager.KB;
+import org.apache.stanbol.rules.manager.RecipeImpl;
+import org.apache.stanbol.rules.manager.parse.RuleParserImpl;
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.hp.hpl.jena.JenaRuntime;
+import com.hp.hpl.jena.query.Query;
+import com.hp.hpl.jena.query.QueryExecution;
+import com.hp.hpl.jena.query.QueryExecutionFactory;
+import com.hp.hpl.jena.query.QueryFactory;
+import com.hp.hpl.jena.query.ResultSetFormatter;
+import com.hp.hpl.jena.query.Syntax;
+import com.hp.hpl.jena.rdf.model.InfModel;
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.rdf.model.StmtIterator;
+import com.hp.hpl.jena.reasoner.Reasoner;
+import com.hp.hpl.jena.reasoner.ReasonerRegistry;
 import com.hp.hpl.jena.reasoner.rulesys.ClauseEntry;
+import com.hp.hpl.jena.reasoner.rulesys.GenericRuleReasoner;
+import com.hp.hpl.jena.reasoner.rulesys.GenericRuleReasonerFactory;
+import com.hp.hpl.jena.reasoner.rulesys.OWLFBRuleReasonerFactory;
+import com.hp.hpl.jena.util.FileManager;
+import com.hp.hpl.jena.util.PrintUtil;
+import com.hp.hpl.jena.vocabulary.RDF;
+import com.hp.hpl.jena.vocabulary.ReasonerVocabulary;
+import com.ibm.icu.util.Output;
 
 /**
  * The adapter for Jena rules. <br/>
@@ -71,7 +104,11 @@ public class JenaAdapter extends Abstrac
 
     @Reference
     RuleAdaptersFactory ruleAdaptersFactory;
-
+    
+    private ComponentContext componentContext;
+    
+    public Map<String,Integer> variableMap = new HashMap<String,Integer>();
+    
     @SuppressWarnings("unchecked")
     @Override
     protected <T> T adaptRecipeTo(Recipe recipe, Class<T> type) throws RuleAtomCallExeption,
@@ -112,6 +149,9 @@ public class JenaAdapter extends Abstrac
             List<ClauseEntry> headClauseEntries = new ArrayList<ClauseEntry>();
             List<ClauseEntry> bodyClauseEntries = new ArrayList<ClauseEntry>();
 
+            
+            variableMap = new HashMap<String,Integer>();
+            
             Iterator<RuleAtom> it = headAtomList.iterator();
             while (it.hasNext()) {
                 RuleAtom atom = it.next();
@@ -167,14 +207,30 @@ public class JenaAdapter extends Abstrac
             String className = ruleAtom.getClass().getSimpleName();
 
             String canonicalName = ARTIFACT + "." + className;
-
+            
             try {
-                // ClassLoader loader = Thread.currentThread().getContextClassLoader();
-                // Class<AdaptableAtom> jenaAtomClass = (Class<AdaptableAtom>)loader.loadClass(canonicalName);
-                Class<AdaptableAtom> jenaAtomClass = (Class<AdaptableAtom>) Class.forName(canonicalName);
-
-                try {
+                
+                
+                Class<AdaptableAtom> jenaAtomClass = null;
+                if(componentContext != null){
+                    // in OSGi environment 
+                    jenaAtomClass = componentContext.getBundleContext().getBundle().loadClass(canonicalName);
+                }
+                else{
+                    // in non-OSGi environment
+                    jenaAtomClass = (Class<AdaptableAtom>) Thread.currentThread().getContextClassLoader().loadClass(canonicalName);
+                }
+                
+                try 
+                
+                {
+                    
+                    
                     AdaptableAtom jenaAtom = jenaAtomClass.newInstance();
+                    
+                    if(jenaAtom instanceof VariableAtom){
+                        System.out.println("Class equals");
+                    }
 
                     jenaAtom.setRuleAdapter(this);
 
@@ -219,6 +275,9 @@ public class JenaAdapter extends Abstrac
         if (context == null) {
             throw new IllegalStateException("No valid" + ComponentContext.class + " parsed in activate!");
         }
+        
+        componentContext = context;
+        
         activate((Dictionary<String,Object>) context.getProperties());
     }
 
@@ -246,10 +305,82 @@ public class JenaAdapter extends Abstrac
 
     @Override
     public <T> boolean canAdaptTo(Adaptable adaptable, Class<T> type) {
-        if (type == com.hp.hpl.jena.reasoner.rulesys.Rule.class) {
+        if(type == com.hp.hpl.jena.reasoner.rulesys.Rule.class){
             return true;
-        } else {
+        }
+        else{
             return false;
         }
     }
+    
+    public static void main(String[] args){
+        RuleAdapter ruleAdapter = new JenaAdapter();
+        try {
+            KB kb = RuleParserImpl.parse("http://sssw.org/2012/rules/", new FileInputStream("/Users/mac/Documents/CNR/SSSW2012/rules/exercise1"));
+            System.out.println("Rules: " + kb.getRuleList().size());
+            Recipe recipe = new RecipeImpl(new UriRef("http://sssw.org/2012/rules/"), "Recipe", kb.getRuleList());
+            
+            List<com.hp.hpl.jena.reasoner.rulesys.Rule> jenaRules = (List<com.hp.hpl.jena.reasoner.rulesys.Rule>) ruleAdapter.adaptTo(recipe, com.hp.hpl.jena.reasoner.rulesys.Rule.class);
+            
+            String rules = "[ Exercise1: (http://dbpedia.org/resource/Madrid http://dbpedia.org/ontology/locationOf ?location) (?location rdf:type http://dbpedia.org/ontology/Museum) (?location http://dbpedia.org/ontology/numberOfVisitors ?visitors) greaterThan(?visitors '2000000'^^http://www.w3.org/2001/XMLSchema#integer) -> (?location rdf:type http://www.mytravels.com/Itinerary/MadridItinerary) ]";
+            
+            //List<com.hp.hpl.jena.reasoner.rulesys.Rule> jenaRules = com.hp.hpl.jena.reasoner.rulesys.Rule.parseRules(rules);
+            for(com.hp.hpl.jena.reasoner.rulesys.Rule jenaRule : jenaRules){
+                System.out.println(jenaRule.toString());
+            }
+            
+            Model m = ModelFactory.createDefaultModel();
+            
+            Resource configuration =  m.createResource();
+            configuration.addProperty(ReasonerVocabulary.PROPruleMode, "hybrid");
+            
+            //Model model = FileManager.get().loadModel("/Users/mac/Documents/workspaceMyStanbol/sssw2012/events.rdf");
+            Model model = FileManager.get().loadModel("/Users/mac/Documents/CNR/SSSW2012/datasets_new/Exercise1.rdf");
+            //GenericRuleReasoner reasoner = new GenericRuleReasoner(jenaRules);
+            
+            //GenericRuleReasoner reasoner = new GenericRuleReasoner(com.hp.hpl.jena.reasoner.rulesys.Rule.parseRules(rules));
+            GenericRuleReasoner reasoner = new GenericRuleReasoner(jenaRules);
+            
+            reasoner.setOWLTranslation(true);               // not needed in RDFS case
+            reasoner.setTransitiveClosureCaching(true);
+            
+            
+            InfModel infModel = ModelFactory.createInfModel(reasoner, model);
+            
+            infModel.prepare();
+            infModel.getDeductionsModel().write(System.out);
+            //String sparql = "select * where {?s a <http://www.mytravels.com/Itinerary/MovieCityMuseums> }";
+            //String sparql = "select * where {?s a <http://www.mytravels.com/Itinerary/CityEventItinerary> }";
+            String sparql = "select * where {?s a <http://www.mytravels.com/Itinerary/MadridItinerary> }";
+            //String sparql = "select * where {?s a <http://linkedevents.org/ontology/cazzo> }"; 
+            //String sparql = "select * where {?s a <http://www.mytravels.com/Itinerary/MovieCityItinerary> }";
+            
+            Query query = QueryFactory.create(sparql, Syntax.syntaxARQ);
+            QueryExecution queryExecution = QueryExecutionFactory.create(query, infModel);
+            
+            com.hp.hpl.jena.query.ResultSet resultSet = queryExecution.execSelect();
+            
+            ResultSetFormatter.out(System.out, resultSet);
+            
+            
+        } catch (FileNotFoundException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (RuleAtomCallExeption e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (UnavailableRuleObjectException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (UnsupportedTypeForExportException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        
+        
+    }
+    
+    public Map<String,Integer> getVariableMap() {
+        return variableMap;
+    }
 }

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/NodeFactory.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/NodeFactory.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/NodeFactory.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/NodeFactory.java Fri Apr  5 16:09:09 2013
@@ -60,18 +60,19 @@ public class NodeFactory {
             } else {
                 literal = Node_RuleVariable.createLiteral(argument.toString());
             }
-        } else if (argument instanceof String) {
-            literal = Node_RuleVariable.createLiteral((String) argument, null, XSDDatatype.XSDstring);
-        } else if (argument instanceof Integer) {
-            literal = Node_RuleVariable.createLiteral(argument.toString(), null, XSDDatatype.XSDinteger);
-        } else if (argument instanceof Double) {
-            literal = Node_RuleVariable.createLiteral(argument.toString(), null, XSDDatatype.XSDdouble);
-        } else if (argument instanceof Float) {
-            literal = Node_RuleVariable.createLiteral(argument.toString(), null, XSDDatatype.XSDfloat);
-        } else if (argument instanceof Boolean) {
-            literal = Node_RuleVariable.createLiteral(argument.toString(), null, XSDDatatype.XSDboolean);
+        } else if(argument instanceof String) {
+            
+            System.out.println(argument);
+            String argString = (String) argument;
+            if(argString.startsWith("\"") && argString.endsWith("\"")){
+                argString = argString.substring(1, argString.length()-1);
+            }
+            literal = Node_RuleVariable.createLiteral(argString);
+        } else if(argument instanceof Integer) {
+            
+            literal = Node_RuleVariable.createLiteral(argument.toString(), null, XSDDatatype.XSDint);
         } else {
-            literal = Node_RuleVariable.createLiteral((String) argument);
+            literal = Node_RuleVariable.createLiteral(argument.toString());
         }
 
         return literal;

Added: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/VariableClauseEntry.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/VariableClauseEntry.java?rev=1465023&view=auto
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/VariableClauseEntry.java (added)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/VariableClauseEntry.java Fri Apr  5 16:09:09 2013
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.stanbol.rules.adapters.jena;
+
+import java.util.Map;
+
+import com.hp.hpl.jena.graph.Node;
+import com.hp.hpl.jena.reasoner.rulesys.ClauseEntry;
+
+/**
+ * A wrapper in order to treat a node as a {@link ClauseEntry}
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class VariableClauseEntry extends NodeClauseEntry {
+
+    private Map<String,Integer> variableMap;
+
+    public VariableClauseEntry(Node node, Map<String,Integer> variableMap) {
+        super(node);
+        this.variableMap = variableMap;
+    }
+
+    @Override
+    public boolean sameAs(Object o) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public Map<String,Integer> getVariableMap() {
+        return variableMap;
+    }
+
+}

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/DifferentAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/DifferentAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/DifferentAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/DifferentAtom.java Fri Apr  5 16:09:09 2013
@@ -87,7 +87,7 @@ public class DifferentAtom extends Abstr
         nodes.add(arg1Node);
         nodes.add(arg2Node);
 
-        return (T) new Functor("notEqual", nodes, new BuiltinRegistry());
+        return (T) new Functor("notEqual", nodes, BuiltinRegistry.theRegistry);
 
     }
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/DivisionAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/DivisionAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/DivisionAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/DivisionAtom.java Fri Apr  5 16:09:09 2013
@@ -93,7 +93,7 @@ public class DivisionAtom extends Abstra
         nodes.add(arg2Node);
         nodes.add(arg3Node);
 
-        ClauseEntry clauseEntry = new Functor("quotient", nodes, new BuiltinRegistry());
+        ClauseEntry clauseEntry = new Functor("quotient", nodes, BuiltinRegistry.theRegistry);
 
         clauseEntries.add(clauseEntry);
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/EndsWithAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/EndsWithAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/EndsWithAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/EndsWithAtom.java Fri Apr  5 16:09:09 2013
@@ -99,7 +99,7 @@ public class EndsWithAtom extends Abstra
         nodes.add(arg1Node);
         nodes.add(arg2Node);
 
-        return (T) new Functor("regex", nodes, new BuiltinRegistry());
+        return (T) new Functor("regex", nodes, BuiltinRegistry.theRegistry);
 
     }
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/GreaterEqualThanAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/GreaterEqualThanAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/GreaterEqualThanAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/GreaterEqualThanAtom.java Fri Apr  5 16:09:09 2013
@@ -87,7 +87,7 @@ public class GreaterEqualThanAtom extend
         nodes.add(arg1Node);
         nodes.add(arg2Node);
 
-        Functor functor = new Functor("ge", nodes, new BuiltinRegistry());
+        Functor functor = new Functor("ge", nodes, BuiltinRegistry.theRegistry);
 
         clauseEntries.add(functor);
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/GreaterThanAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/GreaterThanAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/GreaterThanAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/GreaterThanAtom.java Fri Apr  5 16:09:09 2013
@@ -29,10 +29,12 @@ import org.apache.stanbol.rules.base.api
 import org.apache.stanbol.rules.manager.atoms.ExpressionAtom;
 
 import com.hp.hpl.jena.graph.Node;
+import com.hp.hpl.jena.reasoner.rulesys.Builtin;
 import com.hp.hpl.jena.reasoner.rulesys.BuiltinRegistry;
 import com.hp.hpl.jena.reasoner.rulesys.ClauseEntry;
 import com.hp.hpl.jena.reasoner.rulesys.Functor;
 import com.hp.hpl.jena.reasoner.rulesys.Rule;
+import com.hp.hpl.jena.reasoner.rulesys.builtins.GreaterThan;
 
 /**
  * 
@@ -87,7 +89,13 @@ public class GreaterThanAtom extends Abs
         nodes.add(arg1Node);
         nodes.add(arg2Node);
 
-        Functor functor = new Functor("greaterThan", nodes, new BuiltinRegistry());
+        Builtin f = BuiltinRegistry.theRegistry.getImplementation("greaterThan");
+        
+        System.out.println("Class: " + f.getClass().getCanonicalName());
+        System.out.println("Arg1: " + arg1Node.getClass().getCanonicalName());
+        System.out.println("Arg2: " + arg2Node.getClass().getCanonicalName());
+        
+        Functor functor = new Functor("greaterThan", nodes, BuiltinRegistry.theRegistry);
 
         clauseEntries.add(functor);
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/IndividualPropertyAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/IndividualPropertyAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/IndividualPropertyAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/IndividualPropertyAtom.java Fri Apr  5 16:09:09 2013
@@ -18,6 +18,7 @@ package org.apache.stanbol.rules.adapter
 
 import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
 import org.apache.stanbol.rules.adapters.jena.NodeClauseEntry;
+import org.apache.stanbol.rules.adapters.jena.VariableClauseEntry;
 import org.apache.stanbol.rules.base.api.RuleAtom;
 import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
 import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
@@ -50,6 +51,7 @@ public class IndividualPropertyAtom exte
         IObjectAtom argument2 = tmp.getArgument2();
         IObjectAtom objectProperty = tmp.getObjectProperty();
 
+        System.out.println(argument1);
         ClauseEntry argument2ClauseEntry = (ClauseEntry) adapter.adaptTo(argument2, Rule.class);
         ClauseEntry argument1ClauseEntry = (ClauseEntry) adapter.adaptTo(argument1, Rule.class);
         ClauseEntry objectPropertyClauseEntry = (ClauseEntry) adapter.adaptTo(objectProperty, Rule.class);
@@ -58,8 +60,12 @@ public class IndividualPropertyAtom exte
         Node predicateNode;
         Node objectNode;
 
+        System.out.println(argument1ClauseEntry.getClass());
         if (argument1ClauseEntry instanceof NodeClauseEntry) {
             subjectNode = ((NodeClauseEntry) argument1ClauseEntry).getNode();
+        } else if (argument1ClauseEntry instanceof VariableClauseEntry) {
+            subjectNode = ((VariableClauseEntry) argument1ClauseEntry).getNode();
+            System.out.println("Here");
         } else {
             throw new RuleAtomCallExeption(getClass());
         }

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/IsBlankAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/IsBlankAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/IsBlankAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/IsBlankAtom.java Fri Apr  5 16:09:09 2013
@@ -65,7 +65,7 @@ public class IsBlankAtom extends Abstrac
 
         nodes.add(argNode);
 
-        return (T) new Functor("isBNode", nodes, new BuiltinRegistry());
+        return (T) new Functor("isBNode", nodes, BuiltinRegistry.theRegistry);
 
     }
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LessEqualThanAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LessEqualThanAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LessEqualThanAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LessEqualThanAtom.java Fri Apr  5 16:09:09 2013
@@ -88,7 +88,7 @@ public class LessEqualThanAtom extends A
         nodes.add(arg1Node);
         nodes.add(arg2Node);
 
-        Functor functor = new Functor("le", nodes, new BuiltinRegistry());
+        Functor functor = new Functor("le", nodes, BuiltinRegistry.theRegistry);
 
         clauseEntries.add(functor);
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LessThanAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LessThanAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LessThanAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LessThanAtom.java Fri Apr  5 16:09:09 2013
@@ -87,7 +87,7 @@ public class LessThanAtom extends Abstra
         nodes.add(arg1Node);
         nodes.add(arg2Node);
 
-        Functor functor = new Functor("lessThan", nodes, new BuiltinRegistry());
+        Functor functor = new Functor("lessThan", nodes, BuiltinRegistry.theRegistry);
 
         clauseEntries.add(functor);
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LetAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LetAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LetAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/LetAtom.java Fri Apr  5 16:09:09 2013
@@ -84,7 +84,7 @@ public class LetAtom extends AbstractAda
         nodes.add(variableNode);
         nodes.add(parameterNode);
 
-        ClauseEntry clauseEntry = new Functor("makeSkolem", nodes, new BuiltinRegistry());
+        ClauseEntry clauseEntry = new Functor("makeSkolem", nodes, BuiltinRegistry.theRegistry);
 
         clauseEntries.add(clauseEntry);
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/MultiplicationAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/MultiplicationAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/MultiplicationAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/MultiplicationAtom.java Fri Apr  5 16:09:09 2013
@@ -92,7 +92,7 @@ public class MultiplicationAtom extends 
         nodes.add(arg2Node);
         nodes.add(arg3Node);
 
-        ClauseEntry clauseEntry = new Functor("product", nodes, new BuiltinRegistry());
+        ClauseEntry clauseEntry = new Functor("product", nodes, BuiltinRegistry.theRegistry);
 
         clauseEntries.add(clauseEntry);
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/NumberAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/NumberAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/NumberAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/NumberAtom.java Fri Apr  5 16:09:09 2013
@@ -42,6 +42,8 @@ public class NumberAtom extends Abstract
         String number = tmp.getNumber();
 
         Node node = null;
+        
+        System.out.println("Number atom " + number); 
 
         if (number.startsWith("?")) {
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/NumericVariableAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/NumericVariableAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/NumericVariableAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/NumericVariableAtom.java Fri Apr  5 16:09:09 2013
@@ -20,6 +20,7 @@ package org.apache.stanbol.rules.adapter
 import java.net.URI;
 
 import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.jena.JenaAdapter;
 import org.apache.stanbol.rules.adapters.jena.NodeClauseEntry;
 import org.apache.stanbol.rules.base.api.RuleAtom;
 import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
@@ -50,7 +51,15 @@ public class NumericVariableAtom extends
         if (variable.startsWith("?")) {
             variable = variable.substring(1);
         }
+        
+        Integer index = ((JenaAdapter)adapter).variableMap.get(variable);
+        if(index == null){
+            index = ((JenaAdapter)adapter).variableMap.size();
+            ((JenaAdapter)adapter).variableMap.put(variable, index);
+        }
+        
+        Node_RuleVariable ruleVariable = new Node_RuleVariable("?" + variable, index.intValue());
 
-        return (T) new NodeClauseEntry(Node_RuleVariable.createVariable(variable));
+        return (T) new NodeClauseEntry(ruleVariable);
     }
 }

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/StrAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/StrAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/StrAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/StrAtom.java Fri Apr  5 16:09:09 2013
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.jena.HigherOrderClauseEntry;
 import org.apache.stanbol.rules.adapters.jena.NodeClauseEntry;
 import org.apache.stanbol.rules.base.api.RuleAtom;
 import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
@@ -66,7 +67,11 @@ public class StrAtom extends AbstractAda
             args.add(emptyString);
             args.add(bindind);
 
-            return (T) new Functor("strConcat", args);
+            Functor functor = new Functor("strConcat", args);
+            
+            List<ClauseEntry> clauseEntries = new ArrayList<ClauseEntry>();
+            clauseEntries.add(functor);
+            return (T) new HigherOrderClauseEntry(node, clauseEntries);
 
         } else {
             throw new RuleAtomCallExeption(getClass());

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/StringVariableAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/StringVariableAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/StringVariableAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/StringVariableAtom.java Fri Apr  5 16:09:09 2013
@@ -20,6 +20,7 @@ package org.apache.stanbol.rules.adapter
 import java.net.URI;
 
 import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.jena.JenaAdapter;
 import org.apache.stanbol.rules.adapters.jena.NodeClauseEntry;
 import org.apache.stanbol.rules.base.api.RuleAtom;
 import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
@@ -49,7 +50,14 @@ public class StringVariableAtom extends 
         if (variable.startsWith("?")) {
             variable = variable.substring(1);
         }
+        
+        Integer index = ((JenaAdapter)adapter).variableMap.get(variable);
+        if(index == null){
+            index = ((JenaAdapter)adapter).variableMap.size();
+            ((JenaAdapter)adapter).variableMap.put(variable, index);
+        }
+        Node_RuleVariable ruleVariable = new Node_RuleVariable("?" + variable, index.intValue());
 
-        return (T) new NodeClauseEntry(Node_RuleVariable.createVariable(variable));
+        return (T) new NodeClauseEntry(ruleVariable);
     }
 }

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/SubtractionAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/SubtractionAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/SubtractionAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/SubtractionAtom.java Fri Apr  5 16:09:09 2013
@@ -91,7 +91,7 @@ public class SubtractionAtom extends Abs
         nodes.add(arg2Node);
         nodes.add(arg3Node);
 
-        ClauseEntry clauseEntry = new Functor("difference", nodes, new BuiltinRegistry());
+        ClauseEntry clauseEntry = new Functor("difference", nodes, BuiltinRegistry.theRegistry);
 
         clauseEntries.add(clauseEntry);
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/SumAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/SumAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/SumAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/SumAtom.java Fri Apr  5 16:09:09 2013
@@ -91,7 +91,7 @@ public class SumAtom extends AbstractAda
         nodes.add(arg2Node);
         nodes.add(arg3Node);
 
-        ClauseEntry clauseEntry = new Functor("sum", nodes, new BuiltinRegistry());
+        ClauseEntry clauseEntry = new Functor("sum", nodes, BuiltinRegistry.theRegistry);
 
         clauseEntries.add(clauseEntry);
 

Modified: stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/VariableAtom.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/VariableAtom.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/VariableAtom.java (original)
+++ stanbol/trunk/rules/adapters/jena/src/main/java/org/apache/stanbol/rules/adapters/jena/atoms/VariableAtom.java Fri Apr  5 16:09:09 2013
@@ -19,6 +19,7 @@ package org.apache.stanbol.rules.adapter
 import java.net.URI;
 
 import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.jena.JenaAdapter;
 import org.apache.stanbol.rules.adapters.jena.NodeClauseEntry;
 import org.apache.stanbol.rules.base.api.RuleAtom;
 import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
@@ -48,8 +49,18 @@ public class VariableAtom extends Abstra
         if (variable.startsWith("?")) {
             variable = variable.substring(1);
         }
-
-        return (T) new NodeClauseEntry(Node_RuleVariable.createVariable(variable));
+        
+        
+        Integer index = ((JenaAdapter)adapter).variableMap.get(variable);
+        if(index == null){
+            index = ((JenaAdapter)adapter).variableMap.size();
+            ((JenaAdapter)adapter).variableMap.put(variable, index);
+        }
+        Node_RuleVariable ruleVariable = new Node_RuleVariable("?" + variable, index.intValue());
+        
+        
+        return (T) new NodeClauseEntry(ruleVariable);
     }
+    
 
 }

Modified: stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLAdapter.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLAdapter.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLAdapter.java (original)
+++ stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLAdapter.java Fri Apr  5 16:09:09 2013
@@ -69,6 +69,8 @@ public class SPARQLAdapter extends Abstr
 
     @Reference
     RuleAdaptersFactory ruleAdaptersFactory;
+    
+    private ComponentContext componentContext;
 
     @SuppressWarnings("unchecked")
     protected <T> T adaptRecipeTo(Recipe recipe, Class<T> type) throws UnsupportedTypeForExportException,
@@ -204,11 +206,17 @@ public class SPARQLAdapter extends Abstr
             String canonicalName = ARTIFACT + "." + className;
 
             try {
-                // ClassLoader loader = Thread.currentThread().getContextClassLoader();
-                // Class<AdaptableAtom> sparqlAtomClass =
-                // (Class<AdaptableAtom>)loader.loadClass(canonicalName);
-                Class<AdaptableAtom> sparqlAtomClass = (Class<AdaptableAtom>) Class.forName(canonicalName);
-
+                
+                Class<AdaptableAtom> sparqlAtomClass = null;
+                if(componentContext != null){
+                    // in OSGi environment 
+                    sparqlAtomClass = componentContext.getBundleContext().getBundle().loadClass(canonicalName);
+                }
+                else{
+                    // in non-OSGi environment
+                    sparqlAtomClass = (Class<AdaptableAtom>) Thread.currentThread().getContextClassLoader().loadClass(canonicalName);
+                }
+                
                 try {
                     AdaptableAtom sparqlAtom = sparqlAtomClass.newInstance();
                     sparqlAtom.setRuleAdapter(this);
@@ -260,6 +268,9 @@ public class SPARQLAdapter extends Abstr
         if (context == null) {
             throw new IllegalStateException("No valid" + ComponentContext.class + " parsed in activate!");
         }
+        
+        componentContext = context;
+        
         activate((Dictionary<String,Object>) context.getProperties());
     }
 
@@ -287,9 +298,10 @@ public class SPARQLAdapter extends Abstr
 
     @Override
     public <T> boolean canAdaptTo(Adaptable adaptable, Class<T> type) {
-        if (type == SPARQLObject.class) {
+        if(type == SPARQLObject.class){
             return true;
-        } else {
+        }
+        else{
             return false;
         }
     }

Modified: stanbol/trunk/rules/adapters/swrl/src/main/java/org/apache/stanbol/rules/adapters/swrl/SWRLAdapter.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/adapters/swrl/src/main/java/org/apache/stanbol/rules/adapters/swrl/SWRLAdapter.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/adapters/swrl/src/main/java/org/apache/stanbol/rules/adapters/swrl/SWRLAdapter.java (original)
+++ stanbol/trunk/rules/adapters/swrl/src/main/java/org/apache/stanbol/rules/adapters/swrl/SWRLAdapter.java Fri Apr  5 16:09:09 2013
@@ -73,6 +73,8 @@ public class SWRLAdapter extends Abstrac
 
     @Reference
     RuleAdaptersFactory ruleAdaptersFactory;
+    
+    private ComponentContext componentContext;
 
     @SuppressWarnings("unchecked")
     @Override
@@ -147,9 +149,16 @@ public class SWRLAdapter extends Abstrac
             String canonicalName = ARTIFACT + "." + className;
 
             try {
-                // ClassLoader loader = Thread.currentThread().getContextClassLoader();
-                // Class<AdaptableAtom> swrlAtomClass = (Class<AdaptableAtom>)loader.loadClass(canonicalName);
-                Class<AdaptableAtom> swrlAtomClass = (Class<AdaptableAtom>) Class.forName(canonicalName);
+                
+                Class<AdaptableAtom> swrlAtomClass = null;
+                if(componentContext != null){
+                    // in OSGi environment 
+                    swrlAtomClass = componentContext.getBundleContext().getBundle().loadClass(canonicalName);
+                }
+                else{
+                    // in non-OSGi environment
+                    swrlAtomClass = (Class<AdaptableAtom>) Thread.currentThread().getContextClassLoader().loadClass(canonicalName);
+                }
 
                 try {
                     AdaptableAtom swrlAtom = swrlAtomClass.newInstance();
@@ -197,6 +206,9 @@ public class SWRLAdapter extends Abstrac
         if (context == null) {
             throw new IllegalStateException("No valid" + ComponentContext.class + " parsed in activate!");
         }
+        
+        componentContext = context;
+        
         activate((Dictionary<String,Object>) context.getProperties());
     }
 
@@ -224,9 +236,10 @@ public class SWRLAdapter extends Abstrac
 
     @Override
     public <T> boolean canAdaptTo(Adaptable adaptable, Class<T> type) {
-        if (type == SWRLRule.class) {
+        if(type == SWRLRule.class){
             return true;
-        } else {
+        }
+        else{
             return false;
         }
     }

Modified: stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/ClerezzaRuleStore.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/ClerezzaRuleStore.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/ClerezzaRuleStore.java (original)
+++ stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/ClerezzaRuleStore.java Fri Apr  5 16:09:09 2013
@@ -21,6 +21,9 @@
 
 package org.apache.stanbol.rules.manager;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -283,7 +286,8 @@ public class ClerezzaRuleStore implement
 
         UriRef recipeID = recipe.getRecipeID();
         String namespace = recipeID.toString().substring(1, recipeID.toString().length() - 1) + "/";
-
+        
+        log.info("Rule Namespace is " + namespace);
         RuleList ruleList = RuleParserImpl.parse(namespace, rulesStream).getRuleList();
 
         for (Rule rule : ruleList) {
@@ -662,4 +666,21 @@ public class ClerezzaRuleStore implement
 
         return matchingRules;
     }
+    
+    public static void main(String[] args){
+        
+        InputStream inputStream;
+        try {
+            inputStream = new FileInputStream(new File("/Users/mac/Desktop/domain.rule"));
+            
+            RuleList ruleList = RuleParserImpl.parse("http://www.prova.it/", inputStream).getRuleList();
+
+            for (Rule rule : ruleList) {
+                
+            }
+        } catch (FileNotFoundException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
 }

Modified: stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/ParseException.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/ParseException.java?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/ParseException.java (original)
+++ stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/ParseException.java Fri Apr  5 16:09:09 2013
@@ -1,182 +1,187 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
 /* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */
 /* JavaCCOptions:KEEP_LINE_COL=null */
 package org.apache.stanbol.rules.manager.parse;
 
 /**
- * This exception is thrown when parse errors are encountered. You can explicitly create objects of this
- * exception type by calling the method generateParseException in the generated parser.
- * 
- * You can modify this class to customize your error reporting mechanisms so long as you retain the public
- * fields.
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
  */
 public class ParseException extends Exception {
 
-    /**
-     * The version identifier for this Serializable class. Increment only if the <i>serialized</i> form of the
-     * class changes.
-     */
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * This constructor is used by the method "generateParseException" in the generated parser. Calling this
-     * constructor generates a new object of this type with the fields "currentToken",
-     * "expectedTokenSequences", and "tokenImage" set.
-     */
-    public ParseException(Token currentTokenVal, int[][] expectedTokenSequencesVal, String[] tokenImageVal) {
-        super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));
-        currentToken = currentTokenVal;
-        expectedTokenSequences = expectedTokenSequencesVal;
-        tokenImage = tokenImageVal;
-    }
-
-    /**
-     * The following constructors are for use by you for whatever purpose you can think of. Constructing the
-     * exception in this manner makes the exception behave in the normal way - i.e., as documented in the
-     * class "Throwable". The fields "errorToken", "expectedTokenSequences", and "tokenImage" do not contain
-     * relevant information. The JavaCC generated code does not use these constructors.
-     */
-
-    public ParseException() {
-        super();
+  /**
+   * The version identifier for this Serializable class.
+   * Increment only if the <i>serialized</i> form of the
+   * class changes.
+   */
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * This constructor is used by the method "generateParseException"
+   * in the generated parser.  Calling this constructor generates
+   * a new object of this type with the fields "currentToken",
+   * "expectedTokenSequences", and "tokenImage" set.
+   */
+  public ParseException(Token currentTokenVal,
+                        int[][] expectedTokenSequencesVal,
+                        String[] tokenImageVal
+                       )
+  {
+    super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));
+    currentToken = currentTokenVal;
+    expectedTokenSequences = expectedTokenSequencesVal;
+    tokenImage = tokenImageVal;
+  }
+
+  /**
+   * The following constructors are for use by you for whatever
+   * purpose you can think of.  Constructing the exception in this
+   * manner makes the exception behave in the normal way - i.e., as
+   * documented in the class "Throwable".  The fields "errorToken",
+   * "expectedTokenSequences", and "tokenImage" do not contain
+   * relevant information.  The JavaCC generated code does not use
+   * these constructors.
+   */
+
+  public ParseException() {
+    super();
+  }
+
+  /** Constructor with message. */
+  public ParseException(String message) {
+    super(message);
+  }
+
+
+  /**
+   * This is the last token that has been consumed successfully.  If
+   * this object has been created due to a parse error, the token
+   * followng this token will (therefore) be the first error token.
+   */
+  public Token currentToken;
+
+  /**
+   * Each entry in this array is an array of integers.  Each array
+   * of integers represents a sequence of tokens (by their ordinal
+   * values) that is expected at this point of the parse.
+   */
+  public int[][] expectedTokenSequences;
+
+  /**
+   * This is a reference to the "tokenImage" array of the generated
+   * parser within which the parse error occurred.  This array is
+   * defined in the generated ...Constants interface.
+   */
+  public String[] tokenImage;
+
+  /**
+   * It uses "currentToken" and "expectedTokenSequences" to generate a parse
+   * error message and returns it.  If this object has been created
+   * due to a parse error, and you do not catch it (it gets thrown
+   * from the parser) the correct error message
+   * gets displayed.
+   */
+  private static String initialise(Token currentToken,
+                           int[][] expectedTokenSequences,
+                           String[] tokenImage) {
+    String eol = System.getProperty("line.separator", "\n");
+    StringBuffer expected = new StringBuffer();
+    int maxSize = 0;
+    for (int i = 0; i < expectedTokenSequences.length; i++) {
+      if (maxSize < expectedTokenSequences[i].length) {
+        maxSize = expectedTokenSequences[i].length;
+      }
+      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');
+      }
+      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
+        expected.append("...");
+      }
+      expected.append(eol).append("    ");
     }
-
-    /** Constructor with message. */
-    public ParseException(String message) {
-        super(message);
+    String retval = "Encountered \"";
+    Token tok = currentToken.next;
+    for (int i = 0; i < maxSize; i++) {
+      if (i != 0) retval += " ";
+      if (tok.kind == 0) {
+        retval += tokenImage[0];
+        break;
+      }
+      retval += " " + tokenImage[tok.kind];
+      retval += " \"";
+      retval += add_escapes(tok.image);
+      retval += " \"";
+      tok = tok.next;
     }
-
-    /**
-     * This is the last token that has been consumed successfully. If this object has been created due to a
-     * parse error, the token followng this token will (therefore) be the first error token.
-     */
-    public Token currentToken;
-
-    /**
-     * Each entry in this array is an array of integers. Each array of integers represents a sequence of
-     * tokens (by their ordinal values) that is expected at this point of the parse.
-     */
-    public int[][] expectedTokenSequences;
-
-    /**
-     * This is a reference to the "tokenImage" array of the generated parser within which the parse error
-     * occurred. This array is defined in the generated ...Constants interface.
-     */
-    public String[] tokenImage;
-
-    /**
-     * It uses "currentToken" and "expectedTokenSequences" to generate a parse error message and returns it.
-     * If this object has been created due to a parse error, and you do not catch it (it gets thrown from the
-     * parser) the correct error message gets displayed.
-     */
-    private static String initialise(Token currentToken, int[][] expectedTokenSequences, String[] tokenImage) {
-        String eol = System.getProperty("line.separator", "\n");
-        StringBuffer expected = new StringBuffer();
-        int maxSize = 0;
-        for (int i = 0; i < expectedTokenSequences.length; i++) {
-            if (maxSize < expectedTokenSequences[i].length) {
-                maxSize = expectedTokenSequences[i].length;
-            }
-            for (int j = 0; j < expectedTokenSequences[i].length; j++) {
-                expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');
-            }
-            if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
-                expected.append("...");
-            }
-            expected.append(eol).append("    ");
-        }
-        String retval = "Encountered \"";
-        Token tok = currentToken.next;
-        for (int i = 0; i < maxSize; i++) {
-            if (i != 0) retval += " ";
-            if (tok.kind == 0) {
-                retval += tokenImage[0];
-                break;
-            }
-            retval += " " + tokenImage[tok.kind];
-            retval += " \"";
-            retval += add_escapes(tok.image);
-            retval += " \"";
-            tok = tok.next;
-        }
-        retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
-        retval += "." + eol;
-        if (expectedTokenSequences.length == 1) {
-            retval += "Was expecting:" + eol + "    ";
-        } else {
-            retval += "Was expecting one of:" + eol + "    ";
-        }
-        retval += expected.toString();
-        return retval;
+    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+    retval += "." + eol;
+    if (expectedTokenSequences.length == 1) {
+      retval += "Was expecting:" + eol + "    ";
+    } else {
+      retval += "Was expecting one of:" + eol + "    ";
     }
-
-    /**
-     * The end of line string for this machine.
-     */
-    protected String eol = System.getProperty("line.separator", "\n");
-
-    /**
-     * Used to convert raw characters to their escaped version when these raw version cannot be used as part
-     * of an ASCII string literal.
-     */
-    static String add_escapes(String str) {
-        StringBuffer retval = new StringBuffer();
-        char ch;
-        for (int i = 0; i < str.length(); i++) {
-            switch (str.charAt(i)) {
-                case 0:
-                    continue;
-                case '\b':
-                    retval.append("\\b");
-                    continue;
-                case '\t':
-                    retval.append("\\t");
-                    continue;
-                case '\n':
-                    retval.append("\\n");
-                    continue;
-                case '\f':
-                    retval.append("\\f");
-                    continue;
-                case '\r':
-                    retval.append("\\r");
-                    continue;
-                case '\"':
-                    retval.append("\\\"");
-                    continue;
-                case '\'':
-                    retval.append("\\\'");
-                    continue;
-                case '\\':
-                    retval.append("\\\\");
-                    continue;
-                default:
-                    if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
-                        String s = "0000" + Integer.toString(ch, 16);
-                        retval.append("\\u" + s.substring(s.length() - 4, s.length()));
-                    } else {
-                        retval.append(ch);
-                    }
-                    continue;
-            }
+    retval += expected.toString();
+    return retval;
+  }
+
+  /**
+   * The end of line string for this machine.
+   */
+  protected String eol = System.getProperty("line.separator", "\n");
+
+  /**
+   * Used to convert raw characters to their escaped version
+   * when these raw version cannot be used as part of an ASCII
+   * string literal.
+   */
+  static String add_escapes(String str) {
+      StringBuffer retval = new StringBuffer();
+      char ch;
+      for (int i = 0; i < str.length(); i++) {
+        switch (str.charAt(i))
+        {
+           case 0 :
+              continue;
+           case '\b':
+              retval.append("\\b");
+              continue;
+           case '\t':
+              retval.append("\\t");
+              continue;
+           case '\n':
+              retval.append("\\n");
+              continue;
+           case '\f':
+              retval.append("\\f");
+              continue;
+           case '\r':
+              retval.append("\\r");
+              continue;
+           case '\"':
+              retval.append("\\\"");
+              continue;
+           case '\'':
+              retval.append("\\\'");
+              continue;
+           case '\\':
+              retval.append("\\\\");
+              continue;
+           default:
+              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+                 String s = "0000" + Integer.toString(ch, 16);
+                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+              } else {
+                 retval.append(ch);
+              }
+              continue;
         }
-        return retval.toString();
-    }
+      }
+      return retval.toString();
+   }
 
 }
 /* JavaCC - OriginalChecksum=6917a930637533b189885678ddc74852 (do not edit this line) */

Modified: stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/RuleGrammar.jj
URL: http://svn.apache.org/viewvc/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/RuleGrammar.jj?rev=1465023&r1=1465022&r2=1465023&view=diff
==============================================================================
--- stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/RuleGrammar.jj (original)
+++ stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/parse/RuleGrammar.jj Fri Apr  5 16:09:09 2013
@@ -245,7 +245,7 @@ TOKEN :
   < NUM : ([ "0"-"9"])+ > 
 | < VAR : ([ "0"-"9","a"-"z","A"-"Z","-", "_", "."])+ >
 | < VARIABLE : "?" ([ "0"-"9","a"-"z","A"-"Z","-", "_"])+ >
-| < URI : "<" ([ "0"-"9","a"-"z","A"-"Z","-", "_", ".", "#", ":", "/", "(", ")" ])+ ">" >
+| < URI : "<" ([ "0"-"9","a"-"z","A"-"Z","-", "_", ".", "#", ":", "/", "(", ")", "$", "%" ])+ ">" >
 | < STRING : "\"" ([ "0"-"9","a"-"z","A"-"Z","-", "_", ".", ":", "/", "#", "\\", "?", " ", "!", "$", "%" ])+ "\"" >
 | < BNODE : "_:" ([ "0"-"9","a"-"z","A"-"Z","-", "_", "."])+ >
 }
@@ -481,7 +481,6 @@ SubstringAtom substringAtom() : 
 ExpressionAtom expressionAtom() :
 {ExpressionAtom expressionAtom;}
 {
-	LOOKAHEAD(2)
 		expressionAtom = stringFunctionAtom()
 	|	expressionAtom = numericFunctionAtom()