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 2012/03/28 16:12:35 UTC

svn commit: r1306356 [1/2] - in /incubator/stanbol/trunk/rules/adapters/sparql: ./ src/ src/license/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/stanbol/ src/main/java/org/apache/stanbol/rules/ src/mai...

Author: anuzzolese
Date: Wed Mar 28 14:12:33 2012
New Revision: 1306356

URL: http://svn.apache.org/viewvc?rev=1306356&view=rev
Log:
[STANBOL-560] Initial commit of the SPARQL Rule adapters.

Added:
    incubator/stanbol/trunk/rules/adapters/sparql/pom.xml
    incubator/stanbol/trunk/rules/adapters/sparql/src/
    incubator/stanbol/trunk/rules/adapters/sparql/src/license/
    incubator/stanbol/trunk/rules/adapters/sparql/src/license/THIRD-PARTY.properties
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLAdapter.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLComparison.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLFunction.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLNot.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLQuery.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLTriple.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/BlankNodeAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/ClassAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/ConcatAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/CreateLabelAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DatavaluedPropertyAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DifferentAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DivisionAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/EndsWithAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/GreaterEqualThanAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/GreaterThanAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/IndividualPropertyAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/IsBlankAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LengthAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LessEqualThanAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LessThanAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LetAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LocalNameAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LowerCaseAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/MultiplicationAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/NamespaceAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/NewIRIAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/NewLiteralAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/NotAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/NumberAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/NumericVariableAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/PropStringAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/ResourceAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/SameAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/StartsWithAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/StrAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/StringAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/StringVariableAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/SubstringAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/SubtractionAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/SumAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/TypedLiteralAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/UObjectAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/UnionAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/UpperCaseAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/VariableAtom.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/resources/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/resources/META-INF/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/resources/OSGI-INF/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/resources/OSGI-INF/metatype/
    incubator/stanbol/trunk/rules/adapters/sparql/src/main/resources/OSGI-INF/metatype/metatype.properties
    incubator/stanbol/trunk/rules/adapters/sparql/src/test/
    incubator/stanbol/trunk/rules/adapters/sparql/src/test/java/
    incubator/stanbol/trunk/rules/adapters/sparql/src/test/java/org/
    incubator/stanbol/trunk/rules/adapters/sparql/src/test/java/org/apache/
    incubator/stanbol/trunk/rules/adapters/sparql/src/test/java/org/apache/stanbol/
    incubator/stanbol/trunk/rules/adapters/sparql/src/test/java/org/apache/stanbol/rules/
    incubator/stanbol/trunk/rules/adapters/sparql/src/test/java/org/apache/stanbol/rules/adapters/
    incubator/stanbol/trunk/rules/adapters/sparql/src/test/java/org/apache/stanbol/rules/adapters/sparql/
    incubator/stanbol/trunk/rules/adapters/sparql/src/test/java/org/apache/stanbol/rules/adapters/sparql/SPARQLAdpterTest.java
    incubator/stanbol/trunk/rules/adapters/sparql/src/test/resources/
Modified:
    incubator/stanbol/trunk/rules/adapters/sparql/   (props changed)

Propchange: incubator/stanbol/trunk/rules/adapters/sparql/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Mar 28 14:12:33 2012
@@ -0,0 +1,5 @@
+.project
+.DS_Store
+.classpath
+.settings
+target

