RDF形式で保持された情報を深層学習モジュールに入力する際にcsvファイルに成形する必要があり,こちらの方法を調査しました.Triple Storeを立てればcsvで結果を取得するのは難しくないので,あまり使う機会が多くなさそうなので,備忘録を兼ねて記録します.
rdflibには,CSVResultSerializerというクラスが用意されています.下記のように利用します.
import rdflib
from rdflib.plugins.sparql.results.csvresults import CSVResultSerializer
= rdflib.Graph()
graph "rdf.ttl")
graph.parse(
= """
query select distinct *
where {
?s ?p ?o.
}
"""
= graph.query(query)
query_result
= CSVResultSerializer(query_result)
serializer with open("result.csv", "wb") as f:
serializer.serialize(f)
最初は下記のように結果を書き込もうとしました.
with open("result.csv", "w") as f:
結果として,下記のように怒られました.
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/your/environment/venv/lib/python3.10/site-packages/rdflib/plugins/sparql/results/csvresults.py", line 83, in serialize
out.writerow(vs)
File "/your/environment/lib/python3.10/codecs.py", line 378, in write
self.stream.write(data)
TypeError: write() argument must be str, not bytes
binaryモードで開く必要があるようでした.
以上です.