💭

Virtuoso RDFストアに対して、curlおよびpythonを用いてRDFファイルを登録・削除する方法

2022/08/16に公開

概要

Virtuoso RDFストアに対して、curlおよびpythonを用いてRDFファイルを登録・削除する方法の備忘録です。

以下を参考にしています。

https://vos.openlinksw.com/owiki/wiki/VOS/VirtRDFInsert#HTTP PUT

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