You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2013/06/25 16:45:08 UTC

svn commit: r1496497 - in /jena/trunk/jena-text: src/main/java/org/apache/jena/query/text/ src/test/java/org/apache/jena/query/text/ testing/TextQuery/

Author: andy
Date: Tue Jun 25 14:45:08 2013
New Revision: 1496497

URL: http://svn.apache.org/r1496497
Log:
JENA-477 : Fixing working with TDB, esp default union graph.
Add tests to pin down expected functionality.

Added:
    jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java
      - copied, changed from r1495993, jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/QueryPF.java
    jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/EmbeddedSolr.java
      - copied, changed from r1495943, jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/EMBEDDED_SOLR.java
    jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestTextTDB.java
    jena/trunk/jena-text/testing/TextQuery/text-config-union.ttl
Removed:
    jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/QueryPF.java
    jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/EMBEDDED_SOLR.java
Modified:
    jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java
    jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextDatasetFactory.java
    jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
    jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextQuery.java
    jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TS_Text.java
    jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestBuildTextDataset.java
    jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestDatasetWithEmbeddedSolrTextIndex.java
    jena/trunk/jena-text/testing/TextQuery/data1.ttl
    jena/trunk/jena-text/testing/TextQuery/text-config.ttl

Modified: jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java?rev=1496497&r1=1496496&r2=1496497&view=diff
==============================================================================
--- jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java (original)
+++ jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/EntityDefinition.java Tue Jun 25 14:45:08 2013
@@ -18,11 +18,15 @@
 
 package org.apache.jena.query.text ;
 
-import java.util.* ;
+import java.util.Collection ;
+import java.util.Collections ;
+import java.util.HashMap ;
+import java.util.Map ;
 
 import org.apache.jena.atlas.lib.MultiMap ;
 
 import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.rdf.model.Resource ;
 
 /**
  * Definition of a "document"
@@ -56,11 +60,24 @@ public class EntityDefinition {
      * @param primaryPredicate
      *            The property associated with the primary/default field
      */
+    public EntityDefinition(String entityField, String primaryField, Resource primaryPredicate) {
+        this(entityField, primaryField, primaryPredicate.asNode()) ;
+    }
+
+    /**
+     * @param entityField
+     *            The entity being indexed (e.g. it's URI).
+     * @param primaryField
+     *            The primary/default field to search
+     * @param primaryPredicate
+     *            The property associated with the primary/default field
+     */
     public EntityDefinition(String entityField, String primaryField, Node primaryPredicate) {
         this(entityField, primaryField) ;
         set(primaryField, primaryPredicate) ;
     }
 
+
     public String getEntityField() {
         return entityField ;
     }

Modified: jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextDatasetFactory.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextDatasetFactory.java?rev=1496497&r1=1496496&r2=1496497&view=diff
==============================================================================
--- jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextDatasetFactory.java (original)
+++ jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextDatasetFactory.java Tue Jun 25 14:45:08 2013
@@ -26,6 +26,7 @@ import com.hp.hpl.jena.query.Dataset ;
 import com.hp.hpl.jena.query.DatasetFactory ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph ;
 import com.hp.hpl.jena.sparql.core.assembler.AssemblerUtils ;