Added: incubator/stanbol/trunk/rules/adapters/sparql/pom.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/pom.xml?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/pom.xml (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/pom.xml Wed Mar 28 14:12:33 2012
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.apache.stanbol</groupId>
+		<artifactId>stanbol-parent</artifactId>
+		<version>0.9.0-incubating-SNAPSHOT</version>
+		<relativePath>../../parent</relativePath>
+	</parent>
+
+	<groupId>org.apache.stanbol</groupId>
+	<artifactId>org.apache.stanbol.rules.adapters.sparql</artifactId>
+	<packaging>bundle</packaging>
+
+	<name>Apache Stanbol Rules - SPARQL Adapter</name>
+	<description>
+    The set of functionalities for manipulating
+    inference rules, complete with built-in atoms.
+  </description>
+
+	<inceptionYear>2010</inceptionYear>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<Bundle-ClassPath>
+							.,
+							META-INF
+            			</Bundle-ClassPath>
+						<Export-Package>
+							org.apache.stanbol.rules.adapters.sparql.*
+            			</Export-Package>
+						<Import-Package>
+							org.slf4j.*,
+							*
+            			</Import-Package>
+						<_nouses>true</_nouses>
+					</instructions>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-scr-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+
+		<!-- OSGi deps -->
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.scr.annotations</artifactId>
+		</dependency>
+
+		<!-- Stanbol deps -->
+		<dependency>
+			<groupId>org.apache.stanbol</groupId>
+			<artifactId>org.apache.stanbol.rules.base</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.stanbol</groupId>
+			<artifactId>org.apache.stanbol.rules.manager</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.stanbol</groupId>
+			<artifactId>org.apache.stanbol.rules.adapters</artifactId>
+			<version>0.9.0-incubating-SNAPSHOT</version>
+		</dependency>
+
+		<!-- Testing deps -->
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+		</dependency>
+
+	</dependencies>
+
+</project>

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/license/THIRD-PARTY.properties
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/license/THIRD-PARTY.properties?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/license/THIRD-PARTY.properties (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/license/THIRD-PARTY.properties Wed Mar 28 14:12:33 2012
@@ -0,0 +1,26 @@
+# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
+#-------------------------------------------------------------------------------
+# Already used licenses in project :
+# - Apache 2
+# - Apache License
+# - BSD
+# - BSD-style license
+# - CDDL 1.1
+# - Common Development and Distribution License (CDDL) v1.0
+# - Common Public License Version 1.0
+# - GPL2 w/ CPE
+# - ICU License
+# - MIT License
+# - The Apache Software License, Version 2.0
+#-------------------------------------------------------------------------------
+# Please fill the missing licenses for dependencies :
+#
+#
+#Wed Feb 15 19:05:24 CET 2012
+asm--asm--3.1=BSD License
+javax.servlet--servlet-api--2.4=Common Development And Distribution License (CDDL), Version 1.0
+org.codehaus.jettison--jettison--1.3=The Apache Software License, Version 2.0
+org.osgi--org.osgi.compendium--4.1.0=The Apache Software License, Version 2.0
+org.osgi--org.osgi.core--4.1.0=The Apache Software License, Version 2.0
+owlapi--owlapi--3.2.3=The Apache Software License, Version 2.0
+xerces--xercesImpl--2.7.1=The Apache Software License, Version 2.0

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLAdapter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLAdapter.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLAdapter.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLAdapter.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,296 @@
+/*
+ * 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.sparql;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+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.base.api.Adaptable;
+import org.apache.stanbol.rules.base.api.Recipe;
+import org.apache.stanbol.rules.base.api.Rule;
+import org.apache.stanbol.rules.base.api.RuleAdapter;
+import org.apache.stanbol.rules.base.api.RuleAdaptersFactory;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.RuleStore;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+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.osgi.service.component.ComponentContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The SPARQL adapter.<br/>
+ * This class implements the interface {@link RuleAdapter} and allows to adapt Stanbol recipes to object of
+ * the {@link SPARQLObject}. This class returns the string serialization of the SPARQL query throw the methos
+ * {@link SPARQLObject#getObject()}.<br/>
+ * 
+ * @author anuzzolese
+ * 
+ */
+
+@Component(immediate = true, metatype = true)
+@Service(RuleAdapter.class)
+public class SPARQLAdapter extends AbstractRuleAdapter {
+
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
+    private final String ARTIFACT = "org.apache.stanbol.rules.adapters.sparql.atoms";
+
+    @Reference
+    RuleStore ruleStore;
+
+    @Reference
+    RuleAdaptersFactory ruleAdaptersFactory;
+
+    @SuppressWarnings("unchecked")
+    protected <T> T adaptRecipeTo(Recipe recipe, Class<T> type) throws UnsupportedTypeForExportException,
+                                                               UnavailableRuleObjectException {
+
+        List<SPARQLObject> sparqlObjects = null;
+
+        if (type == SPARQLObject.class) {
+
+            RuleList ruleList = recipe.getRuleList();
+            Iterator<Rule> ruleIterator = ruleList.iterator();
+
+            sparqlObjects = new ArrayList<SPARQLObject>();
+            for (int i = 0; ruleIterator.hasNext(); i++) {
+                sparqlObjects.add((SPARQLObject) adaptRuleTo(ruleIterator.next(), type));
+            }
+
+        } else {
+            throw new UnsupportedTypeForExportException(
+                    "The SPARQL Export Provider does not support the selected serialization : "
+                            + type.getCanonicalName());
+        }
+
+        return (T) sparqlObjects;
+    }
+
+    /*
+     * public <T> T exportRecipe(String recipeID, Class<T> type) throws UnsupportedTypeForExportException,
+     * UnavailableRuleObjectException, NoSuchRecipeException {
+     * 
+     * 
+     * Recipe recipe; try { recipe = ruleStore.getRecipe(IRI.create(recipeID));
+     * 
+     * return exportRecipe(recipe, type); } catch (NoSuchRecipeException e) { throw e; }
+     * 
+     * 
+     * }
+     */
+
+    @SuppressWarnings("unchecked")
+    protected <T> T adaptRuleTo(Rule rule, Class<T> type) throws UnsupportedTypeForExportException,
+                                                         UnavailableRuleObjectException {
+
+        String sparql = "CONSTRUCT {";
+
+        boolean firstIte = true;
+
+        for (RuleAtom ruleAtom : rule.getHead()) {
+            if (!firstIte) {
+                sparql += " . ";
+            }
+            firstIte = false;
+            sparql += ((SPARQLObject) adaptRuleAtomTo(ruleAtom, type)).getObject();
+        }
+
+        sparql += "} ";
+        sparql += "WHERE {";
+
+        firstIte = true;
+        ArrayList<SPARQLObject> sparqlObjects = new ArrayList<SPARQLObject>();
+        for (RuleAtom ruleAtom : rule.getBody()) {
+
+            SPARQLObject tmp = ((SPARQLObject) adaptRuleAtomTo(ruleAtom, type));
+            if (tmp instanceof SPARQLNot) {
+                sparqlObjects.add((SPARQLNot) tmp);
+            } else if (tmp instanceof SPARQLComparison) {
+                sparqlObjects.add((SPARQLComparison) tmp);
+            } else {
+                if (!firstIte) {
+                    sparql += " . ";
+                } else {
+                    firstIte = false;
+                }
+                sparql += tmp.getObject();
+            }
+        }
+
+        firstIte = true;
+
+        String optional = "";
+        String filter = "";
+        for (SPARQLObject sparqlObj : sparqlObjects) {
+            if (sparqlObj instanceof SPARQLNot) {
+                SPARQLNot sparqlNot = (SPARQLNot) sparqlObj;
+                if (!firstIte) {
+                    optional += " . ";
+                } else {
+                    firstIte = false;
+                }
+
+                optional += sparqlNot.getObject();
+
+                String[] filters = sparqlNot.getFilters();
+                for (String theFilter : filters) {
+                    if (!filter.isEmpty()) {
+                        filter += " && ";
+                    }
+                    filter += theFilter;
+                }
+            } else if (sparqlObj instanceof SPARQLComparison) {
+                SPARQLComparison sparqlDifferent = (SPARQLComparison) sparqlObj;
+
+                String theFilter = sparqlDifferent.getObject();
+
+                if (!filter.isEmpty()) {
+                    filter += " && ";
+                }
+
+                filter += theFilter;
+            }
+        }
+
+        if (!optional.isEmpty()) {
+            sparql += " . OPTIONAL { " + optional + " } ";
+        }
+        if (!filter.isEmpty()) {
+            sparql += " . FILTER ( " + filter + " ) ";
+        }
+
+        sparql += "}";
+
+        return (T) new SPARQLQuery(sparql);
+    }
+
+    @SuppressWarnings("unchecked")
+    protected <T> T adaptRuleAtomTo(RuleAtom ruleAtom, Class<T> type) throws UnsupportedTypeForExportException,
+                                                                     UnavailableRuleObjectException {
+
+        if (type == SPARQLObject.class) {
+
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+
+            String className = ruleAtom.getClass().getSimpleName();
+
+            String canonicalName = ARTIFACT + "." + className;
+
+            try {
+                Class<AdaptableAtom> sparqlAtomClass = (Class<AdaptableAtom>) loader.loadClass(canonicalName);
+
+                try {
+                    AdaptableAtom sparqlAtom = sparqlAtomClass.newInstance();
+                    sparqlAtom.setRuleAdapter(this);
+
+                    return (T) sparqlAtom.adapt(ruleAtom);
+
+                } catch (InstantiationException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                } catch (IllegalAccessException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                } catch (RuleAtomCallExeption e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+
+            } catch (ClassNotFoundException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            } catch (SecurityException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+
+        }
+
+        return null;
+
+    }
+
+    /*
+     * @Override public <T> boolean canExportRecipe(Class<T> type) { // TODO Auto-generated method stub return
+     * false; }
+     */
+
+    /**
+     * Used to configure an instance within an OSGi container.
+     * 
+     * @throws IOException
+     */
+    @SuppressWarnings("unchecked")
+    @Activate
+    protected void activate(ComponentContext context) throws IOException {
+
+        // context.getBundleContext().addServiceListener((RuleAdaptersFactoryImpl<SPARQLObject>)ruleAdaptersFactory);
+
+        log.info("in " + SPARQLAdapter.class + " activate with context " + context);
+        if (context == null) {
+            throw new IllegalStateException("No valid" + ComponentContext.class + " parsed in activate!");
+        }
+        activate((Dictionary<String,Object>) context.getProperties());
+    }
+
+    /**
+     * Should be called within both OSGi and non-OSGi environments.
+     * 
+     * @param configuration
+     * @throws IOException
+     */
+    protected void activate(Dictionary<String,Object> configuration) throws IOException {
+
+        log.info("SPARQL Export Provider for Stanbol Rules  is active", this);
+    }
+
+    @Deactivate
+    protected void deactivate(ComponentContext context) {
+        log.info("in " + SPARQLAdapter.class + " deactivate with context " + context);
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> Class<T> getExportClass() {
+        return (Class<T>) SPARQLObject.class;
+    }
+
+    @Override
+    public <T> boolean canAdaptTo(Adaptable adaptable, Class<T> type) {
+        if(type == SPARQLObject.class){
+            return true;
+        }
+        else{
+            return false;
+        }
+    }
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLComparison.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLComparison.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLComparison.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLComparison.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,40 @@
+/*
+ * 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.sparql;
+
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+
+/**
+ * A SPARQL comparison.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class SPARQLComparison implements SPARQLObject {
+
+    private String filter;
+
+    public SPARQLComparison(String filter) {
+        this.filter = filter;
+    }
+
+    @Override
+    public String getObject() {
+        return filter;
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLFunction.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLFunction.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLFunction.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLFunction.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,40 @@
+/*
+ * 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.sparql;
+
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+
+/**
+ * A SPARQL function.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class SPARQLFunction implements SPARQLObject {
+
+    private String function;
+
+    public SPARQLFunction(String function) {
+        this.function = function;
+    }
+
+    @Override
+    public String getObject() {
+        return function;
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLNot.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLNot.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLNot.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLNot.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,46 @@
+/*
+ * 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.sparql;
+
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+
+/**
+ * A SPARQL not.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class SPARQLNot implements SPARQLObject {
+
+    private String optional;
+    private String[] filters;
+
+    public SPARQLNot(String optional, String[] filters) {
+        this.optional = optional;
+        this.filters = filters;
+    }
+
+    @Override
+    public String getObject() {
+        return optional;
+    }
+
+    public String[] getFilters() {
+        return filters;
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLQuery.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLQuery.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLQuery.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLQuery.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,40 @@
+/*
+ * 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.sparql;
+
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+
+/**
+ * A SPARQL query.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class SPARQLQuery implements SPARQLObject {
+
+    private String query;
+
+    public SPARQLQuery(String query) {
+        this.query = query;
+    }
+
+    @Override
+    public String getObject() {
+        return query;
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLTriple.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLTriple.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLTriple.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/SPARQLTriple.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,40 @@
+/*
+ * 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.sparql;
+
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+
+/**
+ * A SPARQL triple pattern.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class SPARQLTriple implements SPARQLObject {
+
+    private String triple;
+
+    public SPARQLTriple(String triple) {
+        this.triple = triple;
+    }
+
+    @Override
+    public String getObject() {
+        return triple;
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/BlankNodeAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/BlankNodeAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/BlankNodeAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/BlankNodeAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,39 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLTriple;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+
+/**
+ * It adapts any BlankNodeAtom to a triple pattern of SPARLQ for creating blank nodes.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class BlankNodeAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) {
+        org.apache.stanbol.rules.manager.atoms.BlankNodeAtom tmp = (org.apache.stanbol.rules.manager.atoms.BlankNodeAtom) ruleAtom;
+        return (T) new SPARQLTriple(tmp.getArgument2().toString() + " " + tmp.getArgument1().toString()
+                                    + " _:bNode");
+
+    }
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/ClassAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/ClassAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/ClassAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/ClassAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,78 @@
+/*
+ * 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.sparql.atoms;
+
+import java.util.ArrayList;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLNot;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLTriple;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+
+/**
+ * It adapts any ClassAtom to a triple pattern of SPARQL.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class ClassAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnavailableRuleObjectException,
+                                         UnsupportedTypeForExportException {
+        String argument1SPARQL = null;
+        String argument2SPARQL = null;
+
+        boolean negativeArg = false;
+        boolean negativeClass = false;
+
+        org.apache.stanbol.rules.manager.atoms.ClassAtom tmp = (org.apache.stanbol.rules.manager.atoms.ClassAtom) ruleAtom;
+
+        SPARQLObject sparqlArgument1 = adapter.adaptTo(tmp.getArgument1(), SPARQLObject.class);
+        SPARQLObject sparqlArgument2 = adapter.adaptTo(tmp.getClassResource(), SPARQLObject.class);
+
+        if (negativeArg || negativeClass) {
+            String optional = sparqlArgument1.getObject()
+                              + " <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> "
+                              + sparqlArgument2.getObject();
+
+            ArrayList<String> filters = new ArrayList<String>();
+            if (negativeArg) {
+                filters.add("!bound(" + argument1SPARQL + ")");
+            }
+            if (negativeClass) {
+                filters.add("!bound(" + argument2SPARQL + ")");
+            }
+
+            String[] filterArray = new String[filters.size()];
+            filterArray = filters.toArray(filterArray);
+
+            return (T) new SPARQLNot(optional, filterArray);
+        } else {
+            return (T) new SPARQLTriple(sparqlArgument1.getObject()
+                                        + " <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> "
+                                        + sparqlArgument2.getObject());
+        }
+
+    }
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/ConcatAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/ConcatAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/ConcatAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/ConcatAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,61 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLFunction;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.StringFunctionAtom;
+
+/**
+ * It adapts any ConcatAtom to the <http://www.w3.org/2005/xpath-functions#concat> function of XPath.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class ConcatAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnavailableRuleObjectException,
+                                         UnsupportedTypeForExportException {
+
+        org.apache.stanbol.rules.manager.atoms.ConcatAtom tmp = (org.apache.stanbol.rules.manager.atoms.ConcatAtom) ruleAtom;
+
+        String sparqlConcat = "<http://www.w3.org/2005/xpath-functions#concat>";
+
+        StringFunctionAtom argument1 = tmp.getArgument1();
+        StringFunctionAtom argument2 = tmp.getArgument2();
+
+        SPARQLObject sparqlArgument1;
+
+        sparqlArgument1 = adapter.adaptTo(argument1, SPARQLObject.class);
+        SPARQLObject sparqlArgument2 = adapter.adaptTo(argument2, SPARQLObject.class);
+
+        String function = sparqlConcat + " (" + sparqlArgument1.getObject() + ", "
+                          + sparqlArgument2.getObject() + ")";
+
+        return (T) new SPARQLFunction(function);
+
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/CreateLabelAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/CreateLabelAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/CreateLabelAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/CreateLabelAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,59 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLFunction;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.Symbols;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.StringFunctionAtom;
+
+/**
+ * FIXME
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class CreateLabelAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnsupportedTypeForExportException,
+                                         UnavailableRuleObjectException {
+
+        org.apache.stanbol.rules.manager.atoms.CreateLabelAtom tmp = (org.apache.stanbol.rules.manager.atoms.CreateLabelAtom) ruleAtom;
+        StringFunctionAtom stringFunctionAtom = tmp.getStringFunctionAtom();
+
+        System.out.println("Argument instance of " + stringFunctionAtom.getClass().getCanonicalName());
+
+        SPARQLObject sparqlArgument1 = adapter.adaptTo(stringFunctionAtom, SPARQLObject.class);
+        String argument = sparqlArgument1.getObject();
+
+        if (argument.startsWith(Symbols.variablesPrefix)) {
+            argument = "?" + argument.replace(Symbols.variablesPrefix, "");
+        }
+
+        String sparql = "<http://www.stlab.istc.cnr.it/semion/function#createLabel>(" + argument + ")";
+        return (T) new SPARQLFunction(sparql);
+
+    }
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DatavaluedPropertyAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DatavaluedPropertyAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DatavaluedPropertyAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DatavaluedPropertyAtom.java Wed Mar 28 14:12:33 2012
@@ -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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLTriple;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+
+/**
+ * It adapts any DatavaluedPropertyAtom to a triple pattern of SAPRQL.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class DatavaluedPropertyAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnavailableRuleObjectException,
+                                         UnsupportedTypeForExportException {
+        org.apache.stanbol.rules.manager.atoms.DatavaluedPropertyAtom tmp = (org.apache.stanbol.rules.manager.atoms.DatavaluedPropertyAtom) ruleAtom;
+
+        SPARQLObject sparqlArgument1 = adapter.adaptTo(tmp.getArgument1(), SPARQLObject.class);
+        SPARQLObject sparqlDT = adapter.adaptTo(tmp.getDatatypeProperty(), SPARQLObject.class);
+        SPARQLObject sparqlArgument2 = adapter.adaptTo(tmp.getArgument2(), SPARQLObject.class);
+
+        return (T) new SPARQLTriple(sparqlArgument1.getObject() + " " + sparqlDT.getObject() + " "
+                                    + sparqlArgument2.getObject());
+
+    }
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DifferentAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DifferentAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DifferentAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DifferentAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,67 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLComparison;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.Symbols;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.ExpressionAtom;
+
+/**
+ * It adapts any DifferentAtom to a not equality test (i.e., !=) of SAPRQL.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class DifferentAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnavailableRuleObjectException,
+                                         UnsupportedTypeForExportException {
+
+        org.apache.stanbol.rules.manager.atoms.DifferentAtom tmp = (org.apache.stanbol.rules.manager.atoms.DifferentAtom) ruleAtom;
+        ExpressionAtom expressionAtom1 = tmp.getStringFunctionAtom1();
+        ExpressionAtom expressionAtom2 = tmp.getStringFunctionAtom2();
+
+        SPARQLObject sparqlArgument1 = adapter.adaptTo(expressionAtom1, SPARQLObject.class);
+        SPARQLObject sparqlArgument2 = adapter.adaptTo(expressionAtom2, SPARQLObject.class);
+
+        String argument1 = sparqlArgument1.getObject();
+        String argument2 = sparqlArgument2.getObject();
+
+        argument1 = argument1.toString().replace(Symbols.variablesPrefix, "");
+        argument2 = argument2.toString().replace(Symbols.variablesPrefix, "");
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("(");
+        sb.append(argument1);
+        sb.append("!=");
+        sb.append(argument2);
+        sb.append(")");
+
+        return (T) new SPARQLComparison(sb.toString());
+
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DivisionAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DivisionAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DivisionAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/DivisionAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,65 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLFunction;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.NumericFunctionAtom;
+
+/**
+ * It adapts any DivisionAtom to the / operator of SAPRQL.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class DivisionAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnsupportedTypeForExportException,
+                                         UnavailableRuleObjectException {
+
+        org.apache.stanbol.rules.manager.atoms.DivisionAtom tmp = (org.apache.stanbol.rules.manager.atoms.DivisionAtom) ruleAtom;
+
+        NumericFunctionAtom argument1 = tmp.getNumericFunctionAtom1();
+        NumericFunctionAtom argument2 = tmp.getNumericFunctionAtom2();
+
+        SPARQLObject sparqlArgument1 = adapter.adaptTo(argument1, SPARQLObject.class);
+        SPARQLObject sparqlArgument2 = adapter.adaptTo(argument2, SPARQLObject.class);
+
+        String sparqlFunction1 = sparqlArgument1.getObject();
+        String sparqlFunction2 = sparqlArgument2.getObject();
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("(");
+        sb.append(sparqlFunction1);
+        sb.append("/");
+        sb.append(sparqlFunction2);
+        sb.append(")");
+
+        return (T) new SPARQLFunction(sb.toString());
+
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/EndsWithAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/EndsWithAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/EndsWithAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/EndsWithAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,57 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLComparison;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.StringFunctionAtom;
+
+/**
+ * It adapts any EndsWithAtom to the <http://www.w3.org/2005/xpath-functions#ends-with> function of XPath.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class EndsWithAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnsupportedTypeForExportException,
+                                         UnavailableRuleObjectException {
+
+        org.apache.stanbol.rules.manager.atoms.EndsWithAtom tmp = (org.apache.stanbol.rules.manager.atoms.EndsWithAtom) ruleAtom;
+
+        StringFunctionAtom argument = tmp.getArgument();
+        StringFunctionAtom term = tmp.getTerm();
+
+        SPARQLObject sparqlArgument = adapter.adaptTo(argument, SPARQLObject.class);
+        SPARQLObject sparqlTerm = adapter.adaptTo(term, SPARQLObject.class);
+
+        String argumentSparql = sparqlArgument.getObject();
+        String termSparql = sparqlTerm.getObject();
+
+        return (T) new SPARQLComparison("<http://www.w3.org/2005/xpath-functions#ends-with> ("
+                                        + argumentSparql + ", " + termSparql + ")");
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/GreaterEqualThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/GreaterEqualThanAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/GreaterEqualThanAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/GreaterEqualThanAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,64 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLComparison;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.ExpressionAtom;
+
+/**
+ * It adapts any GreaterEqualThanAtom to the operator &gt;= of SPARQL.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class GreaterEqualThanAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnsupportedTypeForExportException,
+                                         UnavailableRuleObjectException {
+
+        org.apache.stanbol.rules.manager.atoms.GreaterEqualThanAtom tmp = (org.apache.stanbol.rules.manager.atoms.GreaterEqualThanAtom) ruleAtom;
+
+        ExpressionAtom argument1 = tmp.getArgument1();
+        ExpressionAtom argument2 = tmp.getArgument2();
+
+        SPARQLObject sparqlArgument1 = adapter.adaptTo(argument1, SPARQLObject.class);
+        SPARQLObject sparqlArgument2 = adapter.adaptTo(argument2, SPARQLObject.class);
+
+        String arg1 = sparqlArgument1.getObject();
+        String arg2 = sparqlArgument2.getObject();
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("(");
+        sb.append(arg1);
+        sb.append(" >= ");
+        sb.append(arg2);
+        sb.append(")");
+
+        return (T) new SPARQLComparison(sb.toString());
+
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/GreaterThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/GreaterThanAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/GreaterThanAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/GreaterThanAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,64 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLComparison;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.ExpressionAtom;
+
+/**
+ * It adapts any GreaterThanAtom to the operator &gt; of SPARQL.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class GreaterThanAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnsupportedTypeForExportException,
+                                         UnavailableRuleObjectException {
+
+        org.apache.stanbol.rules.manager.atoms.GreaterThanAtom tmp = (org.apache.stanbol.rules.manager.atoms.GreaterThanAtom) ruleAtom;
+
+        ExpressionAtom argument1 = tmp.getArgument1();
+        ExpressionAtom argument2 = tmp.getArgument2();
+
+        SPARQLObject sparqlArgument1 = adapter.adaptTo(argument1, SPARQLObject.class);
+        SPARQLObject sparqlArgument2 = adapter.adaptTo(argument2, SPARQLObject.class);
+
+        String arg1 = sparqlArgument1.getObject();
+        String arg2 = sparqlArgument2.getObject();
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("(");
+        sb.append(arg1);
+        sb.append(" > ");
+        sb.append(arg2);
+        sb.append(")");
+
+        return (T) new SPARQLComparison(sb.toString());
+
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/IndividualPropertyAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/IndividualPropertyAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/IndividualPropertyAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/IndividualPropertyAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,51 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLTriple;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+
+/**
+ * It adapts any IndividualPropertyAtom to a triple pattern of SPARQL.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class IndividualPropertyAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnavailableRuleObjectException,
+                                         UnsupportedTypeForExportException {
+
+        org.apache.stanbol.rules.manager.atoms.IndividualPropertyAtom tmp = (org.apache.stanbol.rules.manager.atoms.IndividualPropertyAtom) ruleAtom;
+
+        SPARQLObject sparqlArgument1 = adapter.adaptTo(tmp.getArgument1(), SPARQLObject.class);
+        SPARQLObject sparqlDT = adapter.adaptTo(tmp.getObjectProperty(), SPARQLObject.class);
+        SPARQLObject sparqlArgument2 = adapter.adaptTo(tmp.getArgument2(), SPARQLObject.class);
+
+        return (T) new SPARQLTriple(sparqlArgument1.getObject() + " " + sparqlDT.getObject() + " "
+                                    + sparqlArgument2.getObject());
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/IsBlankAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/IsBlankAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/IsBlankAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/IsBlankAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,52 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLComparison;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.IObjectAtom;
+
+/**
+ * It adapts any IsBlankAtom to the operator isBlank of SPARQL.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class IsBlankAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnavailableRuleObjectException,
+                                         UnsupportedTypeForExportException {
+
+        org.apache.stanbol.rules.manager.atoms.IsBlankAtom tmp = (org.apache.stanbol.rules.manager.atoms.IsBlankAtom) ruleAtom;
+        IObjectAtom argument = tmp.getUriResource();
+
+        SPARQLObject sparqlObject = adapter.adaptTo(argument, SPARQLObject.class);
+
+        String sparql = "isBlank(" + sparqlObject.getObject() + ")";
+
+        return (T) new SPARQLComparison(sparql);
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LengthAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LengthAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LengthAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LengthAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,54 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLFunction;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.StringFunctionAtom;
+
+/**
+ * It adapts any LengthAtom to the <http://www.w3.org/2005/xpath-functions#string-length> function of XPath.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class LengthAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnavailableRuleObjectException,
+                                         UnsupportedTypeForExportException {
+        org.apache.stanbol.rules.manager.atoms.LengthAtom tmp = (org.apache.stanbol.rules.manager.atoms.LengthAtom) ruleAtom;
+
+        StringFunctionAtom argument = tmp.getStringFunctionAtom();
+
+        SPARQLObject sparqlArgument = adapter.adaptTo(argument, SPARQLObject.class);
+
+        String arg = sparqlArgument.getObject();
+
+        String sparql = "<http://www.w3.org/2005/xpath-functions#string-length> (" + arg + ")";
+
+        return (T) new SPARQLFunction(sparql);
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LessEqualThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LessEqualThanAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LessEqualThanAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LessEqualThanAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,65 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLComparison;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.ExpressionAtom;
+
+/**
+ * It adapts any LessEqualThanAtom to the operator &lt;= of SPARQL.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class LessEqualThanAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnavailableRuleObjectException,
+                                         UnsupportedTypeForExportException {
+
+        org.apache.stanbol.rules.manager.atoms.LessEqualThanAtom tmp = (org.apache.stanbol.rules.manager.atoms.LessEqualThanAtom) ruleAtom;
+
+        ExpressionAtom argument1 = tmp.getArgument1();
+        ExpressionAtom argument2 = tmp.getArgument2();
+
+        SPARQLObject sparqlArgument1 = adapter.adaptTo(argument1, SPARQLObject.class);
+        SPARQLObject sparqlArgument2 = adapter.adaptTo(argument2, SPARQLObject.class);
+
+        String arg1 = sparqlArgument1.getObject();
+        String arg2 = sparqlArgument2.getObject();
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("(");
+        sb.append(arg1);
+        sb.append(" <= ");
+        sb.append(arg2);
+        sb.append(")");
+
+        return (T) new SPARQLComparison(sb.toString());
+
+    }
+
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LessThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LessThanAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LessThanAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LessThanAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,63 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLComparison;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.ExpressionAtom;
+
+/**
+ * It adapts any LessThanAtom to the operator &lt; of SPARQL.
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class LessThanAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnavailableRuleObjectException,
+                                         UnsupportedTypeForExportException {
+
+        org.apache.stanbol.rules.manager.atoms.LessThanAtom tmp = (org.apache.stanbol.rules.manager.atoms.LessThanAtom) ruleAtom;
+
+        ExpressionAtom argument1 = tmp.getArgument1();
+        ExpressionAtom argument2 = tmp.getArgument2();
+
+        SPARQLObject sparqlArgument1 = adapter.adaptTo(argument1, SPARQLObject.class);
+        SPARQLObject sparqlArgument2 = adapter.adaptTo(argument2, SPARQLObject.class);
+
+        String arg1 = sparqlArgument1.getObject();
+        String arg2 = sparqlArgument2.getObject();
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("(");
+        sb.append(arg1);
+        sb.append(" < ");
+        sb.append(arg2);
+        sb.append(")");
+
+        return (T) new SPARQLComparison(sb.toString());
+
+    }
+}

Added: incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LetAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LetAtom.java?rev=1306356&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LetAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/src/main/java/org/apache/stanbol/rules/adapters/sparql/atoms/LetAtom.java Wed Mar 28 14:12:33 2012
@@ -0,0 +1,57 @@
+/*
+ * 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.sparql.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.sparql.SPARQLFunction;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.Symbols;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.StringFunctionAtom;
+
+/**
+ * FIXME
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class LetAtom extends AbstractAdaptableAtom {
+
+    @SuppressWarnings("unchecked")
+    @Override
+    public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+                                         UnavailableRuleObjectException,
+                                         UnsupportedTypeForExportException {
+        org.apache.stanbol.rules.manager.atoms.LetAtom tmp = (org.apache.stanbol.rules.manager.atoms.LetAtom) ruleAtom;
+        String variableArgument = tmp.getVariable().toString().replace(Symbols.variablesPrefix, "");
+
+        StringFunctionAtom argument = tmp.getParameterFunctionAtom();
+
+        SPARQLObject sparqlArgument = adapter.adaptTo(argument, SPARQLObject.class);
+
+        String arg = sparqlArgument.getObject();
+
+        String let = "LET (?" + variableArgument + " := " + arg + ")";
+        SPARQLObject sparqlObject = new SPARQLFunction(let);
+        return (T) sparqlObject;
+
+    }
+
+}