Eclipse Jena位置映射找不到配置
我正在使用SPARQL进行Jena文本搜索。它在编译时和运行时都成功了,但没有显示所需的结果,即结果应该显示URI和预期的文本。看起来像是错误消息,但我得到以下失败描述:Eclipse Jena位置映射找不到配置,eclipse,lucene,sparql,jena,Eclipse,Lucene,Sparql,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/loc
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));
}}
public类JenaTextSearch{
静态{LogCtl.setLog4j();
BasicConfigurator.configure();}
静态记录器log=LoggerFactory.getLogger(“JenaTextSearch”);
公共静态void main(字符串…argv)
{
数据集ds=createCode();
//加载数据(ds,“data.ttl”);
槲皮素(ds);
}
公共静态数据集createCode()
{
//基础数据
Dataset ds1=DatasetFactory.create();
ModelDefaultModel=ModelFactory.createDefaultModel();
defaultModel.read(“to_index/data.ttl”,“N-TRIPLES”);
ds1.setDefaultModel(defaultModel);
//定义索引映射
EntityDefinition entDef=新的EntityDefinition(“uri”,“text”,ResourceFactory.createProperty(App.uri_前缀,“content”);
目录dir=null;
试一试{
dir=newsimplefsdirectory(path.get(“index”);//lucene索引目录
}
捕获(IOE异常){
e、 printStackTrace();
}
//合并到一个数据集中
Dataset ds=TextDatasetFactory.createLucene(ds1,目录,新TextIndexConfig(entDef));
返回ds1;
}
公共静态void queryData(数据集)
{
String prefix=“前缀电子邮件:”+
“前缀文本:”;
long startTime=System.nanoTime();
System.out.println(“电子邮件的内容包含‘good’”);
String query=“选择*WHERE”+
“{s text:query(电子邮件:content'good')”+
“?的电子邮件:内容?文本。”+
"}" ;
dataset.begin(ReadWrite.READ);
试一试{
Query q=QueryFactory.create(前缀+“\n”+Query);
QueryExecution qexec=QueryExecutionFactory.create(q,数据集);
执行(q,qexec);
}最后{dataset.end();}
long finishTime=System.nanoTime();
双倍时间=(完成时间开始时间)/1.0e6;
System.out.println(“Query”+String.format(“FINISH-%.2fms”,time));
startTime=System.nanoTime();
System.out.println(“电子邮件的内容包含‘坏’”);
query=“选择*WHERE”+
“{(?s?score?lit)文本:查询(电子邮件:内容‘坏’\“突出显示:s:| e:\”)+
“?的电子邮件:内容?文本。”+
"}" ;
dataset.begin(ReadWrite.READ);
试一试{
Query q=QueryFactory.create(前缀+“\n”+Query);
QueryExecution qexec=QueryExecutionFactory.create(q,数据集);
执行(q,qexec);
}最后{dataset.end();}
finishTime=System.nanoTime();
时间=(完成时间开始时间)/1.0e6;
System.out.println(“Query”+String.format(“FINISH-%.2fms”,time));
}}
那是图书馆的问题还是什么?我使用Jena 3.9和3.13,因为我认为它们完全可以相互作用。请设计我。谢谢。这些只是调试消息。首先检查一个简单的查询,看看数据是否已成功加载,如果是这种情况,您的查询与数据根本不匹配代码>明显错误-应该
返回ds代码>因为您希望返回包含Lucene索引的包装器数据集。这很可能是这里的主要问题这些调试消息告诉您没有找到名称的重新映射-这很正常。对于正常的应用程序使用,请将Jena logging设置为“INFO”。