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 ;