我继承了一个Virtuoso图形数据库,客户端可以访问
http://someaddress:8890/sparql
我可以通过运行远程清除:
curl -i --data-urlencode query="CLEAR SILENT GRAPH curl -i --data-urlencode query="CLEAR SILENT GRAPH <http://someaddress:8890/db>" -H "Content-Type: application/sparql-query" -G http://someaddress:8890/sparql
并测试它是否符合我的预期:
curl -i --data-urlencode query="select (count(?s) as ?count) where { ?s ?p ?o . }" -H "Content-Type: application/sparql-query" -G http://someaddress:8890/sparql
这给了我数据库中三元组的计数 - 计数非零,但看起来好像剩下的三元组是系统管理的三元组。
接下来,我想要加载一些RDF文件,我打算通过SPARQL端点通过网络向用户提供这些文件。
所以要加载数据,我运行
curl -X PUT --digest -u "user:pass" -T "C:\data\rdf\triples_domain_a.rdf" -G "http://someaddress:8890/sparql-graph-crud-auth" --data-urlencode "graph=http://someaddress:8890/db"
我可以看到在使用之前的curl
检查计数时创建了三元组 - 并且它在此文件中的三重计数上升了。到目前为止,非常好。
但是,当我运行第二个文件时,使用:
curl -X PUT --digest -u "user:pass" -T "C:\data\rdf\triples_domain_b.rdf" -G "http://someaddress:8890/sparql-graph-crud-auth" --data-urlencode "graph=http://someaddress:8890/db"
不是将这些三元组追加到我的数据库中,而是用这个替换以前加载的内容。
我有一系列要加载的附加文件 - 我做错了什么?
我可以通过连接到isql会话并在本地运行http://someaddress:8890
和RDF_GLOBAL_RESET();
直接在DB.DBA.RDF_LOAD_RDFXML_MT
服务器上执行此操作 - 但我正在从其他服务器生成文件,并且理想情况下,我希望该服务器将它们上传到triplestore本身,无需任何手动干预。 curl
方法是首选方法,因为它是一个相对简单的命令,我可以从生成服务器进行参数化和执行。
感觉好像我很亲密,但我似乎无法克服这个替代问题 - 任何想法?