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:37:05 UTC
svn commit: r1306377 [1/2] - in
/incubator/stanbol/trunk/rules/adapters/clerezza: ./ 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/m...
Author: anuzzolese
Date: Wed Mar 28 14:37:03 2012
New Revision: 1306377
URL: http://svn.apache.org/viewvc?rev=1306377&view=rev
Log:
[STANBOL-560] Initial commit of the Clerezza Rule adapters.
Added:
incubator/stanbol/trunk/rules/adapters/clerezza/pom.xml
incubator/stanbol/trunk/rules/adapters/clerezza/src/
incubator/stanbol/trunk/rules/adapters/clerezza/src/license/
incubator/stanbol/trunk/rules/adapters/clerezza/src/license/THIRD-PARTY.properties
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdapter.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaSparqlObject.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/BlankNodeAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/ClassAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/ConcatAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/CreateLabelAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DatavaluedPropertyAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DifferentAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DivisionAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/EndsWithAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/GreaterEqualThanAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/GreaterThanAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/IndividualPropertyAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/IsBlankAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LengthAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LessEqualThanAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LessThanAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LetAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LocalNameAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LowerCaseAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/MultiplicationAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/NamespaceAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/NewIRIAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/NewLiteralAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/NotAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/NumberAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/NumericVariableAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/PropStringAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/ResourceAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/SameAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/StartsWithAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/StrAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/StringAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/StringVariableAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/SubstringAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/SubtractionAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/SumAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/TypedLiteralAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/UObjectAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/UnionAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/UpperCaseAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/VariableAtom.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/resources/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/resources/META-INF/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/resources/OSGI-INF/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/resources/OSGI-INF/metatype/
incubator/stanbol/trunk/rules/adapters/clerezza/src/main/resources/OSGI-INF/metatype/metatype.properties
incubator/stanbol/trunk/rules/adapters/clerezza/src/test/
incubator/stanbol/trunk/rules/adapters/clerezza/src/test/java/
incubator/stanbol/trunk/rules/adapters/clerezza/src/test/java/org/
incubator/stanbol/trunk/rules/adapters/clerezza/src/test/java/org/apache/
incubator/stanbol/trunk/rules/adapters/clerezza/src/test/java/org/apache/stanbol/
incubator/stanbol/trunk/rules/adapters/clerezza/src/test/java/org/apache/stanbol/rules/
incubator/stanbol/trunk/rules/adapters/clerezza/src/test/java/org/apache/stanbol/rules/adapters/
incubator/stanbol/trunk/rules/adapters/clerezza/src/test/java/org/apache/stanbol/rules/adapters/clerezza/
incubator/stanbol/trunk/rules/adapters/clerezza/src/test/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdpterTest.java
incubator/stanbol/trunk/rules/adapters/clerezza/src/test/resources/
Modified:
incubator/stanbol/trunk/rules/adapters/clerezza/ (props changed)
Propchange: incubator/stanbol/trunk/rules/adapters/clerezza/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Mar 28 14:37:03 2012
@@ -0,0 +1,5 @@
+.classpath
+.project
+.settings
+.DS_Store
+target
Added: incubator/stanbol/trunk/rules/adapters/clerezza/pom.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/pom.xml?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/pom.xml (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/pom.xml Wed Mar 28 14:37:03 2012
@@ -0,0 +1,104 @@
+<?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.clerezza</artifactId>
+ <packaging>bundle</packaging>
+
+ <name>Apache Stanbol Rules - Clerezza Adapters</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.clerezza.*
+ </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>
+
+
+ <!-- Persistence deps -->
+ <dependency>
+ <groupId>org.apache.clerezza</groupId>
+ <artifactId>rdf.core</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/clerezza/src/license/THIRD-PARTY.properties
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/license/THIRD-PARTY.properties?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/license/THIRD-PARTY.properties (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/license/THIRD-PARTY.properties Wed Mar 28 14:37:03 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/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdapter.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdapter.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdapter.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaAdapter.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,279 @@
+/*
+ * 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.clerezza;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.clerezza.rdf.core.sparql.query.TriplePattern;
+import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleGroupGraphPattern;
+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.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 Rule Adapter for Clerezza.<br/>
+ * This adapter allows to convert Stanbol Rules to Clerezza {@link ConstructQuery} objects.
+ *
+ * @author anuzzolese
+ *
+ */
+
+@Component(immediate = true, metatype = true)
+@Service(RuleAdapter.class)
+public class ClerezzaAdapter extends AbstractRuleAdapter {
+
+ public static final String ARTIFACT = "org.apache.stanbol.rules.adapters.clerezza.atoms";
+
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ @Reference
+ RuleStore ruleStore;
+
+ @Reference
+ RuleAdaptersFactory ruleAdaptersFactory;
+
+ /**
+ * For OSGi environments.
+ */
+ public ClerezzaAdapter() {
+
+ }
+
+ /**
+ * For non-OSGi environments.
+ */
+ public ClerezzaAdapter(Dictionary<String,Object> configuration,
+ RuleStore ruleStore,
+ RuleAdaptersFactory ruleAdaptersFactory) {
+ this.ruleStore = ruleStore;
+ this.ruleAdaptersFactory = ruleAdaptersFactory;
+
+ try {
+ activate(configuration);
+ } catch (IOException e) {
+ log.error("Failed to load configuration");
+ }
+
+ try {
+ this.ruleAdaptersFactory.addRuleAdapter(this);
+ } catch (UnavailableRuleObjectException e) {
+ log.error("Failed to add the adapter to the registry.", e);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected <T> T adaptRecipeTo(Recipe recipe, Class<T> type) throws RuleAtomCallExeption,
+ UnsupportedTypeForExportException,
+ UnavailableRuleObjectException {
+
+ List<ConstructQuery> constructQueries = null;
+
+ if (type == ConstructQuery.class) {
+
+ constructQueries = new ArrayList<ConstructQuery>();
+
+ RuleList ruleList = recipe.getRuleList();
+ Iterator<Rule> ruleIterator = ruleList.iterator();
+
+ for (int i = 0; ruleIterator.hasNext(); i++) {
+ constructQueries.add((ConstructQuery) adaptRuleTo(ruleIterator.next(), type));
+ }
+
+ } else {
+ throw new UnsupportedTypeForExportException(
+ "The adapter for Clerezza does not support the selected serialization : "
+ + type.getCanonicalName());
+ }
+
+ return (T) constructQueries;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected <T> T adaptRuleTo(Rule rule, Class<T> type) throws RuleAtomCallExeption,
+ UnsupportedTypeForExportException,
+ UnavailableRuleObjectException {
+
+ Set<TriplePattern> triplePatterns = new HashSet<TriplePattern>();
+
+ List<Expression> expressions = new ArrayList<Expression>();
+
+ Iterator<RuleAtom> it = rule.getBody().iterator();
+ while (it.hasNext()) {
+ RuleAtom ruleAtom = it.next();
+ ClerezzaSparqlObject clerezzaSparqlObject = null;
+
+ clerezzaSparqlObject = (ClerezzaSparqlObject) adaptRuleAtomTo(ruleAtom, type);
+
+ Object clerezzaObj = clerezzaSparqlObject.getClerezzaObject();
+ if (clerezzaObj instanceof TriplePattern) {
+ triplePatterns.add((TriplePattern) clerezzaObj);
+ } else if (clerezzaObj instanceof Expression) {
+ expressions.add((Expression) clerezzaObj);
+ }
+ }
+
+ SimpleGroupGraphPattern groupGraphPattern = new SimpleGroupGraphPattern();
+
+ groupGraphPattern.addTriplePatterns(triplePatterns);
+
+ for (Expression expression : expressions) {
+ groupGraphPattern.addConstraint(expression);
+ }
+
+ triplePatterns = new HashSet<TriplePattern>();
+ it = rule.getHead().iterator();
+ while (it.hasNext()) {
+
+ RuleAtom ruleAtom = it.next();
+
+ ClerezzaSparqlObject clerezzaSparqlObject = (ClerezzaSparqlObject) adaptRuleAtomTo(ruleAtom, type);
+ triplePatterns.add((TriplePattern) clerezzaSparqlObject.getClerezzaObject());
+
+ }
+
+ SimpleConstructQuery constructQuery = new SimpleConstructQuery(triplePatterns);
+ constructQuery.setQueryPattern(groupGraphPattern);
+
+ return (T) constructQuery;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected <T> T adaptRuleAtomTo(RuleAtom ruleAtom, Class<T> type) throws RuleAtomCallExeption,
+ UnsupportedTypeForExportException,
+ UnavailableRuleObjectException {
+
+ if (type == ConstructQuery.class) {
+
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
+
+ String className = ruleAtom.getClass().getSimpleName();
+
+ String canonicalName = ARTIFACT + "." + className;
+
+ try {
+ Class<AdaptableAtom> clerezzaAtomClass = (Class<AdaptableAtom>) loader
+ .loadClass(canonicalName);
+
+ try {
+ AdaptableAtom clerezzaAtom = clerezzaAtomClass.newInstance();
+
+ clerezzaAtom.setRuleAdapter(this);
+
+ return (T) clerezzaAtom.adapt(ruleAtom);
+
+ } catch (InstantiationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IllegalAccessException 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;
+
+ }
+
+ /**
+ * Used to configure an instance within an OSGi container.
+ *
+ * @throws IOException
+ */
+ @SuppressWarnings("unchecked")
+ @Activate
+ protected void activate(ComponentContext context) throws IOException {
+
+ log.info("in " + ClerezzaAdapter.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("The Clerezza adapter for Stanbol Rules is active", this);
+ }
+
+ @Deactivate
+ protected void deactivate(ComponentContext context) {
+ log.info("in " + ClerezzaAdapter.class + " deactivate with context " + context);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> Class<T> getExportClass() {
+ return (Class<T>) ConstructQuery.class;
+ }
+
+ @Override
+ public <T> boolean canAdaptTo(Adaptable adaptable, Class<T> type) {
+ if(type == ConstructQuery.class){
+ return true;
+ }
+ else{
+ return false;
+ }
+ }
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaSparqlObject.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaSparqlObject.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaSparqlObject.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/ClerezzaSparqlObject.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,71 @@
+/*
+ * 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.clerezza;
+
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.clerezza.rdf.core.sparql.query.TriplePattern;
+
+/**
+ *
+ * This object represents either a {@link TriplePattern} or an {@link Expression} or a {@link UriRef}
+ * internally to the Clerezza adpter.
+ *
+ * @author anuzzolese
+ *
+ */
+public class ClerezzaSparqlObject {
+
+ private TriplePattern triplePattern;
+ private Expression expression;
+ private UriRef uriRef;
+
+ public ClerezzaSparqlObject(TriplePattern triplePattern) {
+ this.triplePattern = triplePattern;
+ }
+
+ public ClerezzaSparqlObject(Expression expression) {
+ this.expression = expression;
+ }
+
+ public ClerezzaSparqlObject(UriRef uriRef) {
+ this.uriRef = uriRef;
+ }
+
+ /**
+ * It returns the actual Clerezza value.<br/>
+ *
+ * It can be:
+ * <ul>
+ * <li>a {@link TriplePattern}
+ * <li>an {@link Expression}
+ * <li>a {@link UriRef}
+ *
+ * @return the object that can be in turn a {@link TriplePattern}, an {@link Expression}, and a
+ * {@link UriRef}
+ */
+ public Object getClerezzaObject() {
+ if (triplePattern != null) {
+ return triplePattern;
+ } else if (expression != null) {
+ return expression;
+ } else {
+ return uriRef;
+ }
+ }
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/BlankNodeAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/BlankNodeAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/BlankNodeAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/BlankNodeAtom.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,69 @@
+/*
+ * 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.clerezza.atoms;
+
+import org.apache.clerezza.rdf.core.BNode;
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.ResourceOrVariable;
+import org.apache.clerezza.rdf.core.sparql.query.UriRefOrVariable;
+import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleTriplePattern;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 BlankNodeAtom to a simple triple pattern in Clerezza.
+ *
+ * @author anuzzolese
+ *
+ */
+public class BlankNodeAtom extends AbstractAdaptableAtom {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+ UnavailableRuleObjectException,
+ UnsupportedTypeForExportException {
+
+ org.apache.stanbol.rules.manager.atoms.BlankNodeAtom tmp = (org.apache.stanbol.rules.manager.atoms.BlankNodeAtom) ruleAtom;
+
+ UriRefOrVariable subject;
+ UriRefOrVariable predicate;
+ ResourceOrVariable object;
+
+ IObjectAtom argument2UriResource = tmp.getArgument2();
+ IObjectAtom argument1UriResource = tmp.getArgument1();
+
+ ClerezzaSparqlObject subjectCSO = (ClerezzaSparqlObject) adapter.adaptTo(argument2UriResource,
+ ConstructQuery.class);
+ ClerezzaSparqlObject predicateCSO = (ClerezzaSparqlObject) adapter.adaptTo(argument1UriResource,
+ ConstructQuery.class);
+
+ subject = new UriRefOrVariable((UriRef) subjectCSO.getClerezzaObject());
+ predicate = new UriRefOrVariable((UriRef) predicateCSO.getClerezzaObject());
+ object = new ResourceOrVariable(new BNode());
+
+ return (T) new ClerezzaSparqlObject(new SimpleTriplePattern(subject, predicate, object));
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/ClassAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/ClassAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/ClassAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/ClassAtom.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,85 @@
+/*
+ * 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.clerezza.atoms;
+
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.ResourceOrVariable;
+import org.apache.clerezza.rdf.core.sparql.query.UriRefOrVariable;
+import org.apache.clerezza.rdf.core.sparql.query.Variable;
+import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleTriplePattern;
+import org.apache.clerezza.rdf.ontologies.RDF;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 ClassAtom to a simple triple pattern in Clerezza.
+ *
+ * @author anuzzolese
+ *
+ */
+public class ClassAtom extends AbstractAdaptableAtom {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+ UnavailableRuleObjectException,
+ UnsupportedTypeForExportException {
+
+ org.apache.stanbol.rules.manager.atoms.ClassAtom tmp = (org.apache.stanbol.rules.manager.atoms.ClassAtom) ruleAtom;
+
+ IObjectAtom argument1 = tmp.getArgument1();
+ IObjectAtom classResource = tmp.getClassResource();
+
+ ClerezzaSparqlObject argumentCSO = (ClerezzaSparqlObject) adapter.adaptTo(argument1,
+ ConstructQuery.class);
+ ClerezzaSparqlObject classCSO = (ClerezzaSparqlObject) adapter.adaptTo(classResource,
+ ConstructQuery.class);
+
+ UriRefOrVariable subject;
+ UriRefOrVariable predicate = new UriRefOrVariable(RDF.type);
+ ResourceOrVariable object;
+
+ Object arg = argumentCSO.getClerezzaObject();
+ Object cl = classCSO.getClerezzaObject();
+
+ if (arg instanceof Variable) {
+ subject = new UriRefOrVariable((Variable) arg);
+ } else if (arg instanceof UriRef) {
+ subject = new UriRefOrVariable((UriRef) arg);
+ } else {
+ throw new RuleAtomCallExeption(getClass());
+ }
+
+ if (cl instanceof Variable) {
+ object = new ResourceOrVariable((Variable) cl);
+ } else if (cl instanceof UriRef) {
+ object = new ResourceOrVariable((UriRef) cl);
+ } else {
+ throw new RuleAtomCallExeption(getClass());
+ }
+
+ return (T) new ClerezzaSparqlObject(new SimpleTriplePattern(subject, predicate, object));
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/ConcatAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/ConcatAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/ConcatAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/ConcatAtom.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,69 @@
+/*
+ * 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.clerezza.atoms;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.clerezza.rdf.core.sparql.query.FunctionCall;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 XPath function <http://www.w3.org/2005/xpath-functions#concat> in Clerezza.
+ *
+ * @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;
+
+ StringFunctionAtom argument1Atom = tmp.getArgument1();
+ StringFunctionAtom argument2Atom = tmp.getArgument2();
+
+ ClerezzaSparqlObject argument1 = (ClerezzaSparqlObject) adapter.adaptTo(argument1Atom,
+ ConstructQuery.class);
+ ClerezzaSparqlObject argument2 = (ClerezzaSparqlObject) adapter.adaptTo(argument2Atom,
+ ConstructQuery.class);
+
+ List<Expression> argumentExpressions = new ArrayList<Expression>();
+ argumentExpressions.add((Expression) argument1.getClerezzaObject());
+ argumentExpressions.add((Expression) argument2.getClerezzaObject());
+
+ FunctionCall functionCall = new FunctionCall(new UriRef(
+ "<http://www.w3.org/2005/xpath-functions#concat>"), argumentExpressions);
+
+ return (T) new ClerezzaSparqlObject(functionCall);
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/CreateLabelAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/CreateLabelAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/CreateLabelAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/CreateLabelAtom.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,35 @@
+/*
+ * 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.clerezza.atoms;
+
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+
+/**
+ * FIXME
+ *
+ * @author anuzzolese
+ *
+ */
+public class CreateLabelAtom extends AbstractAdaptableAtom {
+
+ @Override
+ public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption {
+ throw new org.apache.stanbol.rules.base.api.RuleAtomCallExeption(getClass());
+ }
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DatavaluedPropertyAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DatavaluedPropertyAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DatavaluedPropertyAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DatavaluedPropertyAtom.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,96 @@
+/*
+ * 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.clerezza.atoms;
+
+import org.apache.clerezza.rdf.core.Literal;
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.ResourceOrVariable;
+import org.apache.clerezza.rdf.core.sparql.query.UriRefOrVariable;
+import org.apache.clerezza.rdf.core.sparql.query.Variable;
+import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleTriplePattern;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 DatavaluedPropertyAtom to a simple triple pattern in Clerezza.
+ *
+ * @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;
+
+ IObjectAtom argument1 = tmp.getArgument1();
+ IObjectAtom datatypeProperty = tmp.getDatatypeProperty();
+ RuleAtom argument2 = tmp.getArgument2();
+
+ ClerezzaSparqlObject argument1CSO = (ClerezzaSparqlObject) adapter.adaptTo(argument1,
+ ConstructQuery.class);
+ ClerezzaSparqlObject datatypePropertyCSO = (ClerezzaSparqlObject) adapter.adaptTo(datatypeProperty,
+ ConstructQuery.class);
+ ClerezzaSparqlObject argument2CSO = (ClerezzaSparqlObject) adapter.adaptTo(argument2,
+ ConstructQuery.class);
+
+ Object arg1 = argument1CSO.getClerezzaObject();
+ Object dt = datatypePropertyCSO.getClerezzaObject();
+ Object arg2 = argument2CSO.getClerezzaObject();
+
+ UriRefOrVariable subject;
+ UriRefOrVariable predicate;
+ ResourceOrVariable object;
+
+ if (arg1 instanceof Variable) {
+ subject = new UriRefOrVariable((Variable) arg1);
+ } else if (arg1 instanceof UriRef) {
+ subject = new UriRefOrVariable((UriRef) arg1);
+ } else {
+ throw new RuleAtomCallExeption(getClass());
+ }
+
+ if (dt instanceof Variable) {
+ predicate = new UriRefOrVariable((Variable) dt);
+ } else if (dt instanceof UriRef) {
+ predicate = new UriRefOrVariable((UriRef) dt);
+ } else {
+ throw new RuleAtomCallExeption(getClass());
+ }
+
+ if (arg2 instanceof Variable) {
+ object = new ResourceOrVariable((Variable) arg2);
+ } else if (dt instanceof Literal) {
+ object = new ResourceOrVariable((Literal) arg2);
+ } else {
+ throw new RuleAtomCallExeption(getClass());
+ }
+
+ return (T) new ClerezzaSparqlObject(new SimpleTriplePattern(subject, predicate, object));
+
+ }
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DifferentAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DifferentAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DifferentAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DifferentAtom.java Wed Mar 28 14:37:03 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.clerezza.atoms;
+
+import org.apache.clerezza.rdf.core.sparql.query.BinaryOperation;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 not equal to (!=) binary operation in Clerezza.
+ *
+ * @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 stringFunctionAtom1 = tmp.getStringFunctionAtom1();
+ ExpressionAtom stringFunctionAtom2 = tmp.getStringFunctionAtom1();
+
+ ClerezzaSparqlObject argument1 = (ClerezzaSparqlObject) adapter.adaptTo(stringFunctionAtom1,
+ ConstructQuery.class);
+ ClerezzaSparqlObject argument2 = (ClerezzaSparqlObject) adapter.adaptTo(stringFunctionAtom2,
+ ConstructQuery.class);
+
+ Expression lhe = (Expression) argument1.getClerezzaObject();
+ Expression rhe = (Expression) argument2.getClerezzaObject();
+
+ BinaryOperation binaryOperation = new BinaryOperation("!=", lhe, rhe);
+
+ return (T) new ClerezzaSparqlObject(binaryOperation);
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DivisionAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DivisionAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DivisionAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/DivisionAtom.java Wed Mar 28 14:37:03 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.clerezza.atoms;
+
+import org.apache.clerezza.rdf.core.sparql.query.BinaryOperation;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 division (/) binary operation in Clerezza.
+ *
+ * @author anuzzolese
+ *
+ */
+public class DivisionAtom extends AbstractAdaptableAtom {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+ UnavailableRuleObjectException,
+ UnsupportedTypeForExportException {
+
+ org.apache.stanbol.rules.manager.atoms.DivisionAtom tmp = (org.apache.stanbol.rules.manager.atoms.DivisionAtom) ruleAtom;
+
+ NumericFunctionAtom numericFunctionAtom1 = tmp.getNumericFunctionAtom1();
+ NumericFunctionAtom numericFunctionAtom2 = tmp.getNumericFunctionAtom2();
+
+ ClerezzaSparqlObject argument1 = (ClerezzaSparqlObject) adapter.adaptTo(numericFunctionAtom1,
+ ConstructQuery.class);
+ ClerezzaSparqlObject argument2 = (ClerezzaSparqlObject) adapter.adaptTo(numericFunctionAtom2,
+ ConstructQuery.class);
+
+ Expression lhsOperand = (Expression) argument1.getClerezzaObject();
+ Expression rhsOperand = (Expression) argument2.getClerezzaObject();
+
+ BinaryOperation binaryOperation = new BinaryOperation("/", lhsOperand, rhsOperand);
+
+ return (T) new ClerezzaSparqlObject(binaryOperation);
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/EndsWithAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/EndsWithAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/EndsWithAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/EndsWithAtom.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,69 @@
+/*
+ * 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.clerezza.atoms;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.clerezza.rdf.core.sparql.query.FunctionCall;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 XPath function call <http://www.w3.org/2005/xpath-functions#ends-with> in
+ * Clerezza.
+ *
+ * @author anuzzolese
+ *
+ */
+public class EndsWithAtom extends AbstractAdaptableAtom {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+ UnavailableRuleObjectException,
+ UnsupportedTypeForExportException {
+
+ org.apache.stanbol.rules.manager.atoms.EndsWithAtom tmp = (org.apache.stanbol.rules.manager.atoms.EndsWithAtom) ruleAtom;
+
+ StringFunctionAtom argument = tmp.getArgument();
+ StringFunctionAtom term = tmp.getTerm();
+
+ ClerezzaSparqlObject argument1 = (ClerezzaSparqlObject) adapter.adaptTo(argument,
+ ConstructQuery.class);
+ ClerezzaSparqlObject argument2 = (ClerezzaSparqlObject) adapter.adaptTo(term, ConstructQuery.class);
+
+ List<Expression> argumentExpressions = new ArrayList<Expression>();
+ argumentExpressions.add((Expression) argument1.getClerezzaObject());
+ argumentExpressions.add((Expression) argument2.getClerezzaObject());
+
+ FunctionCall functionCall = new FunctionCall(new UriRef(
+ "<http://www.w3.org/2005/xpath-functions#ends-with>"), argumentExpressions);
+
+ return (T) new ClerezzaSparqlObject(functionCall);
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/GreaterEqualThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/GreaterEqualThanAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/GreaterEqualThanAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/GreaterEqualThanAtom.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,62 @@
+/*
+ * 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.clerezza.atoms;
+
+import org.apache.clerezza.rdf.core.sparql.query.BinaryOperation;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 greater equal than (>=) binary operation for comparison in
+ * Clerezza.
+ *
+ * @author anuzzolese
+ *
+ */
+public class GreaterEqualThanAtom extends AbstractAdaptableAtom {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+ UnavailableRuleObjectException,
+ UnsupportedTypeForExportException {
+
+ org.apache.stanbol.rules.manager.atoms.GreaterEqualThanAtom tmp = (org.apache.stanbol.rules.manager.atoms.GreaterEqualThanAtom) ruleAtom;
+
+ ExpressionAtom argument1 = tmp.getArgument1();
+ ExpressionAtom argument2 = tmp.getArgument2();
+
+ ClerezzaSparqlObject clerezzaArgument1 = (ClerezzaSparqlObject) adapter.adaptTo(argument1,
+ ConstructQuery.class);
+ ClerezzaSparqlObject clerezzaArgument2 = (ClerezzaSparqlObject) adapter.adaptTo(argument2,
+ ConstructQuery.class);
+
+ Expression lhe = (Expression) clerezzaArgument1.getClerezzaObject();
+ Expression rhe = (Expression) clerezzaArgument2.getClerezzaObject();
+
+ return (T) new ClerezzaSparqlObject(new BinaryOperation(">=", lhe, rhe));
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/GreaterThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/GreaterThanAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/GreaterThanAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/GreaterThanAtom.java Wed Mar 28 14:37:03 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.clerezza.atoms;
+
+import org.apache.clerezza.rdf.core.sparql.query.BinaryOperation;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 greater than (>) binary operation for comparison in Clerezza.
+ *
+ * @author anuzzolese
+ *
+ */
+public class GreaterThanAtom extends AbstractAdaptableAtom {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T adapt(RuleAtom ruleAtom) throws RuleAtomCallExeption,
+ UnavailableRuleObjectException,
+ UnsupportedTypeForExportException {
+
+ org.apache.stanbol.rules.manager.atoms.GreaterThanAtom tmp = (org.apache.stanbol.rules.manager.atoms.GreaterThanAtom) ruleAtom;
+
+ ExpressionAtom argument1 = tmp.getArgument1();
+ ExpressionAtom argument2 = tmp.getArgument2();
+
+ ClerezzaSparqlObject clerezzaArgument1 = (ClerezzaSparqlObject) adapter.adaptTo(argument1,
+ ConstructQuery.class);
+ ClerezzaSparqlObject clerezzaArgument2 = (ClerezzaSparqlObject) adapter.adaptTo(argument2,
+ ConstructQuery.class);
+
+ Expression lhe = (Expression) clerezzaArgument1.getClerezzaObject();
+ Expression rhe = (Expression) clerezzaArgument2.getClerezzaObject();
+
+ return (T) new ClerezzaSparqlObject(new BinaryOperation(">", lhe, rhe));
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/IndividualPropertyAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/IndividualPropertyAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/IndividualPropertyAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/IndividualPropertyAtom.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,96 @@
+/*
+ * 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.clerezza.atoms;
+
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.ResourceOrVariable;
+import org.apache.clerezza.rdf.core.sparql.query.UriRefOrVariable;
+import org.apache.clerezza.rdf.core.sparql.query.Variable;
+import org.apache.clerezza.rdf.core.sparql.query.impl.SimpleTriplePattern;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 IndividualPropertyAtom to a simple triple pattern in Clerezza.
+ *
+ * @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;
+
+ IObjectAtom argument1 = tmp.getArgument1();
+ IObjectAtom objectProperty = tmp.getObjectProperty();
+ IObjectAtom argument2 = tmp.getArgument2();
+
+ ClerezzaSparqlObject argument1CSO = (ClerezzaSparqlObject) adapter.adaptTo(argument1,
+ ConstructQuery.class);
+ ClerezzaSparqlObject datatypePropertyCSO = (ClerezzaSparqlObject) adapter.adaptTo(objectProperty,
+ ConstructQuery.class);
+ ClerezzaSparqlObject argument2CSO = (ClerezzaSparqlObject) adapter.adaptTo(argument2,
+ ConstructQuery.class);
+
+ Object arg1 = argument1CSO.getClerezzaObject();
+ Object dt = datatypePropertyCSO.getClerezzaObject();
+ Object arg2 = argument2CSO.getClerezzaObject();
+
+ UriRefOrVariable subject;
+ UriRefOrVariable predicate;
+ ResourceOrVariable object;
+
+ if (arg1 instanceof Variable) {
+ subject = new UriRefOrVariable((Variable) arg1);
+ } else if (arg1 instanceof UriRef) {
+ subject = new UriRefOrVariable((UriRef) arg1);
+ } else {
+ throw new RuleAtomCallExeption(getClass());
+ }
+
+ if (dt instanceof Variable) {
+ predicate = new UriRefOrVariable((Variable) dt);
+ } else if (dt instanceof UriRef) {
+ predicate = new UriRefOrVariable((UriRef) dt);
+ } else {
+ throw new RuleAtomCallExeption(getClass());
+ }
+
+ if (arg2 instanceof Variable) {
+ object = new UriRefOrVariable((Variable) arg2);
+ } else if (dt instanceof UriRef) {
+ object = new UriRefOrVariable((UriRef) arg2);
+ } else {
+ throw new RuleAtomCallExeption(getClass());
+ }
+
+ return (T) new ClerezzaSparqlObject(new SimpleTriplePattern(subject, predicate, object));
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/IsBlankAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/IsBlankAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/IsBlankAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/IsBlankAtom.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,76 @@
+/*
+ * 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.clerezza.atoms;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.sparql.query.BuiltInCall;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.clerezza.rdf.core.sparql.query.UriRefExpression;
+import org.apache.clerezza.rdf.core.sparql.query.Variable;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 LengthAtom to the <code>isBLANK</code> built in callin Clerezza.
+ *
+ * @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 uriResource = tmp.getUriResource();
+
+ ClerezzaSparqlObject argumentCSO = (ClerezzaSparqlObject) adapter.adaptTo(uriResource,
+ ConstructQuery.class);
+ ;
+
+ Object arg = argumentCSO.getClerezzaObject();
+
+ Expression argumentExpression;
+ if (arg instanceof Variable) {
+ argumentExpression = (Variable) arg;
+ } else if (arg instanceof UriRef) {
+ argumentExpression = new UriRefExpression((UriRef) arg);
+ } else {
+ throw new RuleAtomCallExeption(getClass());
+ }
+
+ List<Expression> expressions = new ArrayList<Expression>();
+ expressions.add(argumentExpression);
+
+ return (T) new ClerezzaSparqlObject(new BuiltInCall("isBLANK", expressions));
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LengthAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LengthAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LengthAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LengthAtom.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,66 @@
+/*
+ * 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.clerezza.atoms;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.clerezza.rdf.core.sparql.query.FunctionCall;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 XPath function <http://www.w3.org/2005/xpath-functions#string-length> in
+ * Clerezza.
+ *
+ * @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();
+
+ ClerezzaSparqlObject argument1 = (ClerezzaSparqlObject) adapter.adaptTo(argument,
+ ConstructQuery.class);
+
+ List<Expression> argumentExpressions = new ArrayList<Expression>();
+ argumentExpressions.add((Expression) argument1.getClerezzaObject());
+
+ FunctionCall functionCall = new FunctionCall(new UriRef(
+ "<http://www.w3.org/2005/xpath-functions#string-length>"), argumentExpressions);
+
+ return (T) new ClerezzaSparqlObject(functionCall);
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LessEqualThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LessEqualThanAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LessEqualThanAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LessEqualThanAtom.java Wed Mar 28 14:37:03 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.clerezza.atoms;
+
+import org.apache.clerezza.rdf.core.sparql.query.BinaryOperation;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 less equal than (<=) binary operation for comparison in Clerezza.
+ *
+ * @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();
+
+ ClerezzaSparqlObject clerezzaArgument1 = (ClerezzaSparqlObject) adapter.adaptTo(argument1,
+ ConstructQuery.class);
+ ClerezzaSparqlObject clerezzaArgument2 = (ClerezzaSparqlObject) adapter.adaptTo(argument2,
+ ConstructQuery.class);
+
+ Expression lhe = (Expression) clerezzaArgument1.getClerezzaObject();
+ Expression rhe = (Expression) clerezzaArgument2.getClerezzaObject();
+
+ return (T) new ClerezzaSparqlObject(new BinaryOperation("<=", lhe, rhe));
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LessThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LessThanAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LessThanAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LessThanAtom.java Wed Mar 28 14:37:03 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.clerezza.atoms;
+
+import org.apache.clerezza.rdf.core.sparql.query.BinaryOperation;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+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 less than (<) binary operation for comparison in Clerezza.
+ *
+ * @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();
+
+ ClerezzaSparqlObject clerezzaArgument1 = (ClerezzaSparqlObject) adapter.adaptTo(argument1,
+ ConstructQuery.class);
+ ClerezzaSparqlObject clerezzaArgument2 = (ClerezzaSparqlObject) adapter.adaptTo(argument2,
+ ConstructQuery.class);
+
+ Expression lhe = (Expression) clerezzaArgument1.getClerezzaObject();
+ Expression rhe = (Expression) clerezzaArgument2.getClerezzaObject();
+
+ return (T) new ClerezzaSparqlObject(new BinaryOperation("<", lhe, rhe));
+
+ }
+
+}
Added: incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LetAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LetAtom.java?rev=1306377&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LetAtom.java (added)
+++ incubator/stanbol/trunk/rules/adapters/clerezza/src/main/java/org/apache/stanbol/rules/adapters/clerezza/atoms/LetAtom.java Wed Mar 28 14:37:03 2012
@@ -0,0 +1,80 @@
+/*
+ * 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.clerezza.atoms;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.clerezza.rdf.core.sparql.query.BuiltInCall;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.clerezza.rdf.core.sparql.query.Expression;
+import org.apache.clerezza.rdf.core.sparql.query.Variable;
+import org.apache.stanbol.rules.adapters.AbstractAdaptableAtom;
+import org.apache.stanbol.rules.adapters.clerezza.ClerezzaSparqlObject;
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.URIResource;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.atoms.StringFunctionAtom;
+import org.apache.stanbol.rules.manager.atoms.VariableAtom;
+
+/**
+ * It adapts any LetAtom to the IRI built in call in Clerezza.
+ *
+ * @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;
+
+ StringFunctionAtom parameterFunctionAtom = tmp.getParameterFunctionAtom();
+ URIResource variableUriResource = tmp.getVariable();
+
+ ClerezzaSparqlObject iriArgument;
+
+ iriArgument = (ClerezzaSparqlObject) adapter.adaptTo(parameterFunctionAtom, ConstructQuery.class);
+
+ List<Expression> iriArgumentExpressions = new ArrayList<Expression>();
+ iriArgumentExpressions.add((Expression) iriArgument.getClerezzaObject());
+
+ BuiltInCall iriBuiltInCall = new BuiltInCall("IRI", iriArgumentExpressions);
+
+ if (variableUriResource instanceof VariableAtom) {
+ String variableName = ((VariableAtom) variableUriResource).getVariableName();
+ Variable variable = new Variable(variableName);
+
+ List<Expression> bindArgumentExpressions = new ArrayList<Expression>();
+ bindArgumentExpressions.add(iriBuiltInCall);
+ bindArgumentExpressions.add(variable);
+
+ BuiltInCall bindBuiltInCall = new BuiltInCall("BIND", iriArgumentExpressions);
+
+ return (T) new ClerezzaSparqlObject(bindBuiltInCall);
+ } else {
+ throw new org.apache.stanbol.rules.base.api.RuleAtomCallExeption(getClass());
+ }
+ }
+
+}