首页 > 解决方案 > Jena 位置映射找不到配置

问题描述

我正在使用 SPARQL 处理 Jena 文本搜索。它在编译时间和运行时间方面取得了成功,但它没有显示所需的结果,即结果应该显示 URI 和预期的文本。它看起来像错误消息,但我得到以下失败的描述:

DEBUG org.apache.jena.util.LocationMapper  - Failed to find configuration: file:location-mapping.rdf;file:location-mapping.n3;file:location-mapping.ttl;file:etc/location-mapping.rdf;file:etc/location-mapping.n3;file:etc/location-mapping.ttl
DEBUG org.apache.jena.riot.system.stream.JenaIOEnvironment  - Failed to find configuration: location-mapping.ttl;location-mapping.rdf;location-mapping.n3;etc/location-mapping.rdf;etc/location-mapping.n3;etc/location-mapping.ttl

完整代码如下所示:

public class JenaTextSearch {

static {LogCtl.setLog4j();
    BasicConfigurator.configure();}
static Logger log = LoggerFactory.getLogger("JenaTextSearch");



public static void main (String ...argv)
{
    Dataset ds = createCode();
    //loadData(ds, "data.ttl");
    queryData(ds);

}

public static Dataset createCode()
{
    //base data
    Dataset ds1 = DatasetFactory.create();
    Model defaultModel = ModelFactory.createDefaultModel();
    defaultModel.read("to_index/data.ttl", "N-TRIPLES");
    ds1.setDefaultModel(defaultModel);


    //define the index mapping
    EntityDefinition entDef = new EntityDefinition ("uri", "text", ResourceFactory.createProperty(App.URI_PREFIX,"content"));

    Directory dir = null;

    try {
        dir = new SimpleFSDirectory(Paths.get("index")); //lucene index directory
    }
    catch (IOException e) {
        e.printStackTrace();
    }

    //join together into a dataset
    Dataset ds = TextDatasetFactory.createLucene(ds1, dir, new TextIndexConfig(entDef));

    return ds1;

}


public static void queryData(Dataset dataset)
{
    String prefix = "PREFIX email: <" + App.URI_PREFIX+">" +
            "PREFIX text: <http://jena.apache.org/text#>";

    long startTime = System.nanoTime();
    System.out.println("Email's content contains 'good'");
    String query = "SELECT * WHERE " +
            "{?s text:query (email:content 'good')." +
            "?s email:content ?text." +
            "}" ;

    dataset.begin(ReadWrite.READ);
    try {
        Query q = QueryFactory.create(prefix+"\n"+query);
        QueryExecution qexec = QueryExecutionFactory.create(q, dataset);
        QueryExecUtils.executeQuery(q, qexec);
    }finally { dataset.end();}
    long finishTime = System.nanoTime();
    double time = (finishTime-startTime)/1.0e6;
    System.out.println ("Query "+String.format("FINISH - %.2fms", time));

    startTime = System.nanoTime();
    System.out.println("Email's content contains 'bad'");
    query = "SELECT * WHERE" +
            "{(?s ?score ?lit) text:query (email:content 'bad' \"highlight:s:<em class='hiLite'> | e:</em>\")." +
            "?s email:content ?text." +
            "}" ;

    dataset.begin(ReadWrite.READ);

    try {
        Query q = QueryFactory.create(prefix+"\n"+query);
        QueryExecution qexec = QueryExecutionFactory.create(q, dataset);
        QueryExecUtils.executeQuery(q, qexec);
    } finally { dataset.end() ; }
    finishTime = System.nanoTime();
    time = (finishTime-startTime)/1.0e6;
    System.out.println("Query "+String.format("FINISH - %.2fms",  time));
}}

这是图书馆的问题还是什么?我认为,我使用 Jena 3.9 和 3.13 是因为它们完全可以互相使用。请设计我。谢谢你。

标签: eclipselucenesparqljena

解决方案


推荐阅读