RDF4J Workbench添加RDF:如何添加多个文件?

时间:2016-11-28 20:00:51

标签: rdf owl sesame rdf4j

我正在使用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工作台本身或命令行脚本来进行加载。我知道我可以多次手动使用工作台中的“修改/添加”命令,但我希望将其减少为一个命令,以节省时间并避免错误。

感谢。

2 个答案:

答案 0 :(得分:1)

RDF4J Workbench本身无法一次性添加多个文件。

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

cat script.txt | ./console.sh 

然后你可以通过执行(从命令行)执行此操作:

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

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

class Publication(models.Model):
  is_digital = models.BooleanField(default=True)
  readership = models.IntegerField()

class Article(models.Model):
  language = models.CharField()
  published_in = models.ManyToManyField(Publication)

# returns a queryset of {publications: total readership} for the articles
$ articles = Articles.objects.filter(language='en')
$ articles.values('published_in').annotate(Sum('readership'))

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

答案 1 :(得分:0)

详细说明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命令。另外,我正在使用默认的上下文/图表,所以我省略了Jeen包含的可选urn:context

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

.\console.bat < loadMyOntologies.txt

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

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

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

如果您真的非常非常密切注意,您可能会注意到此示例(2.0.1)中的RDF4J版本早于我最初发布的版本(2.1.2)。我正在完成另一台我还没有更新的机器,但它有效!我确信这个解决方案也适用于我的其他机器上的新版本。