我正在整理RDF服务器。该项目的要求是: 1)可在线查询的三重存储。 2)每周需要生成两个RDF; (基于新数据导入) 3)这些RDF的生成和导入是自动进行的。
这是我到目前为止所做的:
我在测试服务器和Jena Fuseki上安装了Tomcat;我已经使用web.xml
,shiro.ini
和config.ttl
文件对它进行了配置。
RDF文件是在Python中自动生成的,并在新数据导入结束时触发。该脚本在服务器(本地主机)上运行,并使用RDFLIB生成文件。然后我使用CURL删除旧数据集并导入新数据集。
当我去另一台计算机并通过http://192.168.0.12:8080/fuseki访问Triplestore时,我可以查询数据,但是(按预期)不能更新或删除Triple内容。...但是,通过CURL可以远程删除和上传新图形(有效地使任何人都可以在我的服务器上这样做)
CURL -X POST -H content-type:application/rdf+xml -T /path/to/my/file/triples.xml -G http://192.168.0.12:8080/fuseki/mygraph --data-urlencode graph = http://192.168.0.12:8080/fuseki/mygraph/mydataset
我在这里陷入困境,为什么通过GUI访问而不是CURL时localhostfilter起作用?我是否忘记了过滤器/安全性选项?有没有更好的方法可以自动完成每周更新?
值得一提的是,我的config.ttl
文件仅包含与脚本超时有关的配置。
这是我的shiro.ini
文件:
[main]
# Development
ssl.enabled = false
plainMatcher=org.apache.shiro.authc.credential.SimpleCredentialsMatcher
#iniRealm=org.apache.shiro.realm.text.IniRealm
iniRealm.credentialsMatcher = $plainMatcher
localhostFilter=org.apache.jena.fuseki.authz.LocalhostFilter
[users]
# Implicitly adds "iniRealm = org.apache.shiro.realm.text.IniRealm"
admin=Change_On_Production!
[roles]
[urls]
## Control functions open to anyone
/$/status = anon
/$/ping = anon
/**/query = anon
/**/data** = authcBasic,user[admin]
/**/update** = authcBasic,user[admin]
/**/upload** = authcBasic,user[admin]
/**/manage** = authcBasic,user[admin]
## and the rest are restricted to localhost.
#/$/** = anon
/**/update** = localhostFilter
/**/upload** = localhostFilter
/**/manage** = localhostFilter
/**/data** = localhostFilter
/**/get** = localhostFilter
# Everything else
/**=anon