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