+import com.hp.hpl.jena.sparql.util.Context ;
 
 public class TextDatasetFactory
 {
@@ -51,6 +52,9 @@ public class TextDatasetFactory
     {
         TextDocProducer producer = new TextDocProducerTriples(textIndex.getDocDef(), textIndex) ;
         DatasetGraph dsgt = new DatasetGraphText(dsg, textIndex, producer) ;
+        // Also set on dsg
+        Context c = dsgt.getContext() ;
+        
         dsgt.getContext().set(TextQuery.textIndex, textIndex) ;
         return dsgt ;
 

Modified: jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java?rev=1496497&r1=1496496&r2=1496497&view=diff
==============================================================================
--- jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java (original)
+++ jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextIndexLucene.java Tue Jun 25 14:45:08 2013
@@ -121,8 +121,14 @@ public class TextIndexLucene implements 
         if ( log.isDebugEnabled() )
             log.debug("Add entity: "+entity) ;
         try {
+            boolean autoBatch = (indexWriter == null) ;
+            
             Document doc = doc(entity) ;
+            if ( autoBatch )
+                startIndexing() ;
             indexWriter.addDocument(doc) ;
+            if ( autoBatch )
+                finishIndexing() ;
         } catch (IOException e) { exception(e) ; }
     }
 

Modified: jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextQuery.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextQuery.java?rev=1496497&r1=1496496&r2=1496497&view=diff
==============================================================================
--- jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextQuery.java (original)
+++ jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextQuery.java Tue Jun 25 14:45:08 2013
@@ -36,7 +36,7 @@ public class TextQuery
     private static Object lock = new Object() ;
     public static String NS = "http://jena.apache.org/text#" ;
     public static String IRI = "http://jena.apache.org/#text" ;
-    public static final Symbol textIndex = Symbol.create(NS+"#index") ;
+    public static final Symbol textIndex = Symbol.create(NS+"index") ;
     public static final String PATH         = "org.apache.jena.query.text";
     
     static private String metadataLocation  = "org/apache/jena/query/text/properties.xml" ;
@@ -65,7 +65,7 @@ public class TextQuery
             PropertyFunctionRegistry.get().put("http://jena.apache.org/text#query", new PropertyFunctionFactory() {
                 @Override
                 public PropertyFunction create(String uri) {
-                    return new QueryPF() ;
+                    return new TextQueryPF() ;
                 }
             });
         }

Copied: jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java (from r1495993, jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/QueryPF.java)
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java?p2=jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java&p1=jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/QueryPF.java&r1=1495993&r2=1496497&rev=1496497&view=diff
==============================================================================
--- jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/QueryPF.java (original)
+++ jena/trunk/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java Tue Jun 25 14:45:08 2013
@@ -41,12 +41,13 @@ import com.hp.hpl.jena.sparql.engine.ite
 import com.hp.hpl.jena.sparql.mgt.Explain ;
 import com.hp.hpl.jena.sparql.pfunction.PropFuncArg ;
 import com.hp.hpl.jena.sparql.pfunction.PropertyFunctionBase ;
+import com.hp.hpl.jena.sparql.util.Context ;
 import com.hp.hpl.jena.sparql.util.IterLib ;
 import com.hp.hpl.jena.sparql.util.NodeFactoryExtra ;
 
 /** property function that accesses a Solr server */
