我使用的是RDF4J工作台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工作台本身或命令行脚本来进行加载。我知道我可以多次从工作台手动使用修改/添加命令,但我希望将其简化为一个命令,以节省时间和避免错误。
谢谢。
发布于 2016-11-29 04:57:29
RDF4J工作台本身没有一次性添加多个文件的功能。
但是,如果这是您需要反复执行的内容,那么一种简单的方法是使用控制台,并为其编写一个短批处理脚本。该脚本只是一个包含连续控制台命令的文本文件(每行一个)。例如:
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,并通过RDF4J服务器的REST API直接访问它。例如,要使用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-30 02:00:55
为了详细说明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服务器运行的端口更改为8088。
当然,其他版本在存储库的名称(打开命令参数)和本体路径上会有所不同。
随着我使用的本体数量的增加,我将添加更多的load命令。此外,我在默认的上下文/图中工作,因此省略了Jeen包含的可选urn:context。
我通过一个简单的批处理(loadMyOntologies.bat)文件访问上面的内容,因为我使用的是Windows 8:
.\console.bat < loadMyOntologies.txt我的批处理和文本文件位于我的RDF4J bin目录中(路径缩写如下),console.bat位于这里( Jeen提到的console.sh版本):
c:\Users\Greg\...\eclipse-rdf4j-2.0.1\bin我已经在RDF4J工作台中确认,我可以将这个脚本与工作台中的工作结合起来,这个脚本将节省我相当多的时间,特别是当我将更多的本体组合在一起来解决更大的问题时。
如果您非常关注,您可能会注意到,本例中的RDF4J版本(2.0.1)比我最初发布的版本(2.1.2)要早。我正在完成一个不同的机器,我还没有更新,但它的工作!我确信这个解决方案也适用于我的另一台机器上的新版本。
https://stackoverflow.com/questions/40852494
复制相似问题