1

我正在使用 RDF4J Workbench 2.1.2。

System Information
Application Information
Application Name    RDF4J Workbench
Version 2.1.2
Runtime Information
Operating System    Windows 10 10.0 (amd64)
Java Runtime    Oracle Corporation Java HotSpot(TM) 64-Bit Server VM (1.8.0_111)
Process User    gwcox
Memory
Used    315 MB
Maximum 889 MB

我有一组 RDF 文件,其中包含我正在研究的本体。一些 RDF 文件导入其他文件。例如,我的实例化本体/RDF 文件导入了定义我的类和关系的几个本体。

RDF 文件存储在本地,而不是用于标识它们的 URI。在开发和调试的过程中,我经常需要清理我的存储库并重新加载我的本体。目前,需要加载六个本体才能获得全部功能。

如何将存储为本地文件的多个本体加载到 RDF4J 工作台中的活动存储库中?我可以使用 RDF4J 工作台本身或命令行脚本来进行加载。我知道我可以多次手动使用工作台中的修改/添加命令,但我想将其减少为一个命令以节省时间并避免错误。

谢谢。

4

2 回答 2

1

为了详细说明 Jeen Broekstra 的答案,我将使用控制台脚本。这是我的特定脚本(loadMyOntologies.txt):

connect "http://localhost:8088/rdf4j-server"
open TakeRDF4J4SPIN
clear
load "C:\Users\Greg\TBCFreeWorkspace\NSC_2025_Sharing\soo.rdf"
load "C:\Users\Greg\TBCFreeWorkspace\NSC_2025_Sharing\Instantiations.rdf"
exit

请注意,我已将运行 Apache Tomcat 服务器的端口更改为 8088。

当然,其他版本的存储库名称(打开命令参数)和本体路径会有所不同。

load随着我正在使用的本体数量的增加,我将添加更多命令。另外,我在默认上下文/图形中工作,所以我省略了urn:contextJeen 包含的可选项。

loadMyOntologies.bat由于我使用的是 Windows 8,因此我通过一个简单的批处理 ( ) 文件访问上述内容:

.\console.bat < loadMyOntologies.txt

我的批处理和文本文件位于我的 RDF4J bin 目录中(路径缩写如下),console.bat位于何处(console.sh提到的 Jeen 的 Windows 版本):

c:\Users\Greg\...\eclipse-rdf4j-2.0.1\bin

我已经在 RDF4J 工作台中确认我可以将此脚本与在工作台中工作结合起来,并且该脚本将为我节省大量时间,尤其是当我结合更多本体来解决更大的问题时。

如果您非常关注,您可能会注意到此示例中的 RDF4J 版本 (2.0.1) 比我最初发布的版本 (2.1.2) 旧。我正在完成另一台尚未更新的机器,但它可以工作!我确信这个解决方案也适用于我另一台机器上的较新版本。

于 2016-11-30T02:00:55.207 回答
1

RDF4J Workbench 本身没有一次性添加多个文件的功能。

但是,如果这是您需要重复执行的操作,一个简单的方法是使用控制台,并为其编写一个简短的批处理脚本。该脚本只是一个带有连续控制台命令(每行一个)的文本文件。例如:

open myRepository
clear
load /path/to/file1.rdf into urn:context1
load /path/to/file2.rdf into urn:context2

然后你可以简单地执行这个(从命令行):

cat script.txt | ./console.sh 

实现您想要的另一种方法是使用 curl,并通过其REST API直接访问 RDF4J 服务器。例如,要使用 curl 将 Turtle 文件上传到您的存储库,您需要执行以下操作:

curl -X POST -H "Content-type: text/turtle" --data-binary @file.ttl http://localhost:8080/rdf4j-server/repositories/myRepo/statements

最后,您当然也可以编写一个简短的 Java 程序,使用RDF4J 存储库 API与服务器通信。

于 2016-11-29T04:57:29.940 回答