-public class QueryPF extends PropertyFunctionBase {
-    private static Logger log           = LoggerFactory.getLogger(QueryPF.class) ;
+public class TextQueryPF extends PropertyFunctionBase {
+    private static Logger log           = LoggerFactory.getLogger(TextQueryPF.class) ;
     /*
      * ?uri :queryPF (property? "string" limit? score?) score? not implemented
      */
@@ -54,7 +55,7 @@ public class QueryPF extends PropertyFun
     private TextIndex     server        = null ;
     private boolean       warningIssued = false ;
 
-    public QueryPF() {}
+    public TextQueryPF() {}
 
     @Override
     public void build(PropFuncArg argSubject, Node predicate, PropFuncArg argObject, ExecutionContext execCxt) {
@@ -77,13 +78,16 @@ public class QueryPF extends PropertyFun
     }
 
     private static TextIndex chooseTextIndex(DatasetGraph dsg) {
+        
+        Context c = dsg.getContext() ; 
+        
         Object obj = dsg.getContext().get(TextQuery.textIndex) ;
 
         if (obj != null) {
             try {
                 return (TextIndex)obj ;
             } catch (ClassCastException ex) {
-                Log.warn(QueryPF.class, "Context setting '" + TextQuery.textIndex + "'is not a TextIndex") ;
+                Log.warn(TextQueryPF.class, "Context setting '" + TextQuery.textIndex + "'is not a TextIndex") ;
             }
         }
 
@@ -91,7 +95,7 @@ public class QueryPF extends PropertyFun
             DatasetGraphText x = (DatasetGraphText)dsg ;
             return x.getTextIndex() ;
         }
-        Log.warn(QueryPF.class, "Failed to find the text index : tried context and as a text-enabled dataset") ;
+        Log.warn(TextQueryPF.class, "Failed to find the text index : tried context and as a text-enabled dataset") ;
         return null ;
     }
 

Copied: jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/EmbeddedSolr.java (from r1495943, jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/EMBEDDED_SOLR.java)
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/EmbeddedSolr.java?p2=jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/EmbeddedSolr.java&p1=jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/EMBEDDED_SOLR.java&r1=1495943&r2=1496497&rev=1496497&view=diff
==============================================================================
--- jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/EMBEDDED_SOLR.java (original)
+++ jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/EmbeddedSolr.java Tue Jun 25 14:45:08 2013
@@ -20,9 +20,9 @@ package org.apache.jena.query.text;
 
 import java.io.File;
 
-public class EMBEDDED_SOLR {
-	public static final String DATA_PATH = "target/test/SolrARQ/data";
-	public static final File DATA_DIR = new File(DATA_PATH);
-	public static final String INDEX_PATH = DATA_PATH + "/index";
-	public static final File INDEX_DIR = new File(INDEX_PATH);
+public class EmbeddedSolr {
+	public static final String  DATA_PATH      = "target/test/SolrARQ/data";
+	public static final File    DATA_DIR       = new File(DATA_PATH);
+	public static final String  INDEX_PATH     = DATA_PATH + "/index";
+	public static final File    INDEX_DIR      = new File(INDEX_PATH);
 }

Modified: jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TS_Text.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TS_Text.java?rev=1496497&r1=1496496&r2=1496497&view=diff
==============================================================================
--- jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TS_Text.java (original)
+++ jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TS_Text.java Tue Jun 25 14:45:08 2013
@@ -37,9 +37,8 @@ import org.junit.runners.Suite.SuiteClas
     , TestTextDatasetAssembler.class
     , TestTextIndexLuceneAssembler.class
     , TestTextIndexSolrAssembler.class
+    , TestTextTDB.class
 })
 
 public class TS_Text
 { }
-
-

Modified: jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestBuildTextDataset.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestBuildTextDataset.java?rev=1496497&r1=1496496&r2=1496497&view=diff
==============================================================================
--- jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestBuildTextDataset.java (original)
+++ jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestBuildTextDataset.java Tue Jun 25 14:45:08 2013
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.jena.query.text;
+package org.apache.jena.query.text ;
 
 import org.apache.jena.atlas.junit.BaseTest ;
 import org.apache.jena.atlas.lib.StrUtils ;
@@ -28,90 +28,103 @@ import org.junit.Test ;
 
 import com.hp.hpl.jena.query.* ;
 import com.hp.hpl.jena.rdf.model.Model ;
+import com.hp.hpl.jena.tdb.TDB ;
 import com.hp.hpl.jena.vocabulary.RDFS ;
 
