本章では、Omeka Sの開発者向けの情報として、REST APIの活用方法、Pythonスクリプトによる自動化、モジュール開発、MCP(Model Context Protocol)サーバーとの連携について解説します。
REST API
Omeka Sは包括的なREST APIを提供しており、外部のプログラムからデータの取得・登録・更新・削除が可能です。
APIの基本
APIのエンドポイントは以下の形式です。
主なリソースタイプとエンドポイントは以下の通りです。
| リソース | エンドポイント |
|---|---|
| アイテム | /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のモジュールは、以下のディレクトリ構成で作成します。
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の使い方を調べるを参照してください。
関連記事
- Omeka SのAPIへのアクセス制限
- Omeka SのREST APIとやりとりするためのPythonパッケージ
- Pythonを使ってOmeka Sにメディアをアップロードする方法
- Omeka Sへの画像一括登録用プログラム
- Omeka Sのデータをダウンロードするプログラムを作成しました。
- OAI-PMHリポジトリからPythonでレコードを全件取得する
- MCPサーバーを使って、Omeka Sにリソース(アイテムと画像)を登録する
- Omeka Sのモジュール開発におけるGitHubへのリリーススクリプトの作成
- Omeka Sの特定のvocabularyのプロパティ一覧を取得する
- Omeka Sの使い方を調べる
- Omeka Sのファイルをmdx.jpのオブジェクトストレージに保存する