Author: reto
Date: Sat Mar  5 17:17:55 2011
New Revision: 1078313

URL: http://svn.apache.org/viewvc?rev=1078313&view=rev
Log:
CLEREZZA-388: supporting joined-properties

Modified:
    
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/GraphIndexer.scala
    
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/VirtualProperty.scala
    
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/test/scala/org/apache/clerezza/rdf/cris/GraphIndexerTest.scala

Modified: 
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/GraphIndexer.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/GraphIndexer.scala?rev=1078313&r1=1078312&r2=1078313&view=diff
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/GraphIndexer.scala
 (original)
+++ 
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/GraphIndexer.scala
 Sat Mar  5 17:17:55 2011
@@ -70,7 +70,7 @@ class GraphIndexer(definitionGraph: Trip
        private[this] val URI_FIELD_NAME = "resource-uri"
        private[this] val logger = 
LoggerFactory.getLogger(classOf[GraphIndexer])
 
-       private[this] var type2IndexedProperties = Map[UriRef, 
Seq[VirtualProperty]]()
+       private[this] var type2IndexedProperties: Map[UriRef, 
Seq[VirtualProperty]] = null
        private[this] var property2TypeMap = Map[VirtualProperty, 
mutable.Set[UriRef]]()
        //private[this] var indexedProperties: Seq[UriRef] = null
 
@@ -193,10 +193,12 @@ class GraphIndexer(definitionGraph: Trip
                
                def resourceToDocument(resource: UriRef, resourceType: UriRef) 
= {
                        val doc = new Document
-                       for (vProperty <- type2IndexedProperties(resourceType)) 
{
+      val indexedProperties = type2IndexedProperties(resourceType)
+      logger.info("indexing "+resource+" considering 
"+indexedProperties.size+" properties ("+indexedProperties+")")
+                       for (vProperty <- indexedProperties) {
                                logger.debug("indexing "+vProperty+" with 
values "+(vProperty.value(resource)).length)
                                for (propertyValue <- 
vProperty.value(resource)) {
-                                       logger.info("indexing "+vProperty+" 
with value "+(propertyValue))
+                                       logger.debug("indexing 
"+vProperty+"("+vProperty.stringKey+") with value "+(propertyValue))
                                        doc.add(new Field(vProperty.stringKey,
                                                                          
propertyValue,
                                                                          
Field.Store.YES,
@@ -239,7 +241,10 @@ class GraphIndexer(definitionGraph: Trip
                val instances = (for ((indexedType,_) <- 
type2IndexedProperties) yield (indexedType)/-RDF.`type`).flatten
                //logger.debug("instances "+instances.length)
                val writer = new IndexWriter(index, analyzer, true, 
IndexWriter.MaxFieldLength.UNLIMITED);
-               for (instance <- instances) indexResource(instance!, writer)
+               for (instance <- instances) {
+      //println("indexing "+instance)
+      indexResource(instance!, writer)
+    }
                writer.close
 
        }
@@ -251,6 +256,7 @@ class GraphIndexer(definitionGraph: Trip
        def findResources(conditions: Condition*) = {
                val booleanQuery = new BooleanQuery()
                for (c <- conditions) {
+      println("adding query "+c.query+" from "+c)
                        booleanQuery.add(c.query, BooleanClause.Occur.MUST)
                }
                val searcher = new IndexSearcher(index, true);

Modified: 
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/VirtualProperty.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/VirtualProperty.scala?rev=1078313&r1=1078312&r2=1078313&view=diff
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/VirtualProperty.scala
 (original)
+++ 
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/VirtualProperty.scala
 Sat Mar  5 17:17:55 2011
@@ -40,7 +40,10 @@ case class PropertyHolder(property: UriR
 
 case class JoinVirtualProperty(properties: List[VirtualProperty]) extends 
VirtualProperty {
        val stringKey = "J"+VirtualProperty.listDigest(properties)
-       def value(node: RichGraphNode): Seq[String] = Seq("")
+  private def singleValue(node: RichGraphNode): String = (for (property <- 
properties) yield {
+    property.value(node).mkString(" ")
+  }).mkString(" ")
+       def value(node: RichGraphNode): Seq[String] = Seq(singleValue(node))
 }
 
 case class PathVirtualProperty(properties: List[VirtualProperty]) extends 
VirtualProperty {

Modified: 
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/test/scala/org/apache/clerezza/rdf/cris/GraphIndexerTest.scala
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/test/scala/org/apache/clerezza/rdf/cris/GraphIndexerTest.scala?rev=1078313&r1=1078312&r2=1078313&view=diff
==============================================================================
--- 
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/test/scala/org/apache/clerezza/rdf/cris/GraphIndexerTest.scala
 (original)
+++ 
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/test/scala/org/apache/clerezza/rdf/cris/GraphIndexerTest.scala
 Sat Mar  5 17:17:55 2011
@@ -73,6 +73,7 @@ class GraphIndexerTest {
                node.addPropertyValue(FOAF.firstName, "John")
                node.addPropertyValue(FOAF.firstName, "William")
                node.addPropertyValue(FOAF.lastName, "Smith")
+    node.addPropertyValue(RDFS.comment, "A person with two names")
                service = new GraphIndexer(definitions, dataGraph)
        }
 
@@ -168,6 +169,39 @@ class GraphIndexerTest {
                Assert.assertEquals(2, results2.length)
        }
 
+   @Test
+  def reIndexWithoutActualChange {
+               service.reCreateIndex();
+    {
+      //the old data still available
+      val results = service.findResources(FOAF.firstName, "*Joe*")
+                 Assert.assertEquals(2, results.size)
+    }
+  }
+
+  @Test
+  def reIndexTest {
+    //import VirtualProperties._
+               //val joinProperty = JoinVirtualProperty(List(FOAF.firstName, 
FOAF.lastName))
+               val indexDefinitionManager = new IndexDefinitionManager {
+      val definitionGraph = definitions
+    }
+    println("size before: "+definitions.size)
+               indexDefinitionManager.addDefinition(FOAF.Person, 
FOAF.firstName, FOAF.lastName, RDFS.comment)
+    println("size after: "+definitions.size)
+               service.reCreateIndex();
+    {
+      //the old data still available
+      val results = service.findResources(FOAF.firstName, "*Joe*")
+                 Assert.assertEquals(2, results.size)
+    }
+    {
+      //the newly indexed property
+                       val results = 
service.findResources(RDFS.comment,"*two*")
+                       Assert.assertEquals(1, results.size)
+               }
+  }
+
        @Test
        def testJoinProperty {
                import VirtualProperties._
@@ -178,7 +212,7 @@ class GraphIndexerTest {
                indexDefinitionManager.addDefinition(FOAF.Person, joinProperty)
                service.reCreateIndex();
                {
-                       val results = service.findResources(joinProperty,"John")
+                       val results = 
service.findResources(joinProperty,"*John*")
                        Assert.assertEquals(2, results.size)
                }
                {


Reply via email to