You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by an...@apache.org on 2012/03/28 16:18:30 UTC

svn commit: r1306363 [3/3] - in /incubator/stanbol/trunk/rules/adapters/swrl: ./ src/ src/license/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/stanbol/ src/main/java/org/apache/stanbol/rules/ src/main/...

Added: incubator/stanbol/trunk/rules/adapters/swrl/src/test/java/org/apache/stanbol/rules/adapters/swrl/SWRLAdpterTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/rules/adapters/swrl/src/test/java/org/apache/stanbol/rules/adapters/swrl/SWRLAdpterTest.java?rev=1306363&view=auto
==============================================================================
--- incubator/stanbol/trunk/rules/adapters/swrl/src/test/java/org/apache/stanbol/rules/adapters/swrl/SWRLAdpterTest.java (added)
+++ incubator/stanbol/trunk/rules/adapters/swrl/src/test/java/org/apache/stanbol/rules/adapters/swrl/SWRLAdpterTest.java Wed Mar 28 14:18:27 2012
@@ -0,0 +1,166 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.stanbol.rules.adapters.swrl;
+
+import java.util.List;
+
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
+import org.apache.stanbol.rules.base.api.Recipe;
+import org.apache.stanbol.rules.base.api.RuleAdapter;
+import org.apache.stanbol.rules.base.api.RuleAtomCallExeption;
+import org.apache.stanbol.rules.base.api.UnavailableRuleObjectException;
+import org.apache.stanbol.rules.base.api.UnsupportedTypeForExportException;
+import org.apache.stanbol.rules.manager.KB;
+import org.apache.stanbol.rules.manager.RecipeImpl;
+import org.apache.stanbol.rules.manager.parse.RuleParserImpl;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.semanticweb.owlapi.model.SWRLRule;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 
+ * @author anuzzolese
+ * 
+ */
+public class SWRLAdpterTest {
+
+    private static Logger log = LoggerFactory.getLogger(SWRLAdpterTest.class);
+
+    private Recipe recipeGood;
+    private Recipe recipeWrong;
+    private static RuleAdapter ruleAdapter;
+
+    @BeforeClass
+    public static void setUpClass() {
+        ruleAdapter = new SWRLAdapter();
+
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        ruleAdapter = null;
+
+    }
+
+    @Before
+    public void setUp() {
+        String separator = System.getProperty("line.separator");
+        String recipeString = "kres = <http://kres.iks-project.eu/ontology.owl#> . "
+                              + separator
+                              + "foaf = <http://xmlns.com/foaf/0.1/> . "
+                              + separator
+                              + "rule1[ is(kres:Person, ?x) . has(kres:friend, ?x, ?y) -> is(foaf:Person, ?x) . has(foaf:knows, ?x, ?y) . is(foaf:Person, ?y)] . "
+                              + "rule2[ is(kres:Person, ?x) . values(kres:age, ?x, ?age) . gt(?age, sum(sub(70, ?k), ?z)) -> is(kres:OldPerson, ?x)]";
+
+        KB kb = RuleParserImpl.parse("http://incubator.apache.com/stanbol/rules/adapters/jena/test/",
+            recipeString);
+
+        recipeGood = new RecipeImpl(
+                new UriRef("http://incubator.apache.com/stanbol/rules/adapters/jena/test"), "A recipe.",
+                kb.getRuleList());
+
+        recipeString = "kres = <http://kres.iks-project.eu/ontology.owl#> . "
+                       + separator
+                       + "foaf = <http://xmlns.com/foaf/0.1/> . "
+                       + separator
+                       + "rule1[ is(kres:Person, ?x) . has(kres:friend, ?x, ?y) -> is(foaf:Person, ?x) . has(foaf:knows, ?x, ?y) . is(foaf:Person, ?y)] . "
+                       + "rule2[ is(kres:Person, ?x) . same(\"Andrea\", localname(?x)) -> is(kres:OldPerson, ?x)]";
+
+        kb = RuleParserImpl.parse("http://incubator.apache.com/stanbol/rules/adapters/jena/test/",
+            recipeString);
+
+        recipeWrong = new RecipeImpl(new UriRef(
+                "http://incubator.apache.com/stanbol/rules/adapters/jena/test"), "A recipe.",
+                kb.getRuleList());
+    }
+
+    @After
+    public void tearDown() {
+        recipeGood = null;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void test() {
+        try {
+
+            List<SWRLRule> rules = (List<SWRLRule>) ruleAdapter.adaptTo(recipeGood, SWRLRule.class);
+
+            StringBuilder sb = new StringBuilder();
+            for (SWRLRule rule : rules) {
+                sb.append(rule.toString());
+            }
+
+            Assert.assertNotSame(sb.toString(), "");
+        } catch (UnavailableRuleObjectException e) {
+            Assert.fail(e.getMessage());
+        } catch (UnsupportedTypeForExportException e) {
+            Assert.fail(e.getMessage());
+        } catch (RuleAtomCallExeption e) {
+            Assert.fail(e.getMessage());
+        }
+    }
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void wrongAdaptabeClassTest() {
+        try {
+
+            List<ConstructQuery> constructQueries = (List<ConstructQuery>) ruleAdapter.adaptTo(recipeGood,
+                ConstructQuery.class);
+            for (ConstructQuery constructQuery : constructQueries) {
+                log.debug(constructQuery.toString());
+                Assert.fail("The adapter for Jena should not accept "
+                            + ConstructQuery.class.getCanonicalName() + " objects.");
+            }
+        } catch (UnavailableRuleObjectException e) {
+            Assert.fail(e.getMessage());
+        } catch (UnsupportedTypeForExportException e) {
+            log.debug(e.getMessage());
+        } catch (RuleAtomCallExeption e) {
+            Assert.fail(e.getMessage());
+        }
+
+    }
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void unavailableRuleObjectTest() {
+        try {
+
+            List<SWRLRule> rules = (List<SWRLRule>) ruleAdapter.adaptTo(recipeWrong, SWRLRule.class);
+            for (SWRLRule rule : rules) {
+                log.debug(rule.toString());
+            }
+        } catch (UnavailableRuleObjectException e) {
+            Assert.fail(e.getMessage());
+        } catch (UnsupportedTypeForExportException e) {
+            Assert.fail(e.getMessage());
+        } catch (RuleAtomCallExeption e) {
+            Assert.assertTrue(e.getMessage(), true);
+        }
+
+    }
+}