我正在尝试通过Java代码将数据插入到已加载到Fuseki服务器的owl文件中。更新查询不给出任何错误消息。但是猫头鹰文件没有更新。我正在使用耶拿库并使用Java代码实现。我的代码有什么问题?
public boolean addLecturerTriples(String fName, String lName,
String id, String module) {
try{
ArrayList<String> subject = new ArrayList<String>();
ArrayList<String> predicate = new ArrayList<String>();
ArrayList<String> object = new ArrayList<String>();
subject.add("<http://people.brunel.ac.uk/~csstnns/university.owl#"+fName+">");
predicate.add("<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>");
object.add("<http://people.brunel.ac.uk/~csstnns/university.owl#Lecturer>");
for(int i = 0; i < subject.size(); i++){
String qry = "INSERT DATA"+
"{"+
subject.get(i)+"\n"+
predicate.get(i)+"\n"+
object.get(i)+"\n"+
"}";
UpdateRequest update = UpdateFactory.create(qry);
UpdateProcessor qexec = UpdateExecutionFactory.createRemote(update, "http://localhost:3030/ds/update");
qexec.execute();
}
}catch(Exception e){
return false;
}
return true;
}
如果您提供了一个最小的完整示例,那就很有帮助,例如,您包括了Fuseki配置以及有关如何将OWL文件加载到Fuseki中的详细信息。
但是,我假设您没有使用任何特定的配置,而是像这样启动Fuseki:
java -jar fuseki-server-VER.jar --update --loc /path/to/db /ds
因此,您要做的是启动Fuseki,启用更新并使用该位置/path/to/db
作为磁盘上的TDB数据库位置和/ds
数据集的URL 。
您打开浏览器并单击Control Panel > /ds
,然后使用上载文件功能上载OWL文件。上传文件时,该文件将被读入Fuseki中并复制到数据集中,在本示例中,您的数据集是磁盘上的TDB数据库,位于/path/to/db
。
重要的是要理解,因为Fuseki只是 将* 数据从文件 复制 到数据集,所以 不保留对原始文件的引用 。 *
然后,您可以使用SPARQL
Update表单添加一些数据(或者,您可以通过Java代码执行此操作)。在此示例中,更新适用于要重复的数据集,该数据集是磁盘TDB数据库,/path/to/db
该数据库上
没有 引用原始文件。因此,您的原始文件不会更改。
如果Fuseki不是必需的,那么您可以将文件加载到本地内存中,然后在该内存中运行更新:
Model m = ModelFactory.createDefaultModel();
m.read("example.owl", "RDF/XML");
// Prepare your update...
// Create an UpdateExecution on the local model
UpdateProcessor processor = UpdateExecutionFactory.create(update, GraphStoreFactory.create(m));
processor.execute();
// Save the updated model
updated.write(new FileOutputStream("example.owl"), "RDF/XML");
但是,如果您想/必须使用Fuseki,则可以通过从Fuseki检索修改后的图形并将其写回到文件中来更新原始文件,例如
DatasetAccessor accessor = DatasetAccessorFactory.createHTTP("http://localhost:3030/ds/data");
// Download the updated model
Model updated = accessor.getModel();
// Save the updated model over the original file
updated.write(new FileOutputStream("example.owl"), "RDF/XML");
本示例假定您已将OWL文件加载到默认图形中(如果未使用getModel("http://graph")
重载来加载相关的命名图形)
我使用GraphDB存储库,希望通过Java使用SPARQLRepository执行一些查询。当我阅读这些问题时,它工作得很好。但当我有一个查询“creategraph:example”或一个insert-and-delete查询时,它就不起作用了。当我通过GraphDB UI执行查询时,它运行良好。SPARQLRepository的doku说,我需要第二个endpoint,根据GraphDB d
问题内容: 我需要用一个查询插入多行(行数不是常数),所以我需要像这样执行查询: 我知道的唯一方法是 但我想要一些更简单的方法。 问题答案: 我构建了一个程序,该程序将多行插入到位于另一个城市的服务器上。 我发现使用此方法的速度大约是的10倍。就我而言,tup是一个包含约2000行的元组。使用此方法大约花了10秒钟: 使用此方法需要2分钟:
我试图使用下面的MySQL语句
我试图从下层超级输出区域(LSOAs)和英国邮政编码数据集中获取一些信息。
问题内容: 我有一个数据类型: 另外,数据库字段类型是 现在我正在这样做: 如何才能做到这一点。 问题答案: 使用
为什么我在这里收到ORA-00918错误?在INSERT WHEN...THEN INTO...SELECT模式中可以选择的列数是否有限制? 注意:我使用的是Oracle 11.2.0.1.0,我试图在生产中执行的实际查询更加复杂,并且引用了其他表(使用“values”是不够的)。这只是简化的情况...