You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2010/07/19 12:13:36 UTC

svn commit: r965411 - in /incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core: ./ src/main/java/org/apache/clerezza/rdf/enrichment/ src/test/java/org/apache/clerezza/rdf/enrichment/

Author: reto
Date: Mon Jul 19 10:13:36 2010
New Revision: 965411

URL: http://svn.apache.org/viewvc?rev=965411&view=rev
Log:
CLEREZZA-218: first passing test for SiblingEnricher

Added:
    incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/nbactions.xml
    incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriples.java
    incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriplesTest.java
Modified:
    incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/Enricher.java
    incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/OrConnector.java
    incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/CityWeatherEnricher.java
    incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/SiblingEnricher.java

Added: incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/nbactions.xml
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/nbactions.xml?rev=965411&view=auto
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/nbactions.xml (added)
+++ incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/nbactions.xml Mon Jul 19 10:13:36 2010
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+        <action>
+            <actionName>CUSTOM-install-local</actionName>
+            <displayName>install-local</displayName>
+            <goals>
+                <goal>org.apache.sling:maven-sling-plugin:install</goal>
+            </goals>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+                <sling.user>admin -Dsling.password=admin -Dsling.url=http://localhost:8080/system/console/install</sling.user>
+            </properties>
+        </action>
+        <action>
+            <actionName>CUSTOM-install local</actionName>
+            <displayName>install local</displayName>
+            <goals>
+                <goal>install</goal>
+                <goal>org.apache.sling:maven-sling-plugin:install</goal>
+            </goals>
+            <properties>
+                <maven.test.skip>true</maven.test.skip>
+                <sling.user>admin -Dsling.password=admin -Dsling.url=http://localhost:8080/system/console/install</sling.user>
+            </properties>
+        </action>
+    </actions>

Modified: incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/Enricher.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/Enricher.java?rev=965411&r1=965410&r2=965411&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/Enricher.java (original)
+++ incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/Enricher.java Mon Jul 19 10:13:36 2010
@@ -19,15 +19,19 @@
 package org.apache.clerezza.rdf.enrichment;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import org.apache.clerezza.rdf.core.BNode;
+import org.apache.clerezza.rdf.core.Literal;
 import org.apache.clerezza.rdf.core.NonLiteral;
 import org.apache.clerezza.rdf.core.Resource;
 import org.apache.clerezza.rdf.core.Triple;
 import org.apache.clerezza.rdf.core.TripleCollection;
+import org.apache.clerezza.rdf.core.TypedLiteral;
 import org.apache.clerezza.rdf.core.UriRef;
 
 /**
@@ -56,20 +60,20 @@ public abstract class Enricher {
 
 	public static abstract class ResourceFilter {
 
-		public abstract boolean accept(Resource resource);
+		public abstract boolean accept(Resource resource, TripleCollection tc);
 
 		public Set<Resource> getAcceptable(TripleCollection tc) {
 			Set<Resource> result = new HashSet<Resource>();
 			for (Triple triple : tc) {
 				{
 					NonLiteral subject = triple.getSubject();
-					if (accept(subject)) {
+					if (accept(subject, tc)) {
 						result.add(subject);
 					}
 				}
 				{
 					Resource object = triple.getObject();
-					if (accept(object)) {
+					if (accept(object, tc)) {
 						result.add(object);
 					}
 				}
@@ -82,11 +86,68 @@ public abstract class Enricher {
 	public ResourceFilter acceptAll = new ResourceFilter() {
 
 		@Override
-		public boolean accept(Resource resource) {
+		public boolean accept(Resource resource, TripleCollection tc) {
 			return true;
 		}
 	};
 
+	protected static ResourceFilter getFilterForSubjectsWithProperty(final UriRef predicate) {
+		return new ResourceFilter() {
+
+			@Override
+			public boolean accept(Resource resource, TripleCollection tc) {
+				if (resource instanceof NonLiteral) {
+					return tc.filter((NonLiteral)resource, predicate, null).hasNext();
+				} else {
+					return false;
+				}
+			}
+		};
+	}
+	protected static ResourceFilter getFilterForSubjectsWith(final UriRef predicate,
+			final Resource object) {
+		return new ResourceFilter() {
+
+			@Override
+			public boolean accept(Resource resource, TripleCollection tc) {
+				if (resource instanceof NonLiteral) {
+					return tc.filter((NonLiteral)resource, predicate, object).hasNext();
+				} else {
+					return false;
+				}
+			}
+		};
+	}
+		/** creates a resource filters that matches only the specified resource
+	 *
+	 * @param resources
+	 * @return
+	 */
+	protected static ResourceFilter getExtensionalFilter(final Resource... resources) {
+
+		return new ResourceFilter() {
+			Collection<Resource> acceptableResources = new HashSet<Resource>(Arrays.asList(resources));
+			@Override
+			public boolean accept(Resource resource, TripleCollection tc) {
+				return acceptableResources.contains(resource);
+			}
+		};
+	}
+
+	protected static ResourceFilter getDataTypeFilter(final UriRef dataType) {
+		return new ResourceFilter() {
+
+			@Override
+			public boolean accept(Resource resource, TripleCollection tc) {
+				if (resource instanceof TypedLiteral) {
+					return ((TypedLiteral)resource).getDataType().equals(dataType);
+				} else {
+					return false;
+				}
+			}
+		};
+	}
+
 	/**
 	 * returns the additionl triples to a specified base graph. This method is
 	 * only invoked with resources matching the respective Filter.
@@ -133,7 +194,7 @@ public abstract class Enricher {
 	private ResourceFilter localBNodeFilter = new ResourceFilter() {
 
 		@Override
-		public boolean accept(Resource resource) {
+		public boolean accept(Resource resource, TripleCollection tc) {
 			return (resource instanceof LocalBNode)
 					&& ((LocalBNode) resource).isFrom(Enricher.this);
 		}
@@ -142,32 +203,16 @@ public abstract class Enricher {
 	protected ResourceFilter getLocalBNodeFilter() {
 		return localBNodeFilter;
 	}
-	protected static ResourceFilter getFilterForSubjectsWith(UriRef predicate,
-			Resource object) {
-		return null;
-	}
+	
 
-	protected static ResourceFilter getFilterForSubjectsWithProperty(UriRef predicate) {
-		return null;
-	}
+	
 
-	/** creates a resource filters that matches only the specified resource
-	 *
-	 * @param resources
-	 * @return
-	 */
-	protected static ResourceFilter getExtensionalFilter(Resource... resources) {
-		return null;
-	}
 
