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:35:28 UTC
svn commit: r1306375 [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:35:26 2012
New Revision: 1306375
URL: http://svn.apache.org/viewvc?rev=1306375&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:35:26 2012
@@ -0,0 +1,5 @@
+.classpath
+.project
+.settings
+.DS_Store
+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=1306375&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/sparql/pom.xml (added)
+++ incubator/stanbol/trunk/rules/adapters/sparql/pom.xml Wed Mar 28 14:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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 >= 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=1306375&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:35:26 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 > 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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=1306375&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:35:26 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 <= 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=1306375&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:35:26 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 < 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=1306375&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:35:26 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;
+
+ }
+
+}