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/11/26 20:34:09 UTC

svn commit: r1206554 - in /incubator/stanbol/trunk/rules/manager/src: main/java/org/apache/stanbol/rules/manager/atoms/ test/java/org/apache/stanbol/rules/manager/atoms/

Author: anuzzolese
Date: Sat Nov 26 19:34:08 2011
New Revision: 1206554

URL: http://svn.apache.org/viewvc?rev=1206554&view=rev
Log:
[STANBOL-396] Implemented the body of the toSWRL(SWRLAtom) method for GreaterThanAtom and LessThanAtom built-ins.

Added:
    incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/
    incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/AtomTest.java
    incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/GreaterThanAtomTest.java
    incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/LessThanAtomTest.java
Modified:
    incubator/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/atoms/GreaterThanAtom.java
    incubator/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/atoms/LessThanAtom.java

Modified: incubator/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/atoms/GreaterThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/atoms/GreaterThanAtom.java?rev=1206554&r1=1206553&r2=1206554&view=diff
==============================================================================
--- incubator/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/atoms/GreaterThanAtom.java (original)
+++ incubator/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/atoms/GreaterThanAtom.java Sat Nov 26 19:34:08 2011
@@ -16,15 +16,24 @@
 */
 package org.apache.stanbol.rules.manager.atoms;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.URIResource;
 import org.apache.stanbol.rules.manager.SPARQLComparison;
 import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLDataFactory;
 import org.semanticweb.owlapi.model.OWLLiteral;
 import org.semanticweb.owlapi.model.SWRLAtom;
