🙄

rico-converterを試す

2024/10/05に公開

概要

rico-converterを試す機会がありましたので、備忘録です。

https://github.com/ArchivesNationalesFR/rico-converter

以下のように説明されています。

A tool to convert EAC-CPF and EAD 2002 XML files to RDF datasets conforming to Records in Contexts Ontology (RiC-O)

(機会翻訳)EAC-CPFやEAD 2002のXMLファイルを、Records in Contexts Ontology(RiC-O)に準拠したRDFデータセットに変換するためのツール

変換する

以下に説明があります。

https://archivesnationalesfr.github.io/rico-converter/en/GettingStarted.html

まず、以下から最新のzipファイルをダウンロードして、展開します。

https://github.com/ArchivesNationalesFR/rico-converter/releases/latest

サンプルデータとして、input-eacinput-eadがあるので、これらをRDFに変換します。

input-eac

本フォルダ内にあるinput-eac/FRAN_NP_051151.xmlについて、ChatGPTによる解説は以下です。

以下を実行します。

sh ricoconverter.sh

デフォルトのまま実行すると、output-eac-20241005といったフォルダが作成され、その中にRDFファイルが出力されます。

input-ead

本フォルダ内にあるinput-ead/FRAN_IR_003500.xmlについて、ChatGPTによる解説は以下です。

先と同様に、以下を実行します。

sh ricoconverter.sh

この時、Enter command to executeという選択肢において、convert_eadを選択します。

実行例は以下です。

sh ricoconverter.sh
:: Welcome to Ric-O Converter 2.0.2 ::
Enter command to execute (convert_eac, convert_eac_raw, convert_ead, test_eac, test_ead, version, help) [press Enter for 'convert_eac'] :convert_ead
Enter parameter file location [press Enter for 'parameters/convert_ead.properties']:
java -Xmx1200M -Xms1200M -jar ricoconverter-cli-2.0.2-onejar.jar convert_ead @parameters/convert_ead.properties
RiC-O Converter 100% [===============================================] 17/17 (0:00:01 / 0:00:00) 
07:29:49.862 INFO  f.g.c.a.r.e.c.Ead2RicoConverterReportListener - 

--- EAD Conversion Report ---
- Number of files to process: 17
- Number of files in ERROR  : 0
- Number of files in success: 17

List of files in errors: 
  None !

Process took 0:00:01 (started at 2024-10-05 07:29:48, ended at 2024-10-05 07:29:49)

結果、output-ead-20241005といったフォルダが作成され、その中にRDFファイルが出力されます。

SPARQLエンドポイントに登録する

以下を参考に、Dydraに出力されたRDFファイルを一括登録します。

https://zenn.dev/nakamura196/articles/d53d4ab238e3d1

登録スクリプトの例は以下です。

from glob import glob
from dydra_py.api import DydraClient
from tqdm import tqdm

files = glob("./ricoconverter-2.0.2/output-eac-20241005/**/*.rdf", recursive=True)

endpoint, api_key = DydraClient.load_env("./.env")
client = DydraClient(endpoint, api_key)

# client.clear()

for file in tqdm(files):
    client.import_by_file(file, "xml")

合わせて、ricoでは以下のNamespaceを使用するようでしたので、これらをSnorqlに登録しました。

以下、色々と試してみます。

https://nakamura196.github.io/snorql_examples/rico/?describe=http%3A%2F%2Fdata.archives-nationales.culture.gouv.fr%2FrecordResource%2Ftop-003500

rico:includesOrIncludedで複数のリソースが関連づけられています。

https://nakamura196.github.io/snorql_examples/rico/?describe=http%3A%2F%2Fdata.archives-nationales.culture.gouv.fr%2FrecordResource%2F003500-d_1

rico:hasProvenanceでagentと関連づいています。

https://nakamura196.github.io/snorql_examples/rico/?describe=http%3A%2F%2Fdata.archives-nationales.culture.gouv.fr%2Fagent%2F051234

これは、rico:isOrWasDescribedByで以下のRecordと関連づけられています。

https://nakamura196.github.io/snorql_examples/rico/?describe=http%3A%2F%2Fdata.archives-nationales.culture.gouv.fr%2Frecord%2F051234

これは、rico:hasCreatorで、以下のagentと関連づいています。

https://nakamura196.github.io/snorql_examples/rico/?describe=http%3A%2F%2Fdata.archives-nationales.culture.gouv.fr%2Fagent%2F005061

これは、rico:isOrWasSubdivisionOfによって、以下のagentと関連づいています。

https://nakamura196.github.io/snorql_examples/rico/?describe=http%3A%2F%2Fdata.archives-nationales.culture.gouv.fr%2Fagent%2F000005

上記のように、さまざまなリソースがRDFによって関連づけられていることが確認できました。

まとめ

Records in Contexts Ontology (RiC-O)をしっかりと勉強したいと思いました。

参考になりましたら幸いです。

Discussion