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


Reply via email to