+import org.semanticweb.owlapi.model.SWRLBuiltInAtom;
+import org.semanticweb.owlapi.model.SWRLDArgument;
+import org.semanticweb.owlapi.vocab.SWRLBuiltInsVocabulary;
 
 import com.hp.hpl.jena.rdf.model.Model;
 import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.vocabulary.XSD;
 
 
 public class GreaterThanAtom extends ComparisonAtom {
@@ -77,8 +86,94 @@ public class GreaterThanAtom extends Com
 
 	@Override
 	public SWRLAtom toSWRL(OWLDataFactory factory) {
-		// TODO Auto-generated method stub
-		return null;
+		
+		List<SWRLDArgument> swrldArguments = new ArrayList<SWRLDArgument>();
+		
+		SWRLDArgument swrldArgument1 = null;
+		
+		if(argument1.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			
+			swrldArgument1 = factory.getSWRLVariable(IRI.create(argument1.toString()));
+		}
+		else{
+			
+			OWLLiteral literal = null;
+			if(argument1 instanceof TypedLiteralAtom){
+				TypedLiteralAtom typedLiteralAtom = (TypedLiteralAtom) argument1;
+					
+				URIResource xsdType = typedLiteralAtom.getXsdType();
+				
+				if(xsdType.getURI().equals(XSD.xboolean)){
+					literal = factory.getOWLLiteral(Boolean.valueOf(argument1.toString()).booleanValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xdouble)){
+					literal = factory.getOWLLiteral(Double.valueOf(argument1.toString()).doubleValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xfloat)){
+					literal = factory.getOWLLiteral(Float.valueOf(argument1.toString()).floatValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xint)){
+					literal = factory.getOWLLiteral(Integer.valueOf(argument1.toString()).intValue());
+				}
+				
+				else{
+					literal = factory.getOWLLiteral(argument1.toString());	
+				}
+				
+			}
+			else{
+				literal = factory.getOWLLiteral(argument1.toString());
+			}
+			
+			swrldArgument1 = factory.getSWRLLiteralArgument(literal);
+			
+		}
+		
+		SWRLDArgument swrldArgument2 = null;
+		
+		if(argument2.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			
+			swrldArgument2 = factory.getSWRLVariable(IRI.create(argument2.toString()));
+		}
+		else{
+			
+			OWLLiteral literal = null;
+			if(argument2 instanceof TypedLiteralAtom){
+				TypedLiteralAtom typedLiteralAtom = (TypedLiteralAtom) argument2;
+					
+				URIResource xsdType = typedLiteralAtom.getXsdType();
+				
+				if(xsdType.getURI().equals(XSD.xboolean)){
+					literal = factory.getOWLLiteral(Boolean.valueOf(argument2.toString()).booleanValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xdouble)){
+					literal = factory.getOWLLiteral(Double.valueOf(argument2.toString()).doubleValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xfloat)){
+					literal = factory.getOWLLiteral(Float.valueOf(argument2.toString()).floatValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xint)){
+					literal = factory.getOWLLiteral(Integer.valueOf(argument2.toString()).intValue());
+				}
+				
+				else{
+					literal = factory.getOWLLiteral(argument2.toString());	
+				}
+				
+			}
+			else{
+				literal = factory.getOWLLiteral(argument2.toString());
+			}
+			
+			swrldArgument2 = factory.getSWRLLiteralArgument(literal);
+			
+		}
+		
+		swrldArguments.add(swrldArgument1);
+		swrldArguments.add(swrldArgument2);
+		
+		SWRLBuiltInAtom swrlBuiltInAtom = factory.getSWRLBuiltInAtom(SWRLBuiltInsVocabulary.GREATER_THAN.getIRI(), swrldArguments);
+		return swrlBuiltInAtom;
 	}
 
 	@Override

Modified: incubator/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/atoms/LessThanAtom.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/atoms/LessThanAtom.java?rev=1206554&r1=1206553&r2=1206554&view=diff
==============================================================================
--- incubator/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/atoms/LessThanAtom.java (original)
+++ incubator/stanbol/trunk/rules/manager/src/main/java/org/apache/stanbol/rules/manager/atoms/LessThanAtom.java Sat Nov 26 19:34:08 2011
@@ -16,15 +16,24 @@
 */
 package org.apache.stanbol.rules.manager.atoms;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.stanbol.rules.base.api.SPARQLObject;
+import org.apache.stanbol.rules.base.api.URIResource;
 import org.apache.stanbol.rules.manager.SPARQLComparison;
 import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.IRI;
 import org.semanticweb.owlapi.model.OWLDataFactory;
 import org.semanticweb.owlapi.model.OWLLiteral;
 import org.semanticweb.owlapi.model.SWRLAtom;
+import org.semanticweb.owlapi.model.SWRLBuiltInAtom;
+import org.semanticweb.owlapi.model.SWRLDArgument;
+import org.semanticweb.owlapi.vocab.SWRLBuiltInsVocabulary;
 
 import com.hp.hpl.jena.rdf.model.Model;
 import com.hp.hpl.jena.rdf.model.Resource;
+import com.hp.hpl.jena.vocabulary.XSD;
 
 
 public class LessThanAtom extends ComparisonAtom {
@@ -77,8 +86,93 @@ public class LessThanAtom extends Compar
 
 	@Override
 	public SWRLAtom toSWRL(OWLDataFactory factory) {
-		// TODO Auto-generated method stub
-		return null;
+		List<SWRLDArgument> swrldArguments = new ArrayList<SWRLDArgument>();
+	
+		SWRLDArgument swrldArgument1 = null;
+		
+		if(argument1.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			
+			swrldArgument1 = factory.getSWRLVariable(IRI.create(argument1.toString()));
+		}
+		else{
+			
+			OWLLiteral literal = null;
+			if(argument1 instanceof TypedLiteralAtom){
+				TypedLiteralAtom typedLiteralAtom = (TypedLiteralAtom) argument1;
+					
+				URIResource xsdType = typedLiteralAtom.getXsdType();
+				
+				if(xsdType.getURI().equals(XSD.xboolean)){
+					literal = factory.getOWLLiteral(Boolean.valueOf(argument1.toString()).booleanValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xdouble)){
+					literal = factory.getOWLLiteral(Double.valueOf(argument1.toString()).doubleValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xfloat)){
+					literal = factory.getOWLLiteral(Float.valueOf(argument1.toString()).floatValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xint)){
+					literal = factory.getOWLLiteral(Integer.valueOf(argument1.toString()).intValue());
+				}
+				
+				else{
+					literal = factory.getOWLLiteral(argument1.toString());	
+				}
+				
+			}
+			else{
+				literal = factory.getOWLLiteral(argument1.toString());
+			}
+			
+			swrldArgument1 = factory.getSWRLLiteralArgument(literal);
+			
+		}
+		
+		SWRLDArgument swrldArgument2 = null;
+		
+		if(argument2.toString().startsWith("http://kres.iks-project.eu/ontology/meta/variables#")){
+			
+			swrldArgument2 = factory.getSWRLVariable(IRI.create(argument2.toString()));
+		}
+		else{
+			
+			OWLLiteral literal = null;
+			if(argument2 instanceof TypedLiteralAtom){
+				TypedLiteralAtom typedLiteralAtom = (TypedLiteralAtom) argument2;
+					
+				URIResource xsdType = typedLiteralAtom.getXsdType();
+				
+				if(xsdType.getURI().equals(XSD.xboolean)){
+					literal = factory.getOWLLiteral(Boolean.valueOf(argument2.toString()).booleanValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xdouble)){
+					literal = factory.getOWLLiteral(Double.valueOf(argument2.toString()).doubleValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xfloat)){
+					literal = factory.getOWLLiteral(Float.valueOf(argument2.toString()).floatValue());
+				}
+				else if(xsdType.getURI().equals(XSD.xint)){
+					literal = factory.getOWLLiteral(Integer.valueOf(argument2.toString()).intValue());
+				}
+				
+				else{
+					literal = factory.getOWLLiteral(argument2.toString());	
+				}
+				
+			}
+			else{
+				literal = factory.getOWLLiteral(argument2.toString());
+			}
+			
+			swrldArgument2 = factory.getSWRLLiteralArgument(literal);
+			
+		}
+		
+		swrldArguments.add(swrldArgument1);
+		swrldArguments.add(swrldArgument2);
+		
+		SWRLBuiltInAtom swrlBuiltInAtom = factory.getSWRLBuiltInAtom(SWRLBuiltInsVocabulary.LESS_THAN.getIRI(), swrldArguments);
+		return swrlBuiltInAtom;
 	}
 
 	@Override

Added: incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/AtomTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/AtomTest.java?rev=1206554&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/AtomTest.java (added)
+++ incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/AtomTest.java Sat Nov 26 19:34:08 2011
@@ -0,0 +1,53 @@
+package org.apache.stanbol.rules.manager.atoms;
+
+import static org.junit.Assert.fail;
+
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.junit.Before;
+import org.junit.Test;
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.OWLOntologyManager;
+import org.semanticweb.owlapi.model.SWRLAtom;
+
+public abstract class AtomTest {
+	
+	
+	protected OWLDataFactory factory;
+	
+	@Before
+	public void init(){
+		OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
+		this.factory = manager.getOWLDataFactory();
+	}
+
+	@Test
+	public abstract void testValidAtomWithVariableArguments();
+	
+	
+	@Test
+	public abstract void testValidAtomWithLiteralArguments();
+	
+	
+	@Test
+	public abstract void testValidAtomWithTypedLiteralArguments();
+	
+	protected void execTest(RuleAtom ruleAtom){
+		String stanbolSyntax = ruleAtom.toKReSSyntax();
+		if(stanbolSyntax == null){
+			fail(GreaterThanAtom.class.getCanonicalName() + " does not produce any rule in Stanbo syntax.");
+		}
+		
+		String sparql = ruleAtom.toSPARQL().getObject();		
+		if(sparql == null){
+			fail(GreaterThanAtom.class.getCanonicalName() + " does not produce any rule as SPARQL CONSTRUCT.");
+		}
+		
+		SWRLAtom swrlAtom = ruleAtom.toSWRL(factory);
+		
+		if(swrlAtom == null){
+			fail(GreaterThanAtom.class.getCanonicalName() + " does not produce any rule in SWRL.");
+		}
+	}
+	
+}

Added: incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/GreaterThanAtomTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/GreaterThanAtomTest.java?rev=1206554&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/GreaterThanAtomTest.java (added)
+++ incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/GreaterThanAtomTest.java Sat Nov 26 19:34:08 2011
@@ -0,0 +1,76 @@
+package org.apache.stanbol.rules.manager.atoms;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.junit.Before;
+import org.junit.Test;
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.OWLDataFactory;
+import org.semanticweb.owlapi.model.OWLOntologyManager;
+
+import com.hp.hpl.jena.vocabulary.XSD;
+
+
+public class GreaterThanAtomTest extends AtomTest {
+
+	private Object variable1;
+	private Object variable2;
+	
+	private Object literal1;
+	private Object literal2;
+	
+	
+	private Object typedLiteral1;
+	private Object typedLiteral2;
+	
+	@Before
+	public void setup() {
+		OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
+		this.factory = manager.getOWLDataFactory();
+		
+		variable1 = new VariableAtom(URI.create("http://kres.iks-project.eu/ontology/meta/variables#x"), false);
+		variable2 = new VariableAtom(URI.create("http://kres.iks-project.eu/ontology/meta/variables#y"), false);
+		
+		
+		literal1 = "some text";
+		literal2 = "some other text";
+		
+		try {
+			typedLiteral1 = new TypedLiteralAtom(3.0, new ResourceAtom(new URI(XSD.xdouble.getURI())));
+			typedLiteral2 = new TypedLiteralAtom(5.0, new ResourceAtom(new URI(XSD.xdouble.getURI())));
+		} catch (URISyntaxException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	@Test
+	public void testValidAtomWithVariableArguments() {
+		
+		RuleAtom ruleAtom = new GreaterThanAtom(variable1, variable2);
+		
+		execTest(ruleAtom);
+		
+	}
+	
+	
+	@Test
+	public void testValidAtomWithLiteralArguments() {
+		
+		RuleAtom ruleAtom = new GreaterThanAtom(literal1, literal2);
+		
+		execTest(ruleAtom);
+	}
+	
+	
+	@Test
+	public void testValidAtomWithTypedLiteralArguments() {
+		
+		RuleAtom ruleAtom = new GreaterThanAtom(typedLiteral1, typedLiteral2);
+		
+		execTest(ruleAtom);
+	}
+	
+	
+}

Added: incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/LessThanAtomTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/LessThanAtomTest.java?rev=1206554&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/LessThanAtomTest.java (added)
+++ incubator/stanbol/trunk/rules/manager/src/test/java/org/apache/stanbol/rules/manager/atoms/LessThanAtomTest.java Sat Nov 26 19:34:08 2011
@@ -0,0 +1,74 @@
+package org.apache.stanbol.rules.manager.atoms;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.apache.stanbol.rules.base.api.RuleAtom;
+import org.junit.Before;
+import org.junit.Test;
+import org.semanticweb.owlapi.apibinding.OWLManager;
+import org.semanticweb.owlapi.model.OWLOntologyManager;
+
+import com.hp.hpl.jena.vocabulary.XSD;
+
+public class LessThanAtomTest extends AtomTest {
+	
+	private Object variable1;
+	private Object variable2;
+	
+	private Object literal1;
+	private Object literal2;
+	
+	
+	private Object typedLiteral1;
+	private Object typedLiteral2;
+	
+	@Before
+	public void setup() {
+		OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
+		this.factory = manager.getOWLDataFactory();
+		
+		variable1 = new VariableAtom(URI.create("http://kres.iks-project.eu/ontology/meta/variables#x"), false);
+		variable2 = new VariableAtom(URI.create("http://kres.iks-project.eu/ontology/meta/variables#y"), false);
+		
+		
+		literal1 = "some text";
+		literal2 = "some other text";
+		
+		try {
+			typedLiteral1 = new TypedLiteralAtom(3.0, new ResourceAtom(new URI(XSD.xdouble.getURI())));
+			typedLiteral2 = new TypedLiteralAtom(5.0, new ResourceAtom(new URI(XSD.xdouble.getURI())));
+		} catch (URISyntaxException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	@Test
+	public void testValidAtomWithVariableArguments() {
+		
+		RuleAtom ruleAtom = new LessThanAtom(variable1, variable2);
+		
+		execTest(ruleAtom);
+		
+	}
+	
+	
+	@Test
+	public void testValidAtomWithLiteralArguments() {
+		
+		RuleAtom ruleAtom = new GreaterThanAtom(literal1, literal2);
+		
+		execTest(ruleAtom);
+	}
+	
+	
+	@Test
+	public void testValidAtomWithTypedLiteralArguments() {
+		
+		RuleAtom ruleAtom = new GreaterThanAtom(typedLiteral1, typedLiteral2);
+		
+		execTest(ruleAtom);
+	}
+	
+	
+}