-/** Test the examples of building a test dataset */ 
+/** Test the examples of building a test dataset */
 public class TestBuildTextDataset extends BaseTest
 {
     static final String DIR = "testing/TextQuery" ;
 
-    // Ensure assembler initialized. 
-    @BeforeClass public static void setupClass() { TextQuery.init() ; } 
-    
-    @Test public void buildText_01() { createAssembler() ; }
-
-    @Test public void buildText_02() { createCode() ; }
-    
-    @Test public void buildText_03()
-    { 
-        Dataset ds = createAssembler() ;
+    // Ensure assembler initialized.
+    @BeforeClass
+    public static void setupClass() {
+        TextQuery.init() ;
+    }
+
+    @Test
+    public void buildText_01() {
+        createAssembler("text-config.ttl") ;
+    }
+
+    @Test
+    public void buildText_02() {
+        Dataset ds = createAssembler("text-config-union.ttl") ;
+        assertTrue(ds.getContext().isDefined(TextQuery.textIndex)) ;
+        assertTrue(ds.getContext().isDefined(TDB.symUnionDefaultGraph)) ;
+    }
+
+    @Test
+    public void buildText_03() {
+        createCode() ;
+    }
+
+    @Test
+    public void buildText_04() {
+        Dataset ds = createAssembler("text-config.ttl") ;
         loadData(ds) ;
         queryData(ds) ;
     }
 
-    @Test public void buildText_04()
-    { 
+    @Test
+    public void buildText_05() {
         Dataset ds = createCode() ;
         loadData(ds) ;
         queryData(ds) ;
     }
 
-    private void loadData(Dataset dataset)
-    {
+    private void loadData(Dataset dataset) {
         dataset.begin(ReadWrite.WRITE) ;
         try {
             Model m = dataset.getDefaultModel() ;
-            RDFDataMgr.read(m, DIR+"/data1.ttl") ;
+            RDFDataMgr.read(m, DIR + "/data1.ttl") ;
             dataset.commit() ;
-        } finally { dataset.end() ; }
+        }
+        finally {
+            dataset.end() ;
+        }
     }
 
-    public static void queryData(Dataset dataset)
-    {
-        String pre = StrUtils.strjoinNL
-            ( "PREFIX : <http://example/>"
-              , "PREFIX text: <http://jena.apache.org/text#>"
-              , "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>") ;
-
-        String qs = StrUtils.strjoinNL
-            ( "SELECT * "
-              , " { ?s text:query (rdfs:label 'X1') ;"
-              , "      rdfs:label ?label"
-              , " }") ; 
+    public static void queryData(Dataset dataset) {
+        String pre = StrUtils.strjoinNL("PREFIX : <http://example/>", "PREFIX text: <http://jena.apache.org/text#>",
+                                        "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>") ;
+
+        String qs = StrUtils.strjoinNL("SELECT * ", " { ?s text:query (rdfs:label 'X1') ;", "      rdfs:label ?label",
+                                       " }") ;
 
         dataset.begin(ReadWrite.READ) ;
         try {
-            Query q = QueryFactory.create(pre+"\n"+qs) ;
-            QueryExecution qexec = QueryExecutionFactory.create(q , dataset) ;
+            Query q = QueryFactory.create(pre + "\n" + qs) ;
+            QueryExecution qexec = QueryExecutionFactory.create(q, dataset) ;
             int x = ResultSetFormatter.consume(qexec.execSelect()) ;
             qexec.close() ;
             assertEquals("Unexpected result count", 2, x) ;
-        } finally { dataset.end() ; }
+        }
+        finally {
+            dataset.end() ;
+        }
     }
 
-    public static Dataset createCode() 
-    {
+    public static Dataset createCode() {
         // Base data
-        Dataset ds1 = DatasetFactory.createMem() ; 
+        Dataset ds1 = DatasetFactory.createMem() ;
 
-        // Define the index mapping 
+        // Define the index mapping
         EntityDefinition entDef = new EntityDefinition("uri", "text", RDFS.label.asNode()) ;
 
         // Lucene, in memory.
-        Directory dir =  new RAMDirectory();
-        
+        Directory dir = new RAMDirectory() ;
+
         // Join together into a dataset
         Dataset ds = TextDatasetFactory.createLucene(ds1, dir, entDef) ;
-        
+
         return ds ;
     }
 
-    public static Dataset createAssembler() 
-    {
-        Dataset ds = DatasetFactory.assemble("testing/TextQuery/text-config.ttl",
+    public static Dataset createAssembler(String assemblerFile) {
+        Dataset ds = DatasetFactory.assemble("testing/TextQuery/" + assemblerFile,
                                              "http://localhost/jena_example/#text_dataset") ;
         return ds ;
     }
 
 }
-

Modified: jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestDatasetWithEmbeddedSolrTextIndex.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestDatasetWithEmbeddedSolrTextIndex.java?rev=1496497&r1=1496496&r2=1496497&view=diff
==============================================================================
--- jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestDatasetWithEmbeddedSolrTextIndex.java (original)
+++ jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestDatasetWithEmbeddedSolrTextIndex.java Tue Jun 25 14:45:08 2013
@@ -73,7 +73,7 @@ public class TestDatasetWithEmbeddedSolr
                     // This is replaced during setup by an embedded Solr instance.
 				    // <embedded:...> ends up with a huge dependency.
 				    "    a text:TextIndexLucene ;",
-                    "    text:directory <file:" + EMBEDDED_SOLR.INDEX_PATH + "> ;",
+                    "    text:directory <file:" + EmbeddedSolr.INDEX_PATH + "> ;",
                     "    text:entityMap :entMap ;",
 				    
 //                    "    a text:TextIndexSolr ;",
@@ -96,8 +96,8 @@ public class TestDatasetWithEmbeddedSolr
 	
 	@BeforeClass public static void beforeClass() throws IOException {
 	    deleteOldFiles();
-	    EMBEDDED_SOLR.INDEX_DIR.mkdirs();
-	    TextSearchUtil.createEmptyIndex(EMBEDDED_SOLR.INDEX_DIR);
+	    EmbeddedSolr.INDEX_DIR.mkdirs();
+	    TextSearchUtil.createEmptyIndex(EmbeddedSolr.INDEX_DIR);
 	    Reader reader = new StringReader(SPEC);
 	    Model specModel = ModelFactory.createDefaultModel();
 	    specModel.read(reader, "", "TURTLE");
@@ -149,7 +149,7 @@ public class TestDatasetWithEmbeddedSolr
 	}
 	
 	public static void deleteOldFiles() {
-		if (EMBEDDED_SOLR.DATA_DIR.exists()) 
-			TextSearchUtil.emptyAndDeleteDirectory(EMBEDDED_SOLR.DATA_DIR);
+		if (EmbeddedSolr.DATA_DIR.exists()) 
+			TextSearchUtil.emptyAndDeleteDirectory(EmbeddedSolr.DATA_DIR);
 	}
 }

Added: jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestTextTDB.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestTextTDB.java?rev=1496497&view=auto
==============================================================================
--- jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestTextTDB.java (added)
+++ jena/trunk/jena-text/src/test/java/org/apache/jena/query/text/TestTextTDB.java Tue Jun 25 14:45:08 2013
@@ -0,0 +1,134 @@
+/**
+ * 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.jena.query.text;
+
+import java.util.List ;
+
+import org.apache.jena.atlas.iterator.Iter ;
+import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.atlas.lib.StrUtils ;
+import org.apache.lucene.store.Directory ;
+import org.apache.lucene.store.RAMDirectory ;
+import org.junit.Test ;
+
+import com.hp.hpl.jena.query.* ;
+import com.hp.hpl.jena.sparql.core.Quad ;
+import com.hp.hpl.jena.sparql.sse.SSE ;
+import com.hp.hpl.jena.tdb.TDB ;
+import com.hp.hpl.jena.tdb.TDBFactory ;
+import com.hp.hpl.jena.vocabulary.RDFS ;
+
+public class TestTextTDB extends BaseTest
+{
+    private static Dataset create() {
+        Dataset ds1 = TDBFactory.createDataset() ;
+        Directory dir = new RAMDirectory() ;
+        EntityDefinition eDef = new EntityDefinition("iri", "text", RDFS.label) ;
+        TextIndex tidx = new TextIndexLucene(dir, eDef) ;
+        Dataset ds = TextDatasetFactory.create(ds1, tidx) ;
+        return ds ;
+    }
+
+    private static void data() {
+        
+    }
+    
+    @Test public void textDB_1() {
+        // Check the union graph stil works  
+        Dataset ds = create() ;
+        ds.getContext().set(TDB.symUnionDefaultGraph, true) ;
+        Quad quad = SSE.parseQuad("(<g> <p> rdfs:label 'foo')") ;
+        ds.asDatasetGraph().add(quad) ;
+        Query q = QueryFactory.create("SELECT * { ?s ?p ?o }") ;
+        QueryExecution qexec = QueryExecutionFactory.create(q, ds) ;
+        ResultSet rs = qexec.execSelect() ;
+        List<QuerySolution> x = Iter.toList(rs) ;
+        assertEquals(1,x.size());
+    }
+    
+    @Test public void textDB_2() {
+        // Check text query and union graph
+        Dataset ds = create() ;
+        ds.getContext().set(TDB.symUnionDefaultGraph, true) ;
+        Quad quad = SSE.parseQuad("(<g> <s> rdfs:label 'foo')") ;
+        ds.asDatasetGraph().add(quad) ;
+        
+        String qs = StrUtils.strjoinNL("PREFIX text: <http://jena.apache.org/text#>",
+                                       "PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>",
+                                       "SELECT *",
+                                       "{ ?s text:query 'foo' ;",
+                                       "     rdfs:label 'foo'",
+                                       "}"
+                                       ) ;
+        Query q = QueryFactory.create(qs) ;
+        QueryExecution qexec = QueryExecutionFactory.create(q, ds) ;
+        ResultSet rs = qexec.execSelect() ;
+        List<QuerySolution> x = Iter.toList(rs) ;
+        assertEquals(1,x.size());
+    }
+    
+    @Test public void textDB_3() {
+        Dataset ds = create() ;
+        ds.getContext().set(TDB.symUnionDefaultGraph, true) ;
+        data(ds, 
+             "(<ex:g1> <s1> rdfs:label 'foo')",
+             "(<ex:g2> <s2> rdfs:label 'bar')") ;
+
+        ds.begin(ReadWrite.READ) ;
+        Query q = QueryFactory.create("PREFIX text: <http://jena.apache.org/text#> SELECT * { ?s text:query 'foo' }") ;
+        QueryExecution qexec = QueryExecutionFactory.create(q, ds) ;
+        ResultSet rs = qexec.execSelect() ;
+        List<QuerySolution> x = Iter.toList(rs) ;
+        ds.end() ;
+        assertEquals(1,x.size());
+    }
+    
+    @Test public void textDB_4() {
+        Dataset ds = create() ;
+        data(ds, 
+             "(<ex:g1> <s1> rdfs:label 'foo')",
+             "(<ex:g1> <s2> rdfs:label 'apple')",
+             "(<ex:g2> <s2> rdfs:label 'bar')") ;
+        
+        ds.begin(ReadWrite.READ) ;
+        String qs = StrUtils.strjoinNL(
+            "PREFIX text: <http://jena.apache.org/text#>",
+            "SELECT *",
+            "FROM <ex:g1>",
+            "{ ?s text:query 'foo' }"
+            ) ;
+        Query q = QueryFactory.create(qs) ;
+        QueryExecution qexec = QueryExecutionFactory.create(q, ds) ;
+        ResultSet rs = qexec.execSelect() ;
+        List<QuerySolution> x = Iter.toList(rs) ;
+        ds.end() ;
+        assertEquals(1,x.size());
+    }
+
+    private static void data(Dataset ds, String... quadStrs) {
+        for ( String qs : quadStrs ) {
+            Quad quad = SSE.parseQuad(qs) ;
+            ds.asDatasetGraph().add(quad) ;
+        }
+    }
+    
+    // With transactions
+    // With FROM and FROM NAMED + TDB
+}
+

Modified: jena/trunk/jena-text/testing/TextQuery/data1.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/testing/TextQuery/data1.ttl?rev=1496497&r1=1496496&r2=1496497&view=diff
==============================================================================
--- jena/trunk/jena-text/testing/TextQuery/data1.ttl (original)
+++ jena/trunk/jena-text/testing/TextQuery/data1.ttl Tue Jun 25 14:45:08 2013
@@ -3,20 +3,20 @@
 @prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
 @prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
 
-## :s a :Thing ;
-##    :p :123 ;
-##    rdfs:label "Thing 1" ;
-##    :id 123 .
-## 
-## :s1 a :Thing ;
-##    :p :123 ;
-##    rdfs:label "Thing 2" ;
-##    :id 123 .
-## 
-## :s2 a :Thing ;
-##    :p :123 ;
-##    rdfs:label "Whatever" ;
-##    :id 123 .
+:s a :Thing ;
+   :p :123 ;
+   rdfs:label "Thing 1" ;
+   :id 123 .
+
+:s1 a :Thing ;
+   :p :123 ;
+   rdfs:label "Thing 2" ;
+   :id 123 .
+
+:s2 a :Thing ;
+   :p :123 ;
+   rdfs:label "Whatever" ;
+   :id 123 .
 
    
 :x1 rdfs:label "X1 word" .

Added: jena/trunk/jena-text/testing/TextQuery/text-config-union.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/testing/TextQuery/text-config-union.ttl?rev=1496497&view=auto
==============================================================================
--- jena/trunk/jena-text/testing/TextQuery/text-config-union.ttl (added)
+++ jena/trunk/jena-text/testing/TextQuery/text-config-union.ttl Tue Jun 25 14:45:08 2013
@@ -0,0 +1,46 @@
+ ## Example of a TDB dataset and text index
+
+@prefix :        <http://localhost/jena_example/#> .
+@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
+@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
+@prefix text:    <http://jena.apache.org/text#> .
+
+# TDB
+[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
+tdb:DatasetTDB  rdfs:subClassOf  ja:RDFDataset .
+tdb:GraphTDB    rdfs:subClassOf  ja:Model .
+
+# Text
+[] ja:loadClass "org.apache.jena.query.text.TextQuery" .
+text:TextDataset      rdfs:subClassOf   ja:RDFDataset .
+#text:TextIndexSolr    rdfs:subClassOf   text:TextIndex .
+text:TextIndexLucene  rdfs:subClassOf   text:TextIndex .
+
+## ---------------------------------------------------------------
+## This URI must be fixed - it's used to assemble the text dataset.
+
+:text_dataset rdf:type     text:TextDataset ;
+    text:dataset   <#dataset> ;
+    ##text:index   <#indexSolr> ;
+    text:index     <#indexLucene> ;
+    .
+
+<#dataset> rdf:type      tdb:DatasetTDB ;
+    tdb:location "--mem--" ;
+    tdb:unionDefaultGraph true ;
+    .
+
+<#indexLucene> a text:TextIndexLucene ;
+    text:directory "mem" ;
+    text:entityMap <#entMap> ;
+    .
+
+<#entMap> a text:EntityMap ;
+    text:entityField      "uri" ;
+    text:defaultField     "text" ; ## Must be defined in the text:maps
+    text:map (
+         # rdfs:label            
+         [ text:field "text" ; text:predicate rdfs:label ]
+         ) .

Modified: jena/trunk/jena-text/testing/TextQuery/text-config.ttl
URL: http://svn.apache.org/viewvc/jena/trunk/jena-text/testing/TextQuery/text-config.ttl?rev=1496497&r1=1496496&r2=1496497&view=diff
==============================================================================
--- jena/trunk/jena-text/testing/TextQuery/text-config.ttl (original)
+++ jena/trunk/jena-text/testing/TextQuery/text-config.ttl Tue Jun 25 14:45:08 2013
@@ -29,7 +29,6 @@ text:TextIndexLucene  rdfs:subClassOf   
 
 <#dataset> rdf:type      tdb:DatasetTDB ;
     tdb:location "--mem--" ;
-    tdb:unionDefaultGraph true ;
     .
 
 <#indexLucene> a text:TextIndexLucene ;