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 2011/03/04 16:27:26 UTC

svn commit: r1078000 [1/3] - in /incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules: ./ arqextention/ atoms/ parser/

Author: anuzzolese
Date: Fri Mar  4 15:27:24 2011
New Revision: 1078000

URL: http://svn.apache.org/viewvc?rev=1078000&view=rev
Log:
STANBOL-108 Added classes and methods for KReS rules in order to have
	- forward chaining
	- productive rules
	- string comparison
	- some string facilities (i.e. starts-with, ends-with, lowercase, uppercase, etc...)
	- numerical functions
	- reflexive rules

Added:
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLComparison.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLFunction.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLNot.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLTriple.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/Concat.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreatePropertyURIStringFromLabel.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreateStandardLabel.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreateURI.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/BlankNodeAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ComparisonAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ConcatAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/CreateLabelAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/DifferentAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/EndsWithAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/GreaterThanAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/IsBlankAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSBlankNode.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSCoreAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSTypedLiteral.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LengthAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LessThanAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LetAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LocalNameAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LowerCaseAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/NamespaceAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/NewNodeAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/NotAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/NumberAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/NumericFunctionAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/PropStringAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/SPARQLConstructAtomAbstract.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/SPARQLDeleteAtomAbstract.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/SPARQLDeleteDataAtomAbstract.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/SPARQLcAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/SPARQLdAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/SPARQLddAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/SameAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/StartsWithAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/StrAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/StringAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/StringFunctionAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/SubstringAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/SubtractionAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/SumAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/UObjectAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/UnionAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/UpperCaseAtom.java
Modified:
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/KReSKB.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/KReSRuleImpl.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ClassAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/DatavaluedPropertyAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/IndividualPropertyAtom.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSResource.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSVariable.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/parser/KReSRuleGrammar.jj
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/parser/KReSRuleParser.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/parser/KReSRuleParserConstants.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/parser/KReSRuleParserTokenManager.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/parser/ParseException.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/parser/SimpleCharStream.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/parser/Token.java
    incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/parser/TokenMgrError.java

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/KReSKB.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/KReSKB.java?rev=1078000&r1=1077999&r2=1078000&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/KReSKB.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/KReSKB.java Fri Mar  4 15:27:24 2011
@@ -1,5 +1,8 @@
 package eu.iksproject.kres.rules;
 
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.OutputStream;
 import java.util.Hashtable;
 
 import org.slf4j.Logger;
@@ -8,7 +11,7 @@ import org.slf4j.LoggerFactory;
 import com.hp.hpl.jena.ontology.OntModel;
 
 import eu.iksproject.kres.api.rules.KReSRule;
