Author: reto
Date: Thu Feb 24 11:04:12 2011
New Revision: 1074110
URL: http://svn.apache.org/viewvc?rev=1074110&view=rev
Log:
CLEREZZA-388: prepared for supporting virtual properties
Added:
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/VirtualProperty.scala
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/IndexDefinitionManager.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=1074110&r1=1074109&r2=1074110&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
Thu Feb 24 11:04:12 2011
@@ -50,7 +50,7 @@ import org.apache.lucene.analysis.Analyz
* @param baseGraph the TripleCollection containing the resources to be indexed
* @param index the place to store the lucene index
* @param createNewIndex true if the index shall be (re)created based on the
data
- * already in BaseGrap, when the definitions changed this should be set to true
+ * already in BaseGraph, when the definitions changed this should be set to
true
*
* @author reto
*/
@@ -69,7 +69,7 @@ class GraphIndexer(definitions: TripleCo
private[this] val URI_FIELD_NAME = "resource-uri"
private[this] val logger =
LoggerFactory.getLogger(classOf[GraphIndexer])
- private[this] var type2IndexedProperties = Map[UriRef, Seq[UriRef]]()
+ private[this] var type2IndexedProperties = Map[UriRef,
Seq[VirtualProperty]]()
private[this] var property2TypeMap = Map[UriRef, mutable.Set[UriRef]]()
//private[this] var indexedProperties: Seq[UriRef] = null
@@ -77,18 +77,20 @@ class GraphIndexer(definitions: TripleCo
val definitionsPreamble = new Preamble(definitions)
import definitionsPreamble._
val indexDefinitionsResources = CRIS.IndexDefinition/-RDF.`type`
- type2IndexedProperties = Map((for (d <-
indexDefinitionsResources;
-
tUri = (d/CRIS.indexedType!).asInstanceOf[UriRef])
- yield (tUri,
- for (p <-
d/CRIS.indexedProperty) yield {
- val pUri =
(p!).asInstanceOf[UriRef]
- if
(property2TypeMap.contains(pUri)) {
- property2TypeMap(pUri)
+= (tUri)
- } else {
- property2TypeMap +=
(pUri -> mutable.Set(tUri))
- }
- pUri
- })): _*)
+ def type2IndexedPropertiesTuples: Seq[(UriRef,
Seq[VirtualProperty])] =
+ for (d <- indexDefinitionsResources;
+ tUri = (d / CRIS.indexedType
!).asInstanceOf[UriRef])
+ yield (tUri,
+ for (p <- d / CRIS.indexedProperty) yield {
+ val pUri = (p !).asInstanceOf[UriRef]
+ if (property2TypeMap.contains(pUri)) {
+ property2TypeMap(pUri) += (tUri)
+ } else {
+ property2TypeMap += (pUri ->
mutable.Set(tUri))
+ }
+ new PropertyHolder(pUri)
+ })
+ type2IndexedProperties = Map(type2IndexedPropertiesTuples: _*)
}
processDefinitions()
@@ -104,7 +106,7 @@ class GraphIndexer(definitions: TripleCo
for (e <- events) {
val triple = e.getTriple
logger.debug("processing addition of type
"+triple.getObject)
- //not understanding why contains isn't working here (why dynamic
conversion seems to be applied)
+ //not understanding why contains isn't working
here (why dynamic conversion seems to be applied)
if
(type2IndexedProperties.containsKey(triple.getObject)) {
scheduleForReindex(triple.getSubject)
}
@@ -170,12 +172,12 @@ class GraphIndexer(definitions: TripleCo
def resourceToDocument(resource: UriRef, resourceType: UriRef)
= {
val doc = new Document
- for (property <- type2IndexedProperties(resourceType)) {
- logger.debug("indexing "+property+" with values
"+(resource/property).length)
- for (propertyValue <- resource/property) {
- logger.debug("indexing "+property+"
with value "+(propertyValue*))
- doc.add(new
Field(property.getUnicodeString,
-
propertyValue*,
+ for (vProperty <- type2IndexedProperties(resourceType))
{
+ logger.debug("indexing "+vProperty+" with
values "+(vProperty.value(resource)).length)
+ for (propertyValue <-
vProperty.value(resource)) {
+ logger.debug("indexing "+vProperty+"
with value "+(propertyValue))
+ doc.add(new Field(vProperty.name,
+
propertyValue,
Field.Store.YES,
Field.Index.NOT_ANALYZED))
}
@@ -247,4 +249,4 @@ class GraphIndexer(definitions: TripleCo
}
result
}
-}
+}
\ No newline at end of file
Modified:
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/IndexDefinitionManager.scala
URL:
http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/IndexDefinitionManager.scala?rev=1074110&r1=1074109&r2=1074110&view=diff
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/IndexDefinitionManager.scala
(original)
+++
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/IndexDefinitionManager.scala
Thu Feb 24 11:04:12 2011
@@ -34,7 +34,7 @@ trait IndexDefinitionManager {
/**
* Defines an index for the specified types and properties, removing
- * previous index deinitions for that type
+ * previous index definitions for that type
*/
def addDefinition(rdfType: UriRef, properties: UriRef*) {
deleteDefinition(rdfType)
Added:
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=1074110&view=auto
==============================================================================
---
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/VirtualProperty.scala
(added)
+++
incubator/clerezza/issues/CLEREZZA-388/rdf.cris/core/src/main/scala/org/apache/clerezza/rdf/cris/VirtualProperty.scala
Thu Feb 24 11:04:12 2011
@@ -0,0 +1,44 @@
+/*
+ * 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.cris
+
+import org.apache.clerezza.rdf.core.UriRef
+import org.apache.clerezza.rdf.scala.utils.RichGraphNode
+import org.apache.clerezza.rdf.scala.utils.Preamble._
+
+abstract class VirtualProperty {
+ def name: String
+ def value(node: RichGraphNode): Seq[String]
+}
+
+class PropertyHolder(property: UriRef) extends VirtualProperty {
+ def name = property.getUnicodeString
+ def value(node: RichGraphNode): Seq[String] = for (v <- node/property)
yield v*
+}
+
+class JoinVirtualProperty(properties: List[VirtualProperty]) extends
VirtualProperty {
+ def name = "Join of ..."
+ def value(node: RichGraphNode): Seq[String] = Seq("")
+}
+
+class PathVirtualProperty(properties: List[VirtualProperty]) extends
VirtualProperty {
+ def name = "Path ..."
+ def value(node: RichGraphNode): Seq[String] = Seq("")
+}
\ No newline at end of file