On 22/08/13 17:04, Brad Moran wrote:
I am not sure what I should be using as the second parameter for
DatasetFactory.assemble. Should I use the URI provided in the
documentation, or do I use the location of my own text dataset (my
luceneIndex?). Either way I receive an error.

If I use the URI provided, I get:

com.hp.hpl.jena.assembler.exceptions.AssemblerException: caught: Failed to
open:
/Users/brad/NetBeansProjects/mdr-older/trunk/NetBeansProjects/mdr-older/trunk/tdb/node2id.idn
(mode=rw)

Why are you opening a specific file in the database directory?

I can not understand where that URI came from except it looks like an incorrectly

At a guess, something says:

file:NetBeansProjects/mdr-older/trunk/tdb/node2id.idn

which is a relative file name, you need to start with a file:///

I have no idea how the node2id.idn got there.

If you open this file directly, you may corrupt the database.

   doing:
     root:
file:///Users/brad/NetBeansProjects/mdr-older/trunk/data.ttl#dataset with
     type:http://jena.hpl.hp.com/2008/tdb#DatasetTDB assembler class: class
com.hp.hpl.jena.tdb.assembler.DatasetAssemblerTDB
     root: http://localhost/jena_example/#text_dataset with type:
http://jena.apache.org/text#TextDatasetassembler class: class
org.apache.jena.query.text.assembler.TextDatasetAssembler


Otherwise if I use the location of lucene index on my file system I get:

com.hp.hpl.jena.assembler.exceptions.NoSpecificTypeException: the root
luceneIndexes has no most specific type that is a subclass of ja:Object


http://jena.apache.org/documentation/query/text-query.html#text-dataset-assembler

Dataset ds = DatasetFactory.assemble(
    "text-config.ttl",
    "http://localhost/jena_example/#text_dataset";) ;

and http://localhost/jena_example/#text_dataset is the URi used in the assembler file. In the example it's

@prefix :        <http://localhost/jena_example/#> .
....
:text_dataset rdf:type     text:TextDataset ;
    text:dataset   <#dataset> ;
    text:index     <#indexLucene> ;
    .

so "http://localhost/jena_example/#text_dataset";. This happens to be the same as in your assembler file of 20/Aug.

Please provide a complete, minimal example of what you are doing.

        Andy



On Thu, Aug 22, 2013 at 2:14 AM, Andy Seaborne <[email protected]> wrote:

On 21/08/13 21:45, Brad Moran wrote:

At this point I have a loaded TDB and text index, now I am trying to query
using java. First I tried creating a dataset directly from the TDB but
received

Dataset ds = TDBFactory.createDataset(**DBDirectory); <--How I created
Dataset

WARN  o.apache.jena.query.text.**TextQueryPF - Failed to find the text
index
: tried context and as a text-enabled dataset
WARN  o.apache.jena.query.text.**TextQueryPF - No text index - no text
search
performed
and returns an empty resultSet

I am trying to run this query:

QueryExecution qExec = QueryExecutionFactory.create(
                          "PREFIX text: <http://jena.apache.org/text#>
PREFIX
mms: <http://rdf.cdisc.org/mms#> "
                          + "SELECT * WHERE{?s text:query
(mms:dataElementName 'AEACN')}", ds);

ResultSet rs = qExec.execSelect();

So I figured the problem could be that I some how need to combine the TDB
and text index into the same dataset, I tried:

String DBDirectory = "tdb";
String indexDir = "luceneIndexes";
File file = new File(indexDir);
Directory dir = FSDirectory.open(file);
TextIndex index = new TextIndexLucene(dir, null);// need to add the
EntityDefinition?


Yes.


  Dataset ds = TDBFactory.createDataset(**DBDirectory);
Dataset dataset = TextDatasetFactory.create(ds, index);


then you will need to use 'dataset' not 'ds' to query.


  This query does not run because of a nullPointerException.


stacktrace?


  I am not sure if
this is the right way to go about this. If this is the right way to
combine
a TDB and text index, is there an easy way to get the EntityDefinition
from
the text index?


You can use the assembler file to get the dataset.
(see the text search documentation)

Else
EntityDefinition entDef = new EntityDefinition("uri", "text", RDFS.label) ;
and add the further declarations as in the assembler file.

The assembler means you can keep the configuation in one place

         Andy




Reply via email to