本章では、Omeka Sの開発者向けの情報として、REST APIの活用方法、Pythonスクリプトによる自動化、モジュール開発、MCP(Model Context Protocol)サーバーとの連携について解説します。

REST API

Omeka Sは包括的なREST APIを提供しており、外部のプログラムからデータの取得・登録・更新・削除が可能です。

APIの基本

APIのエンドポイントは以下の形式です。

GGPPDEEOUETTSTLTETE/////aaaaapppppiiiii/////iiiiittttteeeeemmmmmsssss///:::iiiddd#####

主なリソースタイプとエンドポイントは以下の通りです。

リソースエンドポイント
アイテム/api/items
アイテムセット/api/item_sets
メディア/api/media
語彙/api/vocabularies
プロパティ/api/properties
リソーステンプレート/api/resource_templates
サイト/api/sites

認証

データの書き込み操作(POST、PUT、DELETE)には認証が必要です。APIキーを使用して認証します。

# APIキーを使用したアイテムの取得
curl "https://your-domain.com/api/items?key_identity=YOUR_KEY_ID&key_credential=YOUR_KEY_CREDENTIAL"

アクセス制限

APIへのアクセスを制限する方法については、Omeka SのAPIへのアクセス制限を参照してください。

APIを使用したデータ取得の例

import requests

# アイテム一覧の取得
url = "https://your-domain.com/api/items"
params = {
    "per_page": 25,
    "page": 1,
    "sort_by": "id",
    "sort_order": "desc"
}
response = requests.get(url, params=params)
items = response.json()

for item in items:
    title = item.get("dcterms:title", [{}])[0].get("@value", "No title")
    print(f"ID: {item['o:id']}, Title: {title}")

特定の語彙のプロパティ一覧の取得

特定の語彙に含まれるプロパティの一覧を取得する方法については、Omeka Sの特定のvocabularyのプロパティ一覧を取得するを参照してください。

Pythonによる自動化

omeka-s-toolsパッケージ

Omeka SのREST APIとやりとりするためのPythonパッケージが公開されています。詳しくは、Omeka SのREST APIとやりとりするためのPythonパッケージを参照してください。

# omeka-s-tools を使用した例
from omeka_s_tools.api import OmekaAPIClient

client = OmekaAPIClient(
    api_url="https://your-domain.com/api",
    key_identity="YOUR_KEY_ID",
    key_credential="YOUR_KEY_CREDENTIAL"
)

# アイテムの取得
items = client.get_items(params={"per_page": 10})

メディアのアップロード

Pythonを使用してOmeka Sにメディアをアップロードする方法については、Pythonを使ってOmeka Sにメディアをアップロードする方法を参照してください。

import requests

api_url = "https://your-domain.com/api/items"
params = {
    "key_identity": "YOUR_KEY_ID",
    "key_credential": "YOUR_KEY_CREDENTIAL"
}

# アイテムの作成とメディアのアップロード
item_data = {
    "dcterms:title": [{"type": "literal", "@value": "テストアイテム", "@language": "ja"}],
    "o:item_set": [{"o:id": 1}]
}

files = {
    "file[0]": open("image.jpg", "rb")
}

response = requests.post(
    api_url,
    params=params,
    json=item_data,
    files=files
)

画像一括登録プログラム

大量の画像を一括登録するプログラムについては、Omeka Sへの画像一括登録用プログラムを参照してください。

データのダウンロード

Omeka Sのデータをダウンロードするプログラムについては、Omeka Sのデータをダウンロードするプログラムを作成しました。を参照してください。

OAI-PMHを使ったデータ取得

OAI-PMHプロトコルを使用してデータを取得する方法については、OAI-PMHリポジトリからPythonでレコードを全件取得するを参照してください。

モジュール開発

モジュールの基本構成

Omeka Sのモジュールは、以下のディレクトリ構成で作成します。

MyModcsvaMuorisolncesdef/weu/immtlgoedd.uupllheep..icnoinfig.php######PCHSPSJavaScript

module.iniファイルの例:

[info]
name = "MyModule"
version = "1.0.0"
author = "Your Name"
description = "My custom module for Omeka S"
omeka_version_constraint = "^4.0.0"

GitHubへのリリース

モジュールをGitHubにリリースする際のスクリプトの作成については、Omeka Sのモジュール開発におけるGitHubへのリリーススクリプトの作成を参照してください。

開発したモジュールの例

以下は、筆者が開発・改修したモジュールの例です。

MCPサーバーとの連携

MCP(Model Context Protocol)サーバーを使用して、AIアシスタント(Claude等)からOmeka Sにリソースを登録することが可能です。詳しくは、MCPサーバーを使って、Omeka Sにリソース(アイテムと画像)を登録するを参照してください。

MCPサーバーを利用することで、自然言語での指示をもとにアイテムの作成やメタデータの付与を自動化できます。

RDFデータの変換

Omeka SのJSON-LDデータを他のRDF形式に変換する方法については、EASY RDFを用いてJSON-LDのデータをRDF/XMLやTurtleに変換してみるを参照してください。

オブジェクトストレージの利用

ファイルの保存先としてオブジェクトストレージを使用する方法については、Omeka Sのファイルをmdx.jpのオブジェクトストレージに保存するを参照してください。S3互換のオブジェクトストレージを利用することで、大量のメディアファイルを効率的に管理できます。

Omeka Sの使い方を調べる

Omeka Sの使い方を調べるためのリソースとして、DeepWikiやCopilotの活用方法があります。詳しくは、Omeka Sの使い方を調べるを参照してください。

関連記事