-import eu.iksproject.kres.api.rules.util.KReSRuleList;
+import eu.iksproject.kres.api.rules.util.KReSRuleList;;
 /**
  * 
  * FIXME
@@ -47,6 +50,7 @@ public class KReSKB {
 	}
 	
 	public void addRule(KReSRule kReSRule){
+		System.out.println("Adding rule to Head");
 		kReSRuleList.add(kReSRule);
 	}
 	
@@ -54,4 +58,55 @@ public class KReSKB {
 		return kReSRuleList;
 	}
 	
+	public String toSPARQL(){
+		String sparql = null;
+		if(kReSRuleList != null){
+			boolean firstIteration = true;
+			for(KReSRule kReSRule : kReSRuleList){
+				if(firstIteration){
+					firstIteration = false;
+				}
+				else{
+					sparql += " . ";
+				}
+				sparql += kReSRule.toSPARQL();
+			}
+		}
+		
+		return sparql;
+	}
+	
+	public void write(OutputStream outputStream) throws IOException{
+		boolean firstIt = true;
+		for(KReSRule kReSRule : kReSRuleList){
+			
+			String rule;
+			
+			if(firstIt){
+				rule = kReSRule.toKReSSyntax();
+				
+				firstIt = false;
+			}
+			else{
+				rule = " . " + System.getProperty("line.separator") + kReSRule.toKReSSyntax();
+			}
+			outputStream.write(rule.getBytes());
+		}
+		outputStream.close();
+	}
+	
+	public void write(FileWriter fileWriter) throws IOException{
+		boolean write = true;
+		for(KReSRule kReSRule : kReSRuleList){
+			if(write){
+				fileWriter.write(kReSRule.toKReSSyntax());
+				write = false;
+			}
+			else{
+				fileWriter.write(" . " + System.getProperty("line.separator") + kReSRule.toKReSSyntax());
+			}
+		}
+		fileWriter.close();
+	}
+	
 }

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/KReSRuleImpl.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/KReSRuleImpl.java?rev=1078000&r1=1077999&r2=1078000&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/KReSRuleImpl.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/KReSRuleImpl.java Fri Mar  4 15:27:24 2011
@@ -1,6 +1,8 @@
 package eu.iksproject.kres.rules;
 
+import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.Set;
 
 import org.semanticweb.owlapi.model.IRI;
@@ -15,6 +17,8 @@ import com.hp.hpl.jena.rdf.model.Resourc
 
 import eu.iksproject.kres.api.rules.KReSRule;
 import eu.iksproject.kres.api.rules.KReSRuleAtom;
+import eu.iksproject.kres.api.rules.KReSRuleExpressiveness;
+import eu.iksproject.kres.api.rules.SPARQLObject;
 import eu.iksproject.kres.api.rules.util.AtomList;
 import eu.iksproject.kres.ontologies.SWRL;
 
@@ -28,11 +32,18 @@ public class KReSRuleImpl implements KRe
 	private AtomList head;
 	private AtomList body;
 	
+	private boolean forwardChain;
+	private boolean reflexive;
+	private boolean sparqlC;
+	private boolean sparqlD;
 	
-	public KReSRuleImpl(String ruleURI, AtomList body, AtomList head) {
+	KReSRuleExpressiveness expressiveness;
+	
+	public KReSRuleImpl(String ruleURI, AtomList body, AtomList head, KReSRuleExpressiveness expressiveness) {
 		this.ruleName = ruleURI;
 		this.head = head;
 		this.body = body;
+		this.expressiveness = expressiveness;
 	}
 	
 	
@@ -55,32 +66,105 @@ public class KReSRuleImpl implements KRe
 	
 	public String toSPARQL() {
 		
-		String sparql = "CONSTRUCT {";
-					
-		boolean firstIte = true;
+		String sparql = null;
 		
-		for(KReSRuleAtom kReSRuleAtom : head){
-			if(!firstIte){
-				sparql += " . ";
+		if(isSPARQLConstruct() || isSPARQLDelete()){
+			boolean found = false;
+			Iterator<KReSRuleAtom> it = body.iterator();
+			while(it.hasNext() && !found){
+				KReSRuleAtom kReSRuleAtom = it.next();
+				sparql = kReSRuleAtom.toSPARQL().getObject();
+				found = true;
 			}
-			firstIte = false;
-			sparql += kReSRuleAtom.toSPARQL();
+			
 		}
 		
-		sparql += "} ";
-		sparql += "WHERE {";
+		else{
 		
-		firstIte = true;
-		for(KReSRuleAtom kReSRuleAtom : body){
-			if(!firstIte){
-				sparql += " . ";
+			sparql = "CONSTRUCT {";
+						
+			boolean firstIte = true;
+			
+			for(KReSRuleAtom kReSRuleAtom : head){
+				if(!firstIte){
+					sparql += " . ";
+				}
+				firstIte = false;
+				sparql += kReSRuleAtom.toSPARQL().getObject();
+			}
+			
+			sparql += "} ";
+			sparql += "WHERE {";
+			
+			firstIte = true;
+			ArrayList<SPARQLObject> sparqlObjects = new ArrayList<SPARQLObject>();
+			for(KReSRuleAtom kReSRuleAtom : body){
+				SPARQLObject sparqlObject = kReSRuleAtom.toSPARQL();
+				if(sparqlObject instanceof SPARQLNot){
+					sparqlObjects.add((SPARQLNot) sparqlObject);
+				}
+				else if(sparqlObject instanceof SPARQLComparison){
+					sparqlObjects.add((SPARQLComparison) sparqlObject);
+				}
+				else{
+					if(!firstIte){
+						sparql += " . ";
+					}
+					else{
+						firstIte = false;
+					}
+					sparql += kReSRuleAtom.toSPARQL().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;
+				}
 			}
-			sparql += kReSRuleAtom.toSPARQL();
-			firstIte = false;
+			
+			if(!optional.isEmpty()){
+				sparql += " . OPTIONAL { " + optional + " } ";
+			}
+			if(!filter.isEmpty()){
+				sparql += " . FILTER ( " + filter + " ) ";
+			}
+			
+			sparql += "}";
 		}
 		
-		sparql += "}";
-		
 		return sparql;
 	}
 
@@ -188,28 +272,46 @@ public class KReSRuleImpl implements KRe
 		
 		Resource rs = ModelFactory.createDefaultModel().createResource(ruleName);
 		String ruleInKReSSyntax = rs.getLocalName()+"[";
-		boolean firstLoop = true;
-		for(KReSRuleAtom atom : body){
-			if(!firstLoop){
-				ruleInKReSSyntax += " . ";
-			}
-			else{
-				firstLoop = false;
+		
+		
+		if(isSPARQLConstruct() || isSPARQLDelete()){
+			boolean found = false;
+			Iterator<KReSRuleAtom> it = body.iterator();
+			while(it.hasNext() && !found){
+				KReSRuleAtom kReSRuleAtom = it.next();
+				ruleInKReSSyntax = kReSRuleAtom.toSPARQL().getObject();
+				found = true;
 			}
-			ruleInKReSSyntax += atom.toKReSSyntax();
+			
 		}
+		else{
 		
-		ruleInKReSSyntax += " -> ";
-		
-		firstLoop = true;
-		for(KReSRuleAtom atom : head){
-			if(!firstLoop){
-				ruleInKReSSyntax += " . ";
+			boolean firstLoop = true;
+			for(KReSRuleAtom atom : body){
+				if(!firstLoop){
+					ruleInKReSSyntax += " . ";
+				}
+				else{
+					firstLoop = false;
+				}
+				ruleInKReSSyntax += atom.toKReSSyntax();
 			}
-			else{
-				firstLoop = false;
+			
+			if(head != null){
+			
+				ruleInKReSSyntax += " -> ";
+				
+				firstLoop = true;
+				for(KReSRuleAtom atom : head){
+					if(!firstLoop){
+						ruleInKReSSyntax += " . ";
+					}
+					else{
+						firstLoop = false;
+					}
+					ruleInKReSSyntax += atom.toKReSSyntax();
+				}
 			}
-			ruleInKReSSyntax += atom.toKReSSyntax();
 		}
 		
 		ruleInKReSSyntax += "]";
@@ -217,4 +319,65 @@ public class KReSRuleImpl implements KRe
 		return ruleInKReSSyntax;
 	}
 	
+	@Override
+	public boolean isForwardChain() {
+		switch (expressiveness) {
+		case ForwardChaining:
+			return true;
+
+		default:
+			return false;
+		}
+	}
+
+	@Override
+	public boolean isSPARQLConstruct() {
+		switch (expressiveness) {
+		case SPARQLConstruct:
+			return true;
+
+		default:
+			return false;
+		}
+	}
+
+	@Override
+	public boolean isSPARQLDelete() {
+		switch (expressiveness) {
+		case SPARQLDelete:
+			return true;
+
+		default:
+			return false;
+		}
+	}
+	
+	@Override
+	public boolean isSPARQLDeleteData() {
+		switch (expressiveness) {
+		case SPARQLDeleteData:
+			return true;
+
+		default:
+			return false;
+		}
+	}
+	
+
+	@Override
+	public boolean isReflexive() {
+		switch (expressiveness) {
+		case Reflexive:
+			return true;
+
+		default:
+			return false;
+		}
+	}
+
+	
+	@Override
+	public KReSRuleExpressiveness getExpressiveness() {
+		return expressiveness;
+	}
 }

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLComparison.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLComparison.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLComparison.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLComparison.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,19 @@
+package eu.iksproject.kres.rules;
+
+import eu.iksproject.kres.api.rules.SPARQLObject;
+
+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/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLFunction.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLFunction.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLFunction.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLFunction.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,19 @@
+package eu.iksproject.kres.rules;
+
+import eu.iksproject.kres.api.rules.SPARQLObject;
+
+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/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLNot.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLNot.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLNot.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLNot.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,25 @@
+package eu.iksproject.kres.rules;
+
+import eu.iksproject.kres.api.rules.SPARQLObject;
+
+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/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLTriple.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLTriple.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLTriple.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/SPARQLTriple.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,20 @@
+package eu.iksproject.kres.rules;
+
+import eu.iksproject.kres.api.rules.SPARQLObject;
+
+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/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/Concat.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/Concat.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/Concat.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/Concat.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,5 @@
+package eu.iksproject.kres.rules.arqextention;
+
+public class Concat {
+
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreatePropertyURIStringFromLabel.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreatePropertyURIStringFromLabel.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreatePropertyURIStringFromLabel.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreatePropertyURIStringFromLabel.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,29 @@
+package eu.iksproject.kres.rules.arqextention;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue;
+import com.hp.hpl.jena.sparql.function.FunctionBase2;
+
+public class CreatePropertyURIStringFromLabel  extends FunctionBase2 {
+
+	@Override
+	public NodeValue exec(NodeValue namespace, NodeValue label) {
+		String argument1 = namespace.getString();
+		String argument2 = label.getString();
+		
+		String[] argument2Splitted = argument2.split(" ");
+		
+		String localName = argument2Splitted[0].substring(0, 1).toLowerCase() + argument2Splitted[0].substring(1, argument2Splitted[0].length());
+		
+		
+		for(int i=1; i<argument2Splitted.length; i++){
+			localName += argument2Splitted[i].substring(0, 1).toUpperCase() + argument2Splitted[i].substring(1, argument2Splitted[i].length());
+		}
+	
+		
+		String newString = argument1 + localName;
+		
+		return NodeValue.makeString(newString);
+	}
+
+	
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreateStandardLabel.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreateStandardLabel.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreateStandardLabel.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreateStandardLabel.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,36 @@
+package eu.iksproject.kres.rules.arqextention;
+
+import com.hp.hpl.jena.sparql.expr.NodeValue;
+import com.hp.hpl.jena.sparql.function.FunctionBase1;
+
+public class CreateStandardLabel extends FunctionBase1 {
+
+	public CreateStandardLabel() {
+		super();
+	}
+	
+	@Override
+	public NodeValue exec(NodeValue nodeValue) {
+		String value = nodeValue.getString();
+		
+		String[] split = value.split("(?=\\p{Upper})");
+		
+		int i = 0;
+		
+		if(split[i].isEmpty()){
+			i += 1;
+		}
+		
+		String newString = split[i].substring(0, 1).toUpperCase() + split[i].substring(1, split[i].length());
+		
+		if(split.length > 1){
+			for(i+=1; i<split.length; i++){
+				newString += " "+split[i].substring(0, 1).toLowerCase() + split[i].substring(1, split[i].length());
+			}
+		}
+		
+		return NodeValue.makeString(newString);
+	}
+	
+
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreateURI.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreateURI.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreateURI.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/arqextention/CreateURI.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,50 @@
+package eu.iksproject.kres.rules.arqextention;
+
+import eu.iksproject.kres.ontologies.XML_OWL;
+
+import com.hp.hpl.jena.graph.Node;
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.ModelFactory;
+import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.sparql.core.Var;
+import com.hp.hpl.jena.sparql.engine.ExecutionContext;
+import com.hp.hpl.jena.sparql.engine.QueryIterator;
+import com.hp.hpl.jena.sparql.engine.binding.Binding;
+import com.hp.hpl.jena.sparql.engine.binding.Binding0;
+import com.hp.hpl.jena.sparql.engine.binding.Binding1;
+import com.hp.hpl.jena.sparql.pfunction.PropFuncArg;
+import com.hp.hpl.jena.sparql.pfunction.PropFuncArgType;
+import com.hp.hpl.jena.sparql.pfunction.PropertyFunctionEval;
+import com.hp.hpl.jena.sparql.util.IterLib;
+
+public class CreateURI extends PropertyFunctionEval {
+
+	
+	public CreateURI() {
+		super(PropFuncArgType.PF_ARG_SINGLE, PropFuncArgType.PF_ARG_SINGLE);
+	}
+
+	@Override
+	public QueryIterator execEvaluated(Binding binding, PropFuncArg argumentSubject,
+			Node predicate, PropFuncArg argumentObject, ExecutionContext execCxt) {
+		
+		Binding b =  null;
+		if(argumentObject.getArg().isLiteral()){
+			Node ref = argumentSubject.getArg();
+			if(ref.isVariable()){
+				String argumentString = argumentObject.getArg().toString().replace("\"", "");
+				
+				b =  new Binding1(binding, Var.alloc(ref), Node.createURI(argumentString));
+			}
+		}
+		
+		if(b == null){
+			b = binding;
+		}
+		
+		return IterLib.result(b, execCxt);
+	}
+	
+	
+	 
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/BlankNodeAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/BlankNodeAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/BlankNodeAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/BlankNodeAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,54 @@
+package eu.iksproject.kres.rules.atoms;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.vocabulary.OWL;
+
+import eu.iksproject.kres.api.rules.SPARQLObject;
+import eu.iksproject.kres.api.rules.URIResource;
+import eu.iksproject.kres.rules.SPARQLTriple;
+
+
+public class BlankNodeAtom extends KReSCoreAtom {
+
+	private URIResource argument1;
+	private URIResource argument2;
+	
+	public BlankNodeAtom(URIResource argument1, URIResource argument2) {
+		this.argument1 = argument1;
+		this.argument2 = argument2;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		String sparql = argument2.toString() + " " + argument1.toString() + " _:bNode";
+		
+		return new SPARQLTriple(sparql);
+		
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		
+		return "createBN(" + argument1.toString() + ", " + argument2.toString() + ")";
+	}
+
+}

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ClassAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ClassAtom.java?rev=1078000&r1=1077999&r2=1078000&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ClassAtom.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ClassAtom.java Fri Mar  4 15:27:24 2011
@@ -1,36 +1,27 @@
 package eu.iksproject.kres.rules.atoms;
 
-import java.net.URI;
+import java.util.ArrayList;
 
-import org.apache.clerezza.rdf.core.MGraph;
-import org.apache.clerezza.rdf.core.UriRef;
-import org.apache.felix.scr.annotations.Reference;
 import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLClass;
 import org.semanticweb.owlapi.model.OWLDataFactory;
-import org.semanticweb.owlapi.model.OWLDataProperty;
 import org.semanticweb.owlapi.model.OWLIndividual;
-import org.semanticweb.owlapi.model.OWLNamedIndividual;
-import org.semanticweb.owlapi.model.OWLOntology;
-import org.semanticweb.owlapi.model.OWLOntologyManager;
-import org.semanticweb.owlapi.model.SWRLArgument;
+import org.semanticweb.owlapi.model.OWLRestriction;
 import org.semanticweb.owlapi.model.SWRLAtom;
-import org.semanticweb.owlapi.model.SWRLClassAtom;
 import org.semanticweb.owlapi.model.SWRLIArgument;
-import org.semanticweb.owlapi.model.SWRLVariable;
-
-import uk.ac.manchester.cs.owl.owlapi.OWLClassExpressionImpl;
 
 import com.hp.hpl.jena.rdf.model.Model;
-import com.hp.hpl.jena.rdf.model.ModelFactory;
 import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.vocabulary.OWL;
 
-import eu.iksproject.kres.api.manager.KReSONManager;
 import eu.iksproject.kres.api.rules.KReSRuleAtom;
+import eu.iksproject.kres.rules.SPARQLNot;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+import eu.iksproject.kres.rules.SPARQLTriple;
 import eu.iksproject.kres.api.rules.URIResource;
 import eu.iksproject.kres.ontologies.SWRL;
 
-public class ClassAtom implements KReSRuleAtom {
+public class ClassAtom extends KReSCoreAtom {
 
 	private URIResource classResource;
 	private URIResource argument1;
@@ -41,25 +32,51 @@ public class ClassAtom implements KReSRu
 	}
 	
 	@Override
-	public String toSPARQL() {
+	public SPARQLObject toSPARQL() {
 		String argument1SPARQL = null;
 		String argument2SPARQL = null;
+		
+		boolean negativeArg = false;
+		boolean negativeClass = false;
+		
 		if(argument1.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
 			argument1SPARQL = "?"+argument1.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) argument1;
+			negativeArg = variable.isNegative();
 		}
 		else{
-			argument1SPARQL = "<"+argument1.toString()+">";
+			argument1SPARQL = argument1.toString();
 		}
 		
 		if(classResource.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
 			argument2SPARQL = "?"+classResource.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) classResource;
+			negativeClass = variable.isNegative();
 		}
 		else{
-			argument2SPARQL = "<"+classResource.toString()+">";
+			argument2SPARQL = classResource.toString();
 		}
 		
-		
-		return argument1SPARQL + " <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> " + argument2SPARQL;
+	
+		if(negativeArg || negativeClass){
+			String optional = argument1SPARQL + " <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> " + argument2SPARQL;
+			
+			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 new SPARQLNot(optional, filterArray);
+		}
+		else{
+			return new SPARQLTriple(argument1SPARQL + " <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> " + argument2SPARQL);
+		}
 	}
 
 	@Override
@@ -119,19 +136,40 @@ public class ClassAtom implements KReSRu
 		
 		if(argument1.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
 			arg1 = "?"+argument1.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) argument1;
+			if(variable.isNegative()){
+				arg1 = "notex(" + arg1 + ")";
+			}
 		}
 		else{
-			arg1 = "<"+argument1.toString()+">";
+			arg1 = argument1.toString();
 		}
 		
 		if(classResource.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
 			arg2 = "?"+classResource.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) classResource;
+			if(variable.isNegative()){
+				arg2 = "notex(" + arg2 + ")";
+			}
 		}
 		else{
-			arg2 = "<"+classResource.toString()+">";
+			arg2 = classResource.toString();
 		}
 		return "is(" + arg2 + ", " + arg1 + ")";
 	}
 
+	@Override
+	public boolean isSPARQLConstruct() {
+		return false;
+	}
 	
+	@Override
+	public boolean isSPARQLDelete() {
+		return false;
+	}
+	
+	@Override
+	public boolean isSPARQLDeleteData() {
+		return false;
+	}
 }

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ComparisonAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ComparisonAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ComparisonAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ComparisonAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,22 @@
+package eu.iksproject.kres.rules.atoms;
+
+import eu.iksproject.kres.api.rules.KReSRuleAtom;
+
+public abstract class ComparisonAtom implements KReSRuleAtom {
+
+	
+	@Override
+	public boolean isSPARQLConstruct() {
+		return false;
+	}
+	
+	@Override
+	public boolean isSPARQLDelete() {
+		return false;
+	}
+	
+	@Override
+	public boolean isSPARQLDeleteData() {
+		return false;
+	}
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ConcatAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ConcatAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ConcatAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/ConcatAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,49 @@
+package eu.iksproject.kres.rules.atoms;
+
+import eu.iksproject.kres.rules.SPARQLFunction;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+public class ConcatAtom extends StringFunctionAtom {
+
+	private StringFunctionAtom argument1;
+	private StringFunctionAtom argument2;
+	
+	public ConcatAtom(StringFunctionAtom argument1, StringFunctionAtom argument2) {
+		this.argument1 = argument1;
+		this.argument2 = argument2;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		
+		String sparqlConcat = "<http://www.w3.org/2005/xpath-functions#concat>";
+		String function = sparqlConcat + " (" + argument1.toSPARQL().getObject() + ", " + argument2.toSPARQL().getObject() + ")";
+		 
+		return new SPARQLFunction(function);
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		
+		return "concat(" + argument1.toKReSSyntax() + ", " + argument2.toKReSSyntax() + ")";
+	}
+
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/CreateLabelAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/CreateLabelAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/CreateLabelAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/CreateLabelAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,54 @@
+package eu.iksproject.kres.rules.atoms;
+
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+import eu.iksproject.kres.api.rules.KReSRuleAtom;
+import eu.iksproject.kres.rules.SPARQLFunction;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+
+public class CreateLabelAtom extends StringFunctionAtom {
+
+	
+	private StringFunctionAtom stringFunctionAtom;
+	
+	public CreateLabelAtom(StringFunctionAtom stringFunctionAtom) {
+		this.stringFunctionAtom = stringFunctionAtom;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		
+		System.out.println("Argument instance of "+stringFunctionAtom.getClass().getCanonicalName());
+		
+		String argument = stringFunctionAtom.toSPARQL().getObject();
+		
+		if(argument.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			argument = "?"+argument.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		}
+		
+		String sparql = "<http://www.stlab.istc.cnr.it/semion/function#createLabel>(" + argument + ")";
+		return new SPARQLFunction(sparql);
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		return "createLabel(" + stringFunctionAtom.toKReSSyntax() + ")";
+	}
+
+}

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/DatavaluedPropertyAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/DatavaluedPropertyAtom.java?rev=1078000&r1=1077999&r2=1078000&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/DatavaluedPropertyAtom.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/DatavaluedPropertyAtom.java Fri Mar  4 15:27:24 2011
@@ -1,6 +1,7 @@
 package eu.iksproject.kres.rules.atoms;
 
 import java.net.URI;
+import java.util.ArrayList;
 
 
 import org.semanticweb.owlapi.apibinding.OWLManager;
@@ -19,25 +20,23 @@ import org.semanticweb.owlapi.model.SWRL
 import org.semanticweb.owlapi.model.SWRLVariable;
 
 
-import org.semanticweb.owlapi.model.OWLDataFactory;
-import org.semanticweb.owlapi.model.SWRLAtom;
-
-
 import com.hp.hpl.jena.rdf.model.Literal;
 import com.hp.hpl.jena.rdf.model.Model;
 import com.hp.hpl.jena.rdf.model.Resource;
 
 import eu.iksproject.kres.api.rules.KReSRuleAtom;
+import eu.iksproject.kres.rules.SPARQLNot;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+import eu.iksproject.kres.rules.SPARQLTriple;
 import eu.iksproject.kres.api.rules.URIResource;
 import eu.iksproject.kres.ontologies.SWRL;
 
-public class DatavaluedPropertyAtom implements KReSRuleAtom {
+public class DatavaluedPropertyAtom extends KReSCoreAtom {
 
 	private URIResource datatypeProperty;
 	private URIResource argument1;
 	private Object argument2;
 	
-	
 	public DatavaluedPropertyAtom(URIResource datatypeProperty, URIResource argument1, Object argument2) {
 		this.datatypeProperty = datatypeProperty;
 		this.argument1 = argument1;
@@ -45,34 +44,89 @@ public class DatavaluedPropertyAtom impl
 	}
 	
 	@Override
-	public String toSPARQL() {
+	public SPARQLObject toSPARQL() {
 		String arg1 = argument1.toString();
 		String arg2 = argument2.toString();
 		String dtP = datatypeProperty.toString();
 		
+		
+		boolean negativeArg1 = false;
+		boolean negativeArg2 = false;
+		boolean negativeDtP = false;
+		
 		if(arg1.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
-			arg1 = "?"+arg1.replace("http://kres.iks-project.eu/ontology/meta/variables#", ""); 
-		}
-		else{
-			arg1 = "<"+arg1+">";
+			arg1 = "?"+arg1.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) argument1;
+			negativeArg1 = variable.isNegative();
 		}
 		
 		if(dtP.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
-			dtP = "?"+dtP.replace("http://kres.iks-project.eu/ontology/meta/variables#", ""); 
-		}
-		else{
-			dtP = "<"+dtP+">";
+			dtP = "?"+dtP.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) datatypeProperty;
+			negativeDtP = variable.isNegative();
 		}
 		
 		if(arg2.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
 			arg2 = "?"+arg2.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) argument2;
+			negativeArg2 = variable.isNegative();
 			
-			return arg1+" "+dtP+" "+arg2;
 		}
 		else{
-			OWLLiteral literal = getOWLTypedLiteral(argument2);
 			
-			return arg1+" "+dtP+" "+literal.getLiteral();
+			if(argument2 instanceof String){
+				arg2 = argument2.toString();
+			}
+			else if(argument2 instanceof Integer){
+				arg2 = ((Integer) argument2).toString();
+			}
+			else if(argument2 instanceof KReSTypedLiteral){
+				
+				KReSTypedLiteral kReSTypeLiteral = (KReSTypedLiteral) argument2;
+				
+				Object value = kReSTypeLiteral.getValue();
+				String xsdType = kReSTypeLiteral.getXsdType().toString();
+				
+				System.out.println("TYPED LITERAL : ");
+				System.out.println("        value : "+value);
+				System.out.println("        xsd type : "+xsdType);
+				
+				if(value instanceof String){
+					arg2 = value + "^^" + xsdType;
+				}
+				else if(value instanceof Integer){
+					arg2 = ((Integer) value).toString()+"^^" + xsdType;
+				}
+				
+				System.out.println("ARG 2 : "+arg2);
+			}
+			else if(argument2 instanceof StringFunctionAtom){
+				arg2 = ((StringFunctionAtom) argument2).toSPARQL().getObject();
+			}
+			//return arg1+" "+dtP+" "+literal.getLiteral();
+		}
+		
+		if(negativeArg1 || negativeArg2 || negativeDtP){
+			String optional = arg1+" "+dtP+" "+arg2;
+			
+			ArrayList<String> filters = new ArrayList<String>();
+			if(negativeArg1){
+				filters.add("!bound(" + arg1 + ")");
+			}
+			if(negativeArg2){
+				filters.add("!bound(" + arg2 + ")");
+			}
+			if(negativeDtP){
+				filters.add("!bound(" + dtP + ")");
+			}
+			
+			String[] filterArray = new String[filters.size()];
+			filterArray = filters.toArray(filterArray);
+			
+			return new SPARQLNot(optional, filterArray);
+		}
+		else{
+			return new SPARQLTriple(arg1+" "+dtP+" "+arg2);
 		}
 		
 		
@@ -192,21 +246,35 @@ public class DatavaluedPropertyAtom impl
 		
 		if(argument1.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
 			arg1 = "?"+argument1.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) argument1;
+			if(variable.isNegative()){
+				arg1 = "notex(" + arg1 + ")";
+			}
 		}
 		else{
-			arg1 = "<"+argument1.toString()+">";
+			arg1 = argument1.toString();
 		}
 		
 		
 		if(datatypeProperty.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
 			arg3 = "?"+datatypeProperty.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) datatypeProperty;
+			if(variable.isNegative()){
+				arg3 = "notex(" + arg3 + ")";
+			}
 		}
 		else{
-			arg3 = "<"+datatypeProperty.toString()+">";
+			arg3 = datatypeProperty.toString();
 		}
 		
 		if(argument2.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
 			arg2 = "?"+argument2.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			
+			KReSVariable variable = (KReSVariable) argument2;
+			if(variable.isNegative()){
+				arg2 = "notex(" + arg2 + ")";
+			}
+			
 			return "values(" + arg3 + ", " + arg1 + ", " + arg2 +")";
 		}
 		else{
@@ -215,9 +283,17 @@ public class DatavaluedPropertyAtom impl
 			return "values(" + arg3 + ", " + arg1 + ", " + literal.getLiteral() +")";
 		}
 		
-		
-		
-		
 	}
 
+
+	@Override
+	public boolean isSPARQLConstruct() {
+		return false;
+	}
+	
+	@Override
+	public boolean isSPARQLDelete() {
+		return false;
+	}
+	
 }

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/DifferentAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/DifferentAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/DifferentAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/DifferentAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,91 @@
+package eu.iksproject.kres.rules.atoms;
+
+import java.util.ArrayList;
+
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.OWLLiteral;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+import eu.iksproject.kres.api.rules.KReSRuleAtom;
+import eu.iksproject.kres.rules.SPARQLComparison;
+import eu.iksproject.kres.rules.SPARQLNot;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+import eu.iksproject.kres.rules.SPARQLTriple;
+import eu.iksproject.kres.api.rules.URIResource;
+
+public class DifferentAtom extends ComparisonAtom {
+
+	
+	private StringFunctionAtom stringFunctionAtom1;
+	private StringFunctionAtom stringFunctionAtom2;
+	
+	public DifferentAtom(StringFunctionAtom stringFunctionAtom1, StringFunctionAtom stringFunctionAtom2) {
+		this.stringFunctionAtom1 = stringFunctionAtom1;
+		this.stringFunctionAtom2 = stringFunctionAtom2;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		String argument1 = stringFunctionAtom1.toSPARQL().getObject();
+		String argument2 = stringFunctionAtom2.toSPARQL().getObject();
+		
+		argument1 = argument1.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		argument2 = argument2.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		
+		return new SPARQLComparison(argument1 + " != " + argument2);
+		
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		return "different(" + stringFunctionAtom1.toKReSSyntax() + ", " + stringFunctionAtom2.toKReSSyntax() + ")";
+	}
+
+	
+	private OWLLiteral getOWLTypedLiteral(Object argument){
+		
+		OWLDataFactory factory = OWLManager.createOWLOntologyManager().getOWLDataFactory();
+		
+		OWLLiteral owlLiteral;
+		if(argument instanceof String){
+			owlLiteral = factory.getOWLTypedLiteral((String) argument); 
+		}
+		else if(argument instanceof Integer){
+			owlLiteral = factory.getOWLTypedLiteral(((Integer) argument).intValue());
+		}
+		else if(argument instanceof Double){
+			owlLiteral = factory.getOWLTypedLiteral(((Double) argument).doubleValue());
+		}
+		else if(argument instanceof Float){
+			owlLiteral = factory.getOWLTypedLiteral(((Float) argument).floatValue());
+		}
+		else if(argument instanceof Boolean){
+			owlLiteral = factory.getOWLTypedLiteral(((Boolean) argument).booleanValue());
+		}
+		else{
+			owlLiteral = factory.getOWLStringLiteral(argument.toString());
+		}
+		
+		
+		
+		return owlLiteral; 
+	}
+	
+	
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/EndsWithAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/EndsWithAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/EndsWithAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/EndsWithAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,57 @@
+package eu.iksproject.kres.rules.atoms;
+
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.OWLLiteral;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+import eu.iksproject.kres.api.rules.KReSRuleAtom;
+import eu.iksproject.kres.rules.SPARQLComparison;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+import eu.iksproject.kres.api.rules.URIResource;
+
+public class EndsWithAtom extends ComparisonAtom {
+
+	
+	private StringFunctionAtom argument; 
+	private StringFunctionAtom term;
+	
+	public EndsWithAtom(StringFunctionAtom argument, StringFunctionAtom term) {
+		this.argument = argument;
+		this.term = term;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		String argumentSparql = argument.toSPARQL().getObject();
+		
+		
+		
+		return new SPARQLComparison("<http://www.w3.org/2005/xpath-functions#ends-with> (" + argumentSparql + ", " + term.toSPARQL().getObject() + ")");
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		
+		
+		
+		return "endsWith(" + argument.toKReSSyntax() + ", " + term.toKReSSyntax() + ")";
+	}
+	
+	
+
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/GreaterThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/GreaterThanAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/GreaterThanAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/GreaterThanAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,124 @@
+package eu.iksproject.kres.rules.atoms;
+
+import eu.iksproject.kres.api.rules.KReSRuleAtom;
+import eu.iksproject.kres.rules.SPARQLComparison;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.OWLLiteral;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+public class GreaterThanAtom extends ComparisonAtom {
+
+	
+	private Object argument1;
+	private Object argument2;
+	
+	public GreaterThanAtom(Object argument1, Object argument2) {
+		this.argument1 = argument1;
+		this.argument2 = argument2;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		String arg1 = argument1.toString();
+		String arg2 = argument2.toString();
+		
+		
+		if(arg1.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			arg1 = "str(?"+arg1.replace("http://kres.iks-project.eu/ontology/meta/variables#", "") + ")";
+			
+		}
+		else{
+			arg1 = "str("+arg1+")";
+		}
+		
+		if(arg2.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			arg2 = "str(?"+arg2.replace("http://kres.iks-project.eu/ontology/meta/variables#", "") + ")";
+			
+		}
+		else if(!arg2.startsWith("<") && !arg2.endsWith(">")){
+			OWLLiteral literal = getOWLTypedLiteral(argument2);
+			arg2 = "str(" + literal.getLiteral() + ")";
+		}
+		else{
+			arg2 = "str("+arg2+")";
+		}
+		
+		
+		return new SPARQLComparison(arg1+" > "+arg2);
+		
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		String arg1 = null;
+		String arg2 = null;
+		
+		if(argument1.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			arg1 = "?"+argument1.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		}
+		else{
+			arg1 = argument1.toString();
+		}
+		
+		
+		if(argument2.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			arg2 = "?"+argument2.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			
+			
+			return "gt(" + arg1 + ", " + arg2 +")";
+		}
+		else{
+			
+			return "gt(" + arg1 + ", " + argument2.toString() +")";
+		}
+	}
+
+	
+	private OWLLiteral getOWLTypedLiteral(Object argument){
+		
+		OWLDataFactory factory = OWLManager.createOWLOntologyManager().getOWLDataFactory();
+		
+		OWLLiteral owlLiteral;
+		if(argument instanceof String){
+			owlLiteral = factory.getOWLTypedLiteral((String) argument); 
+		}
+		else if(argument instanceof Integer){
+			owlLiteral = factory.getOWLTypedLiteral(((Integer) argument).intValue());
+		}
+		else if(argument instanceof Double){
+			owlLiteral = factory.getOWLTypedLiteral(((Double) argument).doubleValue());
+		}
+		else if(argument instanceof Float){
+			owlLiteral = factory.getOWLTypedLiteral(((Float) argument).floatValue());
+		}
+		else if(argument instanceof Boolean){
+			owlLiteral = factory.getOWLTypedLiteral(((Boolean) argument).booleanValue());
+		}
+		else{
+			owlLiteral = factory.getOWLStringLiteral(argument.toString());
+		}
+		
+		
+		
+		return owlLiteral; 
+	}
+}
+

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/IndividualPropertyAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/IndividualPropertyAtom.java?rev=1078000&r1=1077999&r2=1078000&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/IndividualPropertyAtom.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/IndividualPropertyAtom.java Fri Mar  4 15:27:24 2011
@@ -2,10 +2,7 @@ package eu.iksproject.kres.rules.atoms;
 
 import java.net.URI;
 import java.net.URISyntaxException;
-
-import org.apache.clerezza.rdf.core.MGraph;
-import org.apache.clerezza.rdf.core.UriRef;
-import org.apache.clerezza.rdf.core.impl.TypedLiteralImpl;
+import java.util.ArrayList;
 
 import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLClass;
@@ -17,18 +14,18 @@ import org.semanticweb.owlapi.model.SWRL
 import org.semanticweb.owlapi.model.SWRLIArgument;
 import org.semanticweb.owlapi.model.SWRLVariable;
 
-import org.semanticweb.owlapi.model.OWLDataFactory;
-import org.semanticweb.owlapi.model.SWRLAtom;
-
 
 import com.hp.hpl.jena.rdf.model.Model;
 import com.hp.hpl.jena.rdf.model.Resource;
 
 import eu.iksproject.kres.api.rules.KReSRuleAtom;
+import eu.iksproject.kres.rules.SPARQLNot;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+import eu.iksproject.kres.rules.SPARQLTriple;
 import eu.iksproject.kres.api.rules.URIResource;
 import eu.iksproject.kres.ontologies.SWRL;
 
-public class IndividualPropertyAtom implements KReSRuleAtom {
+public class IndividualPropertyAtom extends KReSCoreAtom {
 
 	
 	private URIResource objectProperty;
@@ -42,34 +39,63 @@ public class IndividualPropertyAtom impl
 	}
 	
 	@Override
-	public String toSPARQL() {
+	public SPARQLObject toSPARQL() {
 		String arg1 = argument1.toString();
 		String arg2 = argument2.toString();
 		String objP = objectProperty.toString();
 		
+		boolean negativeArg1 = false;
+		boolean negativeArg2 = false;
+		boolean negativeObjP = false;
+		
 		if(arg1.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
-			arg1 = "?"+arg1.replace("http://kres.iks-project.eu/ontology/meta/variables#", ""); 
-		}
-		else{
-			arg1 = "<"+arg1+">";
+			arg1 = "?"+arg1.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) argument1;
+			if(variable.isNegative()){
+				negativeArg1 = true;
+			}
 		}
 		
 		if(arg2.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
-			arg2 = "?"+arg2.replace("http://kres.iks-project.eu/ontology/meta/variables#", ""); 
-		}
-		else{
-			arg2 = "<"+arg2+">";
+			arg2 = "?"+arg2.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) argument2;
+			if(variable.isNegative()){
+				negativeArg2 = true;
+			}
 		}
 		
 		if(objP.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
-			objP = "?"+objP.replace("http://kres.iks-project.eu/ontology/meta/variables#", ""); 
-		}
-		else{
-			objP = "<"+objP+">";
+			objP = "?"+objP.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) objectProperty;
+			if(variable.isNegative()){
+				negativeObjP = true;
+			}
 		}
 		
 		
-		return arg1+" "+objP+" "+arg2+" ";
+		
+		if(negativeArg1 || negativeArg2 || negativeObjP){
+			String optional = arg1+" "+objP+" "+arg2;
+			
+			ArrayList<String> filters = new ArrayList<String>();
+			if(negativeArg1){
+				filters.add("!bound(" + arg1 + ")");
+			}
+			if(negativeArg2){
+				filters.add("!bound(" + arg2 + ")");
+			}
+			if(negativeObjP){
+				filters.add("!bound(" + objP + ")");
+			}
+			
+			String[] filterArray = new String[filters.size()];
+			filterArray = filters.toArray(filterArray);
+			
+			return new SPARQLNot(optional, filterArray);
+		}
+		else{
+			return new SPARQLTriple(arg1+" "+objP+" "+arg2);
+		}
 		
 	}
 
@@ -143,24 +169,36 @@ public class IndividualPropertyAtom impl
 		
 		if(argument1.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
 			arg1 = "?"+argument1.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) argument1;
+			if(variable.isNegative()){
+				arg1 = "notex(" + arg1 + ")";
+			}
 		}
 		else{
-			arg1 = "<"+argument1.toString()+">";
+			arg1 = argument1.toString();
 		}
 		
 		
 		if(objectProperty.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
 			arg3 = "?"+objectProperty.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) objectProperty;
+			if(variable.isNegative()){
+				arg3 = "notex(" + arg3 + ")";
+			}
 		}
 		else{
-			arg3 = "<"+objectProperty.toString()+">";
+			arg3 = objectProperty.toString();
 		}
 		
 		if(argument2.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
 			arg2 = "?"+argument2.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			KReSVariable variable = (KReSVariable) argument2;
+			if(variable.isNegative()){
+				arg2 = "notex(" + arg2 + ")";
+			}
 		}
 		else{
-			arg2 = "<"+argument2.toString()+">";
+			arg2 = argument2.toString();
 		}
 		
 		
@@ -168,5 +206,15 @@ public class IndividualPropertyAtom impl
 		
 	}
 
+	@Override
+	public boolean isSPARQLConstruct() {
+		return false;
+	}
+	
+	@Override
+	public boolean isSPARQLDelete() {
+		return false;
+	}
+
 	
 }

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/IsBlankAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/IsBlankAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/IsBlankAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/IsBlankAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,73 @@
+package eu.iksproject.kres.rules.atoms;
+
+import eu.iksproject.kres.rules.SPARQLComparison;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+import eu.iksproject.kres.api.rules.URIResource;
+
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+public class IsBlankAtom extends ComparisonAtom {
+
+	private URIResource uriResource;
+	
+	public IsBlankAtom(URIResource uriResource) {
+		this.uriResource = uriResource;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		String argument = uriResource.toString();
+		
+		String sparql; 
+		
+		if(argument.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			sparql = "?"+argument.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		}
+		else{
+			sparql = argument;
+		}
+		
+		sparql = "isBlank(" + sparql + ")";
+		
+		return new SPARQLComparison(sparql);
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		String argument = uriResource.toString();
+		
+		String kReS; 
+		
+		if(argument.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			kReS = "?"+argument.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		}
+		else{
+			kReS = argument;
+		}
+		
+		kReS = "isBlank(" + kReS + ")";
+		return kReS;
+	}
+
+	@Override
+	public boolean isSPARQLConstruct() {
+		return false;
+	}
+	
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSBlankNode.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSBlankNode.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSBlankNode.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSBlankNode.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,36 @@
+package eu.iksproject.kres.rules.atoms;
+
+import java.net.URI;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+import eu.iksproject.kres.api.rules.URIResource;
+
+public class KReSBlankNode implements URIResource {
+
+	private String bNode;
+	
+	public KReSBlankNode(String bNode) {
+		this.bNode = bNode;
+	}
+	
+	@Override
+	public URI getURI() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Resource createJenaResource(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	
+	
+	@Override
+	public String toString() {
+		return bNode;
+	}
+
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSCoreAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSCoreAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSCoreAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSCoreAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,24 @@
+package eu.iksproject.kres.rules.atoms;
+
+import eu.iksproject.kres.api.rules.KReSRuleAtom;
+
+
+
+public abstract class KReSCoreAtom implements KReSRuleAtom {
+
+	
+	@Override
+	public boolean isSPARQLConstruct() {
+		return false;
+	}
+	
+	@Override
+	public boolean isSPARQLDelete() {
+		return false;
+	}
+	
+	@Override
+	public boolean isSPARQLDeleteData() {
+		return false;
+	}
+}

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSResource.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSResource.java?rev=1078000&r1=1077999&r2=1078000&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSResource.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSResource.java Fri Mar  4 15:27:24 2011
@@ -3,7 +3,6 @@ package eu.iksproject.kres.rules.atoms;
 import java.net.URI;
 
 import com.hp.hpl.jena.rdf.model.Model;
-import com.hp.hpl.jena.rdf.model.ModelFactory;
 import com.hp.hpl.jena.rdf.model.Resource;
 
 import eu.iksproject.kres.api.rules.URIResource;
@@ -28,7 +27,7 @@ public class KReSResource implements URI
 	
 	@Override
 	public String toString() {
-		return uri.toString();
+		return "<" + uri.toString() + ">";
 	}
 
 }

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSTypedLiteral.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSTypedLiteral.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSTypedLiteral.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSTypedLiteral.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,35 @@
+package eu.iksproject.kres.rules.atoms;
+
+import eu.iksproject.kres.api.rules.URIResource;
+
+public class KReSTypedLiteral {
+
+	private Object value;
+	private URIResource xsdType;
+	
+	public KReSTypedLiteral(Object value, URIResource xsdType) {
+		this.value = value;
+		this.xsdType = xsdType;
+	}
+	
+	
+	public Object getValue() {
+		return value;
+	}
+	
+	public URIResource getXsdType() {
+		return xsdType;
+	}
+	
+	
+	@Override
+	public String toString() {
+		
+		if(xsdType != null){
+			return value + "^^" + xsdType.toString();
+		}
+		else{
+			return value.toString();
+		}
+	}
+}

Modified: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSVariable.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSVariable.java?rev=1078000&r1=1077999&r2=1078000&view=diff
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSVariable.java (original)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/KReSVariable.java Fri Mar  4 15:27:24 2011
@@ -3,7 +3,6 @@ package eu.iksproject.kres.rules.atoms;
 import java.net.URI;
 
 import com.hp.hpl.jena.rdf.model.Model;
-import com.hp.hpl.jena.rdf.model.ModelFactory;
 import com.hp.hpl.jena.rdf.model.Resource;
 
 import eu.iksproject.kres.api.rules.URIResource;
@@ -11,10 +10,12 @@ import eu.iksproject.kres.ontologies.SWR
 
 public class KReSVariable implements URIResource {
 
-	URI uri;
+	private URI uri;
+	private boolean negative;
 	
-	public KReSVariable(URI uri) {
+	public KReSVariable(URI uri, boolean negative) {
 		this.uri = uri;
+		this.negative = negative;
 	}
 
 	@Override
@@ -30,7 +31,13 @@ public class KReSVariable implements URI
 		
 	@Override
 	public String toString() {
+		
 		return uri.toString();
+		
+	}
+	
+	public boolean isNegative() {
+		return negative;
 	}
 	
 }

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LengthAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LengthAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LengthAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LengthAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,46 @@
+package eu.iksproject.kres.rules.atoms;
+
+import eu.iksproject.kres.rules.SPARQLFunction;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+import eu.iksproject.kres.api.rules.URIResource;
+
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+public class LengthAtom extends NumericFunctionAtom {
+
+	
+	private StringFunctionAtom stringFunctionAtom;
+	
+	public LengthAtom(StringFunctionAtom stringFunctionAtom) {
+		this.stringFunctionAtom = stringFunctionAtom;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		String sparql = "<http://www.w3.org/2005/xpath-functions#string-length> (" + stringFunctionAtom.toSPARQL().getObject() + ")";
+		
+		return new SPARQLFunction(sparql);
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		return "length(" + stringFunctionAtom.toKReSSyntax() + ")";
+	}
+
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LessThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LessThanAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LessThanAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LessThanAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,123 @@
+package eu.iksproject.kres.rules.atoms;
+
+import eu.iksproject.kres.api.rules.KReSRuleAtom;
+import eu.iksproject.kres.rules.SPARQLComparison;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.OWLLiteral;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+public class LessThanAtom extends ComparisonAtom {
+
+	
+	private Object argument1;
+	private Object argument2;
+	
+	public LessThanAtom(Object argument1, Object argument2) {
+		this.argument1 = argument1;
+		this.argument2 = argument2;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		String arg1 = argument1.toString();
+		String arg2 = argument2.toString();
+		
+		
+		if(arg1.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			arg1 = "str(?"+arg1.replace("http://kres.iks-project.eu/ontology/meta/variables#", "") + ")";
+			
+		}
+		else{
+			arg1 = "str("+arg1+")";
+		}
+		
+		if(arg2.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			arg2 = "str(?"+arg2.replace("http://kres.iks-project.eu/ontology/meta/variables#", "") + ")";
+			
+		}
+		else if(!arg2.startsWith("<") && !arg2.endsWith(">")){
+			OWLLiteral literal = getOWLTypedLiteral(argument2);
+			arg2 = "str(" + literal.getLiteral() + ")";
+		}
+		else{
+			arg2 = "str("+arg2+")";
+		}
+		
+		
+		return new SPARQLComparison(arg1+" < "+arg2);
+		
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		String arg1 = null;
+		String arg2 = null;
+		
+		if(argument1.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			arg1 = "?"+argument1.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		}
+		else{
+			arg1 = argument1.toString();
+		}
+		
+		
+		if(argument2.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			arg2 = "?"+argument2.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			
+			
+			return "lt(" + arg1 + ", " + arg2 +")";
+		}
+		else{
+			
+			return "lt(" + arg1 + ", " + argument2.toString() +")";
+		}
+	}
+
+	
+	private OWLLiteral getOWLTypedLiteral(Object argument){
+		
+		OWLDataFactory factory = OWLManager.createOWLOntologyManager().getOWLDataFactory();
+		
+		OWLLiteral owlLiteral;
+		if(argument instanceof String){
+			owlLiteral = factory.getOWLTypedLiteral((String) argument); 
+		}
+		else if(argument instanceof Integer){
+			owlLiteral = factory.getOWLTypedLiteral(((Integer) argument).intValue());
+		}
+		else if(argument instanceof Double){
+			owlLiteral = factory.getOWLTypedLiteral(((Double) argument).doubleValue());
+		}
+		else if(argument instanceof Float){
+			owlLiteral = factory.getOWLTypedLiteral(((Float) argument).floatValue());
+		}
+		else if(argument instanceof Boolean){
+			owlLiteral = factory.getOWLTypedLiteral(((Boolean) argument).booleanValue());
+		}
+		else{
+			owlLiteral = factory.getOWLStringLiteral(argument.toString());
+		}
+		
+		
+		
+		return owlLiteral; 
+	}
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LetAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LetAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LetAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LetAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,71 @@
+package eu.iksproject.kres.rules.atoms;
+
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+import eu.iksproject.kres.api.rules.KReSRuleAtom;
+import eu.iksproject.kres.rules.SPARQLFunction;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+import eu.iksproject.kres.api.rules.URIResource;
+
+public class LetAtom implements KReSRuleAtom {
+
+	private URIResource variable;
+	private StringFunctionAtom parameterFunctionAtom;
+	
+	public LetAtom(URIResource variable, StringFunctionAtom parameterFunctionAtom) {
+		this.variable = variable;
+		this.parameterFunctionAtom = parameterFunctionAtom;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		System.out.println();
+		System.out.println();
+		System.out.println("Parameter Function : "+parameterFunctionAtom.toSPARQL().getObject());
+		System.out.println();
+		System.out.println();
+		String variableArgument = variable.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		String let = "LET (?" + variableArgument + " := " + parameterFunctionAtom.toSPARQL().getObject() + ")";
+		SPARQLObject sparqlObject = new SPARQLFunction(let);
+		return sparqlObject;
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		String arg1 = "?" + variable.toString().replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		String syntax = "let(" + arg1 + ", " + parameterFunctionAtom.toKReSSyntax() + ")";  
+		return syntax;
+	}
+
+	
+	@Override
+	public boolean isSPARQLConstruct() {
+		return false;
+	}
+	
+	@Override
+	public boolean isSPARQLDelete() {
+		return false;
+	}
+	
+	@Override
+	public boolean isSPARQLDeleteData() {
+		return false;
+	}
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LocalNameAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LocalNameAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LocalNameAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LocalNameAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,55 @@
+package eu.iksproject.kres.rules.atoms;
+
+import eu.iksproject.kres.rules.SPARQLFunction;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+import eu.iksproject.kres.api.rules.URIResource;
+
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+public class LocalNameAtom extends StringFunctionAtom {
+
+	private URIResource uriResource;
+	
+	public LocalNameAtom(URIResource uriResource) {
+		this.uriResource = uriResource;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		String argument = uriResource.toString();
+		
+		if(argument.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			argument = "?"+argument.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		}
+		
+		String sparql = "<http://jena.hpl.hp.com/ARQ/function#localname>(" + argument + ")";
+		return new SPARQLFunction(sparql);
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		String argument = uriResource.toString();
+		
+		if(argument.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			argument = "?"+argument.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		}
+		return "localname(" + argument + ")";
+	}
+
+}

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LowerCaseAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LowerCaseAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LowerCaseAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/LowerCaseAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,61 @@
+package eu.iksproject.kres.rules.atoms;
+
+import eu.iksproject.kres.rules.SPARQLFunction;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+public class LowerCaseAtom extends StringFunctionAtom {
+
+	private StringFunctionAtom stringFunctionAtom;
+	
+	public LowerCaseAtom(StringFunctionAtom stringFunctionAtom) {
+		this.stringFunctionAtom = stringFunctionAtom;
+	}
+
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		
+		String uriResourceString = stringFunctionAtom.toSPARQL().getObject();
+		
+		if(uriResourceString.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			uriResourceString = "?"+uriResourceString.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			
+		}
+		
+		String sparql = "<http://www.w3.org/2005/xpath-functions#lower-case> (" + uriResourceString + ")"; 
+			
+		return new SPARQLFunction(sparql);
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		String uriResourceString = stringFunctionAtom.toKReSSyntax();
+		
+		if(uriResourceString.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			uriResourceString = "?"+uriResourceString.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+			
+		}
+		
+		return "lowerCase(" + uriResourceString + ")";
+	}
+	
+	
+	
+}
\ No newline at end of file

Added: incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/NamespaceAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/NamespaceAtom.java?rev=1078000&view=auto
==============================================================================
--- incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/NamespaceAtom.java (added)
+++ incubator/stanbol/trunk/kres/eu.iksproject.kres.rules/src/main/java/eu/iksproject/kres/rules/atoms/NamespaceAtom.java Fri Mar  4 15:27:24 2011
@@ -0,0 +1,55 @@
+package eu.iksproject.kres.rules.atoms;
+
+import eu.iksproject.kres.rules.SPARQLFunction;
+import eu.iksproject.kres.api.rules.SPARQLObject;
+import eu.iksproject.kres.api.rules.URIResource;
+
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+import com.hp.hpl.jena.rdf.model.Model;
+import com.hp.hpl.jena.rdf.model.Resource;
+
+public class NamespaceAtom extends StringFunctionAtom {
+
+private URIResource uriResource;
+	
+	public NamespaceAtom(URIResource uriResource) {
+		this.uriResource = uriResource;
+	}
+	
+	@Override
+	public Resource toSWRL(Model model) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public SPARQLObject toSPARQL() {
+		String argument = uriResource.toString();
+		
+		if(argument.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			argument = "?"+argument.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		}
+		
+		String sparql = "<http://jena.hpl.hp.com/ARQ/function#namespace>(" + argument + ")";
+		return new SPARQLFunction(sparql);
+	}
+
+	@Override
+	public SWRLAtom toSWRL(OWLDataFactory factory) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public String toKReSSyntax() {
+		String argument = uriResource.toString();
+		
+		if(argument.startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			argument = "?"+argument.replace("http://kres.iks-project.eu/ontology/meta/variables#", "");
+		}
+		return "namespace(" + argument + ")";
+	}
+
+}