首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Stardog数据加载和Jena

Stardog数据加载和Jena
EN

Stack Overflow用户
提问于 2014-06-20 17:46:38
回答 1查看 1.2K关注 0票数 0

我正在使用Stardog存储一堆来自不同来源的三元组。我使用Jena来收集和合并单个Jena图中的数据。所有这些三元组都是ABoxes的一部分。

  1. 我不确定Stardog是否会要求TBox也与ABox图合并。我认为是这样的,因为否则我看不出Stardog会如何对数据进行推理。我没有看到任何选择来存储和使用TBox分开,在其他一些三重存储。我是否需要在Jena图中包含TBox,还是有一种方法可以将TBox存储在另一个Stardog数据库中,所以在查询ABoxes数据库时也会考虑到这一点?
  2. 我正在考虑将Jena图形加载到Stardog中的选项(从1到700万到3倍不等):
代码语言:javascript
复制
- 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.

有什么优雅的方法从耶拿加载整个图表吗?

编辑

根据发行版中的示例尝试代码:

代码语言:javascript
复制
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:更正了我代码的一些部分。

星犬文献中的其他信息

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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,该DatabaseBuildercreate方法接受一个文件列表来批量加载到新数据库中。

您还应该考虑使用基于磁盘的数据库来存储数百万个三元组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24332922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档