gpt4 book ai didi

java - Stardog 数据加载和 Jena

转载 作者:行者123 更新时间:2023-12-01 12:49:38 24 4
gpt4 key购买 nike

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

  1. 我不确定 Stardog 是否会要求 TBox 也与 ABox 图表合并。我认为是这样,因为否则我无法看到 Stardog 将如何对数据进行推理。我没有看到任何像其他三重商店那样单独存储和使用 TBox 的选项。我是否需要将 TBox 包含在 Jena 图中,或者是否有办法将 TBox 存储在另一个 Stardog 数据库中,以便在查询 ABoxes 数据库时也将其考虑在内?

  2. 我正在考虑将 Jena 图(在 1 到 700 万个三元组之间变化)加载到 Stardog 中的选项:

    • 我不太喜欢的选项之一是将图形写入文件并执行客户端将其加载到 Stardog 中。由于数据位于耶拿图中,我更喜欢直接的解决方案。
    • 另一种选择是逐个加载三元组 ( example of stardog sparql insert query in java ),我不喜欢这种做法,因为它可能效率低下。

是否有任何优雅的方法可以从耶拿加载整个图表?

编辑

尝试基于发行版中的示例编写代码:

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

the Stardog documentation 中的附加信息

最佳答案

1) 只要 TBox 位于 Stardog 中,您将 TBox 存储在何处并不重要。默认情况下,Stardog 将在默认图表中查找您的 TBox 并自动提取它。但这可以使用reasoning.schema.graphs进行配置配置选项as noted in the documentation 。一般来说,您可能会发现有关如何在 Stardog 中实现推理的章节很有用。

2) 不要一一加载三元组,这样效率不高。将数据获取到 Stardog 的最快方法是在创建数据库时加载它;在这种情况下可以使用批量加载器,以实现最佳写入速度。创建数据库后,您可以使用 SNARL API、CLI 或 Jena API 加载文件,这是将数据导入数据库的第二快的方法。如果您使用 Jena API,则必须使用他们的 BulkUpdateHandler直接,或加载RDF/XML ,其读者似乎在幕后使用批量更新程序。

编辑:

您的代码不正确。您将服务器绑定(bind)到实际的套接字和端口上,然后尝试连接到您未运行的嵌入式服务器。您必须修改服务器启动以使用示例中所示的嵌入式服务器,或者修改 AdminConnectionConfiguration 的初始化。使用 toServer 指定服务器 URL .

此外,不要使用便捷方法createMemory您可以调用AdminConnection#memory这将返回 DatabaseBuilder谁的create方法获取文件列表以批量加载到新数据库中。

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

关于java - Stardog 数据加载和 Jena,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24332922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com