-	protected static ResourceFilter getDataTypeFilter(UriRef dataType) {
-		return null;
-	}
 
 	/** utility method to filter an iterator
 	 *
 	 */
-	protected Iterator<Triple> filter(NonLiteral subject, UriRef predicate,
+	protected Iterator<Triple> filterIterator(NonLiteral subject, UriRef predicate,
 			Resource object, final Iterator<Triple> baseIter) {
 		//TODO filter on the fly without list
 		final List<Triple> tripleList = new ArrayList<Triple>();

Added: incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriples.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriples.java?rev=965411&view=auto
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriples.java (added)
+++ incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriples.java Mon Jul 19 10:13:36 2010
@@ -0,0 +1,72 @@
+/*
+ * 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.clerezza.rdf.enrichment;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import org.apache.clerezza.rdf.core.NonLiteral;
+import org.apache.clerezza.rdf.core.Resource;
+import org.apache.clerezza.rdf.core.Triple;
+import org.apache.clerezza.rdf.core.TripleCollection;
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.impl.AbstractTripleCollection;
+import org.apache.clerezza.utils.IteratorMerger;
+
+/**
+ * Given a base graph and a set of Enrichers this TripleCollection contains
+ * the triples provided by the enrichers.
+ *
+ * @author reto
+ */
+public class EnrichmentTriples extends AbstractTripleCollection {
+
+	private TripleCollection base;
+	private Collection<Enricher> enrichers;
+	
+	public EnrichmentTriples(TripleCollection base, Collection<Enricher> enrichers) {
+		this.base = base;
+		this.enrichers = enrichers;
+	}
+
+	@Override
+	protected Iterator<Triple> performFilter(NonLiteral subject,
+			UriRef predicate, Resource object) {
+		Collection<Iterator<Triple>> iteratorCollection =
+				new ArrayList<Iterator<Triple>>(enrichers.size());
+
+		for (Enricher enricher : enrichers) {
+			if (enricher.getSubjectFilter().accept(subject, base) &&
+				enricher.getPropertyFilter().accept(predicate, base) &&
+				enricher.getObjectFilter().accept(object, base)) {
+				iteratorCollection.add(enricher.filter(subject, predicate, object, base));
+
+			}
+		}
+		return new IteratorMerger<Triple>(iteratorCollection.iterator());
+	}
+
+	@Override
+	public int size() {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+}

Modified: incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/OrConnector.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/OrConnector.java?rev=965411&r1=965410&r2=965411&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/OrConnector.java (original)
+++ incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/main/java/org/apache/clerezza/rdf/enrichment/OrConnector.java Mon Jul 19 10:13:36 2010
@@ -20,6 +20,7 @@
 package org.apache.clerezza.rdf.enrichment;
 
 import org.apache.clerezza.rdf.core.Resource;
+import org.apache.clerezza.rdf.core.TripleCollection;
 import org.apache.clerezza.rdf.enrichment.Enricher.ResourceFilter;
 
 /**
@@ -37,9 +38,9 @@ public class OrConnector extends Resourc
 	}
 
 	@Override
-	public boolean accept(Resource resource) {
+	public boolean accept(Resource resource, TripleCollection tc) {
 		for (ResourceFilter resourceFilter : baseFilters) {
-			if (resourceFilter.accept(resource)) {
+			if (resourceFilter.accept(resource, tc)) {
 				return true;
 			}
 		}

Modified: incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/CityWeatherEnricher.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/CityWeatherEnricher.java?rev=965411&r1=965410&r2=965411&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/CityWeatherEnricher.java (original)
+++ incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/CityWeatherEnricher.java Mon Jul 19 10:13:36 2010
@@ -55,7 +55,7 @@ public class CityWeatherEnricher extends
 
 	/*
 	 * we might be able to tell more about things that are a City and about
-	 * the Waether-Bnode we created
+	 * the Weather-Bnode we created
 	 */
 	@Override
 	public ResourceFilter getSubjectFilter() {
@@ -114,7 +114,7 @@ public class CityWeatherEnricher extends
 			final UriRef predicate, final Resource object,
 			final TripleCollection base) {
 		Set<Triple> resultSet = new HashSet<Triple>();
-		if (classCityFilter.accept(subject)) {
+		if (classCityFilter.accept(subject, base)) {
 			if (predicate.equals(weatherProperty)) {
 				BNode weatherNode = getWeatherNode(subject);
 				resultSet.add(new TripleImpl(subject, predicate, weatherNode));

Added: incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriplesTest.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriplesTest.java?rev=965411&view=auto
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriplesTest.java (added)
+++ incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/EnrichmentTriplesTest.java Mon Jul 19 10:13:36 2010
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.clerezza.rdf.enrichment;
+
+import java.util.Collections;
+import org.apache.clerezza.rdf.core.MGraph;
+import org.apache.clerezza.rdf.core.NonLiteral;
+import org.apache.clerezza.rdf.core.Resource;
+import org.apache.clerezza.rdf.core.TripleCollection;
+import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
+import org.apache.clerezza.rdf.core.impl.TripleImpl;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ *
+ * @author reto
+ */
+public class EnrichmentTriplesTest {
+
+	@Test
+	public void siblingAddition() {
+		MGraph base = new SimpleMGraph();
+		Enricher siblingEnricher = new SiblingEnricher();
+		TripleCollection enrichmentTriples = new EnrichmentTriples(base,
+				Collections.singleton(siblingEnricher));
+		NonLiteral grandMother = new UriRef("http://example.org/grand");
+		NonLiteral mother = new UriRef("http://example.org/mother");
+		NonLiteral me = new UriRef("http://example.org/me");
+		NonLiteral sister = new UriRef("http://example.org/sister");
+		NonLiteral uncle = new UriRef("http://example.org/uncle");
+		NonLiteral cousin = new UriRef("http://example.org/cousin");
+		base.add(new TripleImpl(me, SiblingEnricher.parentProperty, mother));
+		base.add(new TripleImpl(sister, SiblingEnricher.parentProperty, mother));
+		base.add(new TripleImpl(mother, SiblingEnricher.parentProperty, grandMother));
+		base.add(new TripleImpl(uncle, SiblingEnricher.parentProperty, grandMother));
+		base.add(new TripleImpl(cousin, SiblingEnricher.parentProperty, uncle));
+		Assert.assertTrue(enrichmentTriples.filter(sister, SiblingEnricher.siblingProperty, me).hasNext());
+		Assert.assertTrue(enrichmentTriples.filter(uncle, SiblingEnricher.siblingProperty, mother).hasNext());
+		Assert.assertFalse(enrichmentTriples.filter(uncle, SiblingEnricher.siblingProperty, sister).hasNext());
+	}
+
+
+
+}

Modified: incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/SiblingEnricher.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/SiblingEnricher.java?rev=965411&r1=965410&r2=965411&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/SiblingEnricher.java (original)
+++ incubator/clerezza/issues/CLEREZZA-218/org.apache.clerezza.rdf.enrichment/org.apache.clerezza.rdf.enrichment.core/src/test/java/org/apache/clerezza/rdf/enrichment/SiblingEnricher.java Mon Jul 19 10:13:36 2010
@@ -43,8 +43,8 @@ public class SiblingEnricher extends Enr
 	/**
 	 * points to the parent of the subject
 	 */
-	UriRef parentProperty = new UriRef("http://example.org/ontology#parent");
-	UriRef siblingProperty = new UriRef("http://example.org/ontology#sibling");
+	static UriRef parentProperty = new UriRef("http://example.org/ontology#parent");
+	static UriRef siblingProperty = new UriRef("http://example.org/ontology#sibling");
 
 	/*
 	 * we might be able to tell more about things tht have a parent