💭
Virtuoso RDFストアに対して、curlおよびpythonを用いてRDFファイルを登録・削除する方法
概要
Virtuoso RDFストアに対して、curlおよびpythonを用いてRDFファイルを登録・削除する方法の備忘録です。
以下を参考にしています。
curl
上記のページの通りです。まず、登録用のサンプルデータとして、myfoaf.rdf
を作成します。
<rdf:RDF xmlns:foaf="http://xmlns.com/foaf/0.1/">
<foaf:Person rdf:about="http://www.example.com/people/中村覚">
<foaf:name>中村覚</foaf:name>
</foaf:Person>
</rdf:RDF>
次に以下のコマンドを実行します。
curl -T ${filename1} ${endpoint}/DAV/home/${user}/rdf_sink/${filename2} -u ${user}:${passwd}
具定例は以下です。
curl -T myfoaf.rdf http://localhost:8890/DAV/home/dba/rdf_sink/myfoaf.rdf -u dba:dba
python
実行例は以下です。以下では、rdflibを用いて、RDFファイルの作成から行なっています。またactionをdelete
に設定することで、削除を行うことができます。
import requests
from rdflib import Graph, URIRef, Literal
from rdflib.namespace import FOAF
filename = "myfoaf.rdf"
endpoint = "http://locahost:8890"
user = "dba"
passwd = "dba"
action = "create"
# action = "delete"
#####
# RDFデータの作成
g = Graph()
s = URIRef("http://example.org/people/中村覚")
name = Literal("中村覚")
g.add((s, FOAF.name, name))
# ファイルへの保存
g.serialize(destination=filename, format="xml")
data = open(filename,'r', encoding='utf-8')
data = data.read().encode()
# 登録
url = f"{endpoint}/DAV/home/{user}/rdf_sink/{filename}"
if action == "create":
response = requests.put(url, data=data, auth=(user, passwd))
elif action == "delete":
response = requests.delete(url, auth=(user, passwd))
print(response.status_code)
まとめ
他にも方法があると思いますが、参考になりましたら幸いです。
Discussion