Author: reto
Date: Sun Mar  6 08:41:41 2011
New Revision: 1078424

URL: http://svn.apache.org/viewvc?rev=1078424&view=rev
Log:
CLEREZZA-388: basic structure and failing test for path-virtual 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/IndexDefinitionManager.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=1078424&r1=1078423&r2=1078424&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
 Sun Mar  6 08:41:41 2011
@@ -88,12 +88,17 @@ class GraphIndexer(definitionGraph: Trip
                                        import collection.JavaConversions._
                                        new JoinVirtualProperty(propertyList)
                                } else {
-                                       //TODO add other cases
-                                       if ((r!).isInstanceOf[UriRef]) {
-                                               new 
PropertyHolder((r!).asInstanceOf[UriRef])
-                                       } else {
-                                               throw new RuntimeException(r+" 
is not of a knows VirtualProperty type and its not a UriRef  (it's a 
"+(r!).getClass)
-                                       }
+                                       if (r.hasProperty(RDF.`type`, 
CRIS.PathVirtualProperty)) {
+            import collection.JavaConversions._
+            new PathVirtualProperty(propertyList)
+          } else {
+            //TODO add other cases
+            if ((r!).isInstanceOf[UriRef]) {
+              new PropertyHolder((r!).asInstanceOf[UriRef])
+            } else {
+              throw new RuntimeException(r+" is not of a knows VirtualProperty 
type and its not a UriRef  (it's a "+(r!).getClass)
+            }
+          }
                                }
                }
                val indexDefinitionsResources = CRIS.IndexDefinition/-RDF.`type`

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=1078424&r1=1078423&r2=1078424&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
 Sun Mar  6 08:41:41 2011
@@ -57,7 +57,20 @@ trait IndexDefinitionManager {
           definitionGraph.add(new TripleImpl(virtualProperty, 
CRIS.propertyList, listBNode))
           val rdfList = new RdfList(listBNode, definitionGraph)
           for (p <- l) {
-                                               println("adding "+p)
+            rdfList.add(asResource(p))
+          }
+          virtualProperty
+        }
+        case PathVirtualProperty(l) => {
+                                       if (l.size == 0) {
+                                               throw new RuntimeException("vp 
"+vp+" conatins an empty list")
+                                       }
+          val virtualProperty = new BNode
+          definitionGraph.add(new TripleImpl(virtualProperty, RDF.`type`, 
CRIS.PathVirtualProperty))
+          val listBNode = new BNode
+          definitionGraph.add(new TripleImpl(virtualProperty, 
CRIS.propertyList, listBNode))
+          val rdfList = new RdfList(listBNode, definitionGraph)
+          for (p <- l) {
             rdfList.add(asResource(p))
           }
           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=1078424&r1=1078423&r2=1078424&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
 Sun Mar  6 08:41:41 2011
@@ -39,6 +39,7 @@ class GraphIndexerTest {
        val definitions = new SimpleMGraph
        val dataGraph = new SimpleMGraph
        var service: GraphIndexer = null
+  val ownsPetProperty = new UriRef("http://example.org/pet#owns";)
 
        def createPerson(firstName: String, lastName: String) {
                val node = new GraphNode(new UriRef(Util.createURN5), dataGraph)
@@ -74,6 +75,12 @@ class GraphIndexerTest {
                node.addPropertyValue(FOAF.firstName, "William")
                node.addPropertyValue(FOAF.lastName, "Smith")
     node.addPropertyValue(RDFS.comment, "A person with two names")
+    //and a pet
+    val pet = new BNode
+    node.addProperty(ownsPetProperty, pet)
+    val p = new Preamble(dataGraph)
+    import p._
+    pet.addPropertyValue(FOAF.name, "Silvio")
                service = new GraphIndexer(definitions, dataGraph)
        }
 
@@ -232,4 +239,19 @@ class GraphIndexerTest {
                  Assert.assertEquals(3, results.size)
     }
        }
+
+  @Test
+  def partProperty {
+    import VirtualProperties._
+               val pathProperty = PathVirtualProperty(List(ownsPetProperty, 
FOAF.name))
+    val indexDefinitionManager = new IndexDefinitionManager {
+      val definitionGraph = definitions
+    }
+               indexDefinitionManager.addDefinition(FOAF.Person, 
FOAF.firstName, FOAF.lastName, pathProperty)
+    service.reCreateIndex();
+               {
+                       val results = 
service.findResources(pathProperty,"Silvio")
+                       Assert.assertEquals(1, results.size)
+               }
+  }
 }


Reply via email to