我正在使用Stardog存储一堆来自不同来源的三元组。我使用Jena来收集和合并单个Jena图中的数据。所有这些三元组都是ABoxes的一部分。
- One of the options I don't really like is to write the graph into a file and execute the client to load it into Stardog. One the data is in a Jena graph, I would prefer a direct solution.
- Another option is to load the triples one by one ([example of stardog sparql insert query in java](https://stackoverflow.com/questions/16053904/example-of-stardog-sparql-insert-query-in-java/16061801#16061801)), which I dislike for potential inefficiency.
有什么优雅的方法从耶拿加载整个图表吗?
编辑
根据发行版中的示例尝试代码:
Server aServer = Stardog.buildServer()
.bind(new InetSocketAddress("10.0.0.1", 5820))
.start();
AdminConnection aAdminConnection = AdminConnectionConfiguration.toServer("...").credentials("admin", "admin").connect();
if (aAdminConnection.list().contains("test")) {
aAdminConnection.drop("test");
}
Connection aConn = aAdminConnection.memory("test").create(file).connect();
Model aModel = SDJenaFactory.createModel(aConn);编辑2:更正了我代码的一些部分。
星犬文献中的其他信息
发布于 2014-06-21 13:58:21
1)只要TBox在Stardog里,你就把它存放在哪里并不重要。默认情况下,Stardog将为您的TBox查找默认图形并自动提取它。但是可以使用reasoning.schema.graphs配置选项如文件所述对其进行配置。通常,您可能会发现关于如何在Stardog中实现推理的章节是很有用的。
2)不要一个接一个地加载三倍,效率不高。将数据输入Stardog的最快方法是在创建数据库时加载数据;在这个实例中可以使用批量加载器,从而达到最佳的写入速度。创建数据库后,可以使用SNARL API、CLI或Jena API加载文件,这是将数据输入数据库的第二种最快方式。如果您正在使用Jena API,则必须直接使用它们的BulkUpdateHandler,或者加载RDF/XML,其阅读器似乎在幕后使用大量更新程序。
编辑:
你的代码不正确。您正在将服务器绑定到实际的套接字和端口上,然后尝试连接到没有运行的嵌入式服务器。您必须修改服务器开始使用示例中所示的嵌入式服务器,或者修改AdminConnectionConfiguration的初始化以使用toServer指定服务器URL。
此外,与使用方便的方法createMemory不同,您可以调用AdminConnection#memory,它将返回一个DatabaseBuilder,该DatabaseBuilder的create方法接受一个文件列表来批量加载到新数据库中。
您还应该考虑使用基于磁盘的数据库来存储数百万个三元组。
https://stackoverflow.com/questions/24332922
复制相似问题