我正在尝试将 Turtle 文件加载到 Android Studio 中,并使用 Androjena 库对 Turtle 文件运行查询。我可以在 Eclipse 中使用 JavaFX 毫无问题地执行此操作。但是,在 Intellij IDE 中,我收到了一个 FATAL 错误,这显然会导致我的应用程序崩溃。我有一个名为 runQuery() 的方法,它被调用以在文件上运行查询:
public String runQuery(){
String stringQuery = "PREFIX foaf: <http://xmlns.com/foaf/0.1/> \n" +
"PREFIX dbo: <http://dbpedia.org/ontology/> \n" +
"SELECT ?birthDate WHERE { \n" +
"?barack foaf:name \"Barack Obama\"@en .\n" +
"?barack dbo:birthDate ?birthDate \n" +
"}";
String answer = "";
Model model = FileManager.get().loadModel("sample_pres.ttl", "TTL");
Query query = QueryFactory.create(stringQuery);
try {
QueryExecution qexec = QueryExecutionFactory.create(query, model);
ResultSet results = qexec.execSelect();
while(results.hasNext()) {
QuerySolution soln = results.nextSolution();
Literal answerLiteral = soln.getLiteral("birthDate");
answer = answerLiteral.toString();
}
}
catch(Exception ignore) {
}
this.answer = answer;
return answer;
}
给我带来问题的代码行是 FileManager.get().loadModel() 行。这是我得到的异常:
com.hp.hpl.jena.shared.NotFoundException: Not found: sample_pres.ttl
所以我收集到 Android 没有找到该文件,尽管该文件在我的 Assets 文件夹中。我假设我不/不能使用 AssetManager,因为我没有尝试包含 FileInputStream。所以我在这一点上被困住了。这是我的项目结构的图片:
我在我的项目结构中添加了 app/src/main 下的资产文件夹。我对 Android Studio 比较陌生,我知道在 Eclipse 的 JavaFX 中,我可以简单地使用文件的绝对路径来访问它,我知道这显然在 Android Studio 中不起作用。但是,我找不到从 Android 项目(我的资产文件夹)中的本地源加载 Turtle 文件并执行查询的示例。此站点上的每个示例或问题似乎都与通过 Internet 连接从外部端点运行查询有关。所以这就是我感到困惑的部分原因。我不确定如何从 Android Studio 中的本地源运行查询并从我的资产文件夹中引用 Turtle 文件以避免 com.hp.hpl.jena.shared.NotFoundException
Smart猫小萌
慕容3067478
相关分类