ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
LEAF Writer:CSSのカスタマイズ

LEAF Writer:CSSのカスタマイズ

概要 LEAF Writerのカスタマイズ方法に関する調査記録です。 https://gitlab.com/calincs/cwrc/leaf-writer/leaf-writer 今回はCSSによる見た目のカスタマイズ方法に関する備忘録です。これにより、以下のように、縦書き表示にする編集環境の用意などが可能になります。 以下は、カスタマイズ前の表示です。 方法 以下のように、スキーマファイルを指定します。 https://github.com/kouigenjimonogatari/kouigenjimonogatari.github.io/blob/master/xml/lw/01.xml 具体的には、以下です。 <?xml-stylesheet type="text/css" href="https://kouigenjimonogatari.github.io/lw/tei_genji.css"?> LEAF Writerはこのスキーマファイルを読み込み、エディタ部分のスタイルを変更するようでした。 これはLEAF Writerに特化した機能ではなく、一般的なブラウザも対応しているものです。 例えば、上記のxmlファイルをGoogle Chromeで表示した場合、以下のようにcssファイルの内容が適用されます。 まとめ TEIおよびLEAF WriterなどのツールにおけるCSSファイルの取り扱いについて、参考になりましたら幸いです。

LEAF Writer:Japan Searchに対するEntity Lookup

LEAF Writer:Japan Searchに対するEntity Lookup

概要 LEAF Writerのカスタマイズ方法に関する調査記録です。 https://gitlab.com/calincs/cwrc/leaf-writer/leaf-writer 今回はEntity Lookupの追加方法に関する備忘録です。具体的には、以下のように、Japan Searchの利活用スキーマに対する問い合わせを行う機能を追加します。 方法 フォークしたリポジトリに対して、以下の変更を加えました。 https://gitlab.com/nakamura196/leaf-writer/-/commit/69e10e2ddd17f6cd01501fbf29f0dd86d1e86a3a 利用 以下のリポジトリを使用することで、UIの一部が日本語化されたバージョンをお試しいただけます。 https://gitlab.com/nakamura196/leaf-writer 起動方法は以下を参考にしてください。 まとめ この方法を応用することで、任意のAPIの追加ができそうです。 LEAF Writerの応用にあたり、参考になりましたら幸いです。

LEAF Writer:日本語UIの追加

LEAF Writer:日本語UIの追加

概要 LEAF Writerのカスタマイズ方法に関する調査記録です。 https://gitlab.com/calincs/cwrc/leaf-writer/leaf-writer 今回は日本語UIの追加方法に関する備忘録です。 方法 フォークしたリポジトリに対して、以下の変更を加えました。 https://gitlab.com/nakamura196/leaf-writer/-/commit/c9b7053814fc1e5a27a1847f20076096832dd68b 利用 以下のリポジトリを使用することで、UIの一部が日本語化されたバージョンをお試しいただけます。 https://gitlab.com/nakamura196/leaf-writer 起動方法は以下を参考にしてください。 まとめ LEAF Writerの応用にあたり、参考になりましたら幸いです。

mirador-sync-windowsのMirador 4版のリポジトリを公開しました。

mirador-sync-windowsのMirador 4版のリポジトリを公開しました。

概要 以下の記事で、mirador-sync-windowsのMirador 4(3)版を作成したことを紹介しました。 今回は、本プラグインのリポジトリを公開したので、備忘録です。 リポジトリ 以下で公開しています。 https://github.com/nakamura196/mirador-sync-windows デモページ 以下からお試しいただけます。 https://nakamura196.github.io/mirador-sync-windows/ GitHub Pagesでの公開に向けて、設定した内容は以下です。 webpack 以下のファイルを一部変更しました。 https://github.com/nakamura196/mirador-sync-windows/blob/main/webpack.config.js 具体的には、以下です。publicPathについて、developmentの場合は、相対パスにしました。これにより、basePathによる問題に対処しました。 return { ...config, output: { filename: 'demo.js', path: path.join(__dirname, 'demo/dist'), // publicPath: '/' publicPath: options.mode === "development" ? './' : '/', }, devServer: { hot: true, port: 4444, static: [ './demo/dist/', ], }, devtool: 'eval-source-map', mode: 'development', entry: ['./demo/src/index.js'], plugins: [ ...(config.plugins || []), new HtmlWebpackPlugin({ template: path.join(__dirname, 'demo/src/index.html') }), new ReactRefreshWebpackPlugin(), ], }; GitHub Actions GitHub Actionsを使ったGitHub Pagesの利用にあたり、以下のようなymlファイルを用意しました。 テストがうまくいかず、その部分はコメントアウトしていますが、今後修正したいと思います。 https://github.com/nakamura196/mirador-sync-windows/blob/main/.github/workflows/node.js.yml まとめ 不完全な部分も多いですが、参考になりましたら幸いです。

Mirador 4プラグイン開発:任意の角度で画像を回転する

Mirador 4プラグイン開発:任意の角度で画像を回転する

概要 Mirador 4において、任意の角度で画像を回転するプラグインを作成しました。 https://github.com/nakamura196/mirador-rotation-plugin 以下で挙動をご確認いただけます。 https://nakamura196.github.io/mirador-rotation-plugin/ 背景 Mirador 3向けに本プラグインを開発していましたが、2024/3/15にMirador 4がプレリリースされました。 https://github.com/ProjectMirador/mirador/releases/tag/v4.0.0.alpha-1 Mirador 3の最新版であるv3.3.0は2021年のリリースだったため、使用されているライブラリ等も古くなっていましたが、今回の更新で、開発がしやすくなりました。 工夫 任意の角度で画像を回転するにあたり、Mirador 4をそのまま使うと、以下のように、角度の変更に対して、画像の回転が追いつかないケースがありました。 https://www.youtube.com/watch?v=zJKWCTA9rjw そこで以下の記事で述べたように、画像の回転や拡大・縮小を遅延なく行うための機能を追加したMiradorを使用しています。 具体的には、openseadragonのsetRotationなどで用意されているimmediatelyパラメータをMiradorから設定できるようにしました。 https://openseadragon.github.io/docs/OpenSeadragon.Viewport.html#setRotation ! 今回はMirador本体にも手を加えましたが、プラグイン側でこのような設定がすでにできるかもしれません。引き続き調査したいと思います。 参考 90度単位で画像を回転させるプラグインとしては、以下もあります。 https://github.com/ProjectMirador/mirador-image-tools こちらは回転だけでなく、さまざまな画像を操作を可能にします。 まとめ Miradorの利用にあたり、参考になりましたら幸いです。

LEAF-Writerをローカル環境で動かす

LEAF-Writerをローカル環境で動かす

概要 LEAF-Writerをローカル環境で動作する機会がありましたので、備忘録です。 リポジトリ 以下を使用します。 https://gitlab.com/calincs/cwrc/leaf-writer/leaf-writer 方法 git clone https://gitlab.com/calincs/cwrc/leaf-writer/leaf-writer cd leaf-writer npm i npm run dev 3000ポートでLEAF-Writerが起動します。 まとめ Dockerを用いる方法もあるようなので、方法がわかりましたら共有したいと思います。

Mirador 2のプラグインの挙動を確認する

Mirador 2のプラグインの挙動を確認する

概要 Mirador 2のプラグインの挙動を確認するリポジトリを作成しました。 https://github.com/nakamura196/mirador2-plugins-demo 以下のURLからお試しいただけます。 https://nakamura196.github.io/mirador2-plugins-demo/ サンプルデータを含む動作例は以下です。 https://nakamura196.github.io/mirador2-plugins-demo/?manifest=https://nakamura196.github.io/mirador2-sync-windows/data/examples/org.json;https://nakamura196.github.io/mirador2-sync-windows/data/examples/inf.json 本リポジトリを作成した目的は、Mirador 2向けに開発されたプラグインをMirador 3向けに改修するための挙動確認です。 プラグイン mirador-sync-windows 以下の記事で紹介したmirador-sync-windowsを有効にしています。 こちらについては、以下の記事でM3版を試作しています。 mirador-disable-plugin UCLA LibraryによってMirador 2向けに作成された以下のプラグインを有効にしています。 https://github.com/UCLALibrary/mirador-disable-zoom こちらについても、以下の記事でM3版を作成しています。 https://youtu.be/RN2V4b7IYoI まとめ Mirador 2のプラグインの挙動確認にあたり、参考になりましたら幸いです。引き続き、プラグインの追加などを行いたいと思います。

mirador-sync-windowsのM3版を作成しました。

mirador-sync-windowsのM3版を作成しました。

概要 以下の記事で、mirador-sync-windowsというMirador 2向けのプラグインを紹介しました。 今回は上記の機能をMirador 3(実際には、Mirador 4)向けに改修しました。 まだ挙動が不安定なところがありますが、以下からお試しいただけます。 https://mirador-sync-windows.vercel.app/ Vercelへのデプロイ 以下のmirador-image-toolsプラグインのmirador4向けのブランチをベースに開発を行いました。 https://github.com/ProjectMirador/mirador-image-tools/tree/mirador4-compat-clean 上記では、以下のようなコマンドが用意されています。 { ... "scripts": { "build": "npm run build:umd", "build:demo": "NODE_ENV=development webpack --mode=development", "build:umd": "NODE_ENV=production webpack --mode=production", "build:es": "mkdir -p es && cp -r src/* es && NODE_ENV=production MODULE_FORMAT=es npx babel es -d es", "build:cjs": "mkdir -p lib && cp -r src/* lib && NODE_ENV=production MODULE_FORMAT=cjs npx babel lib -d lib", "clean": "rm -rf ./umd && rm -rf ./es && rm -rf ./lib && rm -rf ./demo/dist", "lint": "eslint ./src ./__tests__", "prepublishOnly": "npm run clean && npm run build:es && npm run build:cjs && npm run build", "start": "NODE_ENV=development webpack serve --open", "test": "npm run lint && jest", "test:coverage": "jest --coverage", "test:watch": "jest --watch" }, ... } 上記のコマンドを踏まえて、vercelのデプロイ設定を以下のように修正しました。 ...

ArchivematicaをDockerで起動する

ArchivematicaをDockerで起動する

概要 Archivematicaの起動にあたっては、Dockerを用いる方法が簡単でした。以下にインストール方法が記載されています。 https://github.com/artefactual/archivematica/tree/qa/1.x/hack 手順通りに進めるとうまくインストールできましたが、失敗した点について備忘録として記載します。 Elasticsearch container Elasticsearchのコンテナ起動にあたり、vm.max_map_countを設定するように指示されています。 https://github.com/artefactual/archivematica/tree/qa/1.x/hack#elasticsearch-container この設定を忘れると、以下のように、Elasticsearchコンテナが起動しませんでした。 docker compose up [+] Running 10/0 ✔ Container am-mysql-1 Running 0.0s ✔ Container am-archivematica-storage-service-1 Running 0.0s ✔ Container am-nginx-1 Running 0.0s ✔ Container am-clamavd-1 Running 0.0s ✔ Container am-elasticsearch-1 Created 0.0s ✔ Container am-fits-1 Running 0.0s ✔ Container am-gearmand-1 Running 0.0s ✔ Container am-archivematica-mcp-client-1 Running 0.0s ✔ Container am-archivematica-dashboard-1 Created 0.0s ✔ Container am-archivematica-mcp-server-1 Running 0.0s Attaching to archivematica-dashboard-1, archivematica-mcp-client-1, archivematica-mcp-server-1, archivematica-storage-service-1, clamavd-1, elasticsearch-1, fits-1, gearmand-1, mysql-1, nginx-1 elasticsearch-1 | [2024-06-18T02:16:40,373][INFO ][o.e.e.NodeEnvironment ] [am-node] using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/root)]], net usable_space [11.4gb], net total_space [48.2gb], types [ext4] elasticsearch-1 | [2024-06-18T02:16:40,379][INFO ][o.e.e.NodeEnvironment ] [am-node] heap size [512mb], compressed ordinary object pointers [true] elasticsearch-1 | [2024-06-18T02:16:40,433][INFO ][o.e.n.Node ] [am-node] node name [am-node], node ID [SomtTY5CTF-SfYe3gLBpOw] elasticsearch-1 | [2024-06-18T02:16:40,433][INFO ][o.e.n.Node ] [am-node] version[6.8.23], pid[1], build[default/docker/4f67856/2022-01-06T21:30:50.087716Z], OS[Linux/6.5.0-1018-aws/amd64], JVM[AdoptOpenJDK/OpenJDK 64-Bit Server VM/15.0.1/15.0.1+9] elasticsearch-1 | [2024-06-18T02:16:40,434][INFO ][o.e.n.Node ] [am-node] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseG1GC, -XX:G1ReservePercent=25, -XX:InitiatingHeapOccupancyPercent=30, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j2.formatMsgNoLookups=true, -Djava.io.tmpdir=/tmp/elasticsearch-7162129985120281509, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Djava.locale.providers=COMPAT, -XX:UseAVX=2, -Des.cgroups.hierarchy.override=/, -Xms512m, -Xmx512m, -Des.path.home=/usr/share/elasticsearch, -Des.path.conf=/usr/share/elasticsearch/config, -Des.distribution.flavor=default, -Des.distribution.type=docker] elasticsearch-1 | [2024-06-18T02:16:42,896][INFO ][o.e.p.PluginsService ] [am-node] loaded module [aggs-matrix-stats] elasticsearch-1 | [2024-06-18T02:16:42,897][INFO ][o.e.p.PluginsService ] [am-node] loaded module [analysis-common] elasticsearch-1 | [2024-06-18T02:16:42,897][INFO ][o.e.p.PluginsService ] [am-node] loaded module [ingest-common] elasticsearch-1 | [2024-06-18T02:16:42,898][INFO ][o.e.p.PluginsService ] [am-node] loaded module [ingest-geoip] elasticsearch-1 | [2024-06-18T02:16:42,898][INFO ][o.e.p.PluginsService ] [am-node] loaded module [ingest-user-agent] elasticsearch-1 | [2024-06-18T02:16:42,898][INFO ][o.e.p.PluginsService ] [am-node] loaded module [lang-expression] elasticsearch-1 | [2024-06-18T02:16:42,898][INFO ][o.e.p.PluginsService ] [am-node] loaded module [lang-mustache] elasticsearch-1 | [2024-06-18T02:16:42,899][INFO ][o.e.p.PluginsService ] [am-node] loaded module [lang-painless] elasticsearch-1 | [2024-06-18T02:16:42,899][INFO ][o.e.p.PluginsService ] [am-node] loaded module [mapper-extras] elasticsearch-1 | [2024-06-18T02:16:42,899][INFO ][o.e.p.PluginsService ] [am-node] loaded module [parent-join] elasticsearch-1 | [2024-06-18T02:16:42,900][INFO ][o.e.p.PluginsService ] [am-node] loaded module [percolator] elasticsearch-1 | [2024-06-18T02:16:42,900][INFO ][o.e.p.PluginsService ] [am-node] loaded module [rank-eval] elasticsearch-1 | [2024-06-18T02:16:42,900][INFO ][o.e.p.PluginsService ] [am-node] loaded module [reindex] elasticsearch-1 | [2024-06-18T02:16:42,900][INFO ][o.e.p.PluginsService ] [am-node] loaded module [repository-url] elasticsearch-1 | [2024-06-18T02:16:42,901][INFO ][o.e.p.PluginsService ] [am-node] loaded module [transport-netty4] elasticsearch-1 | [2024-06-18T02:16:42,901][INFO ][o.e.p.PluginsService ] [am-node] loaded module [tribe] elasticsearch-1 | [2024-06-18T02:16:42,902][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-ccr] elasticsearch-1 | [2024-06-18T02:16:42,903][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-core] elasticsearch-1 | [2024-06-18T02:16:42,903][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-deprecation] elasticsearch-1 | [2024-06-18T02:16:42,904][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-graph] elasticsearch-1 | [2024-06-18T02:16:42,904][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-ilm] elasticsearch-1 | [2024-06-18T02:16:42,904][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-logstash] elasticsearch-1 | [2024-06-18T02:16:42,905][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-ml] elasticsearch-1 | [2024-06-18T02:16:42,905][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-monitoring] elasticsearch-1 | [2024-06-18T02:16:42,905][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-rollup] elasticsearch-1 | [2024-06-18T02:16:42,905][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-security] elasticsearch-1 | [2024-06-18T02:16:42,906][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-sql] elasticsearch-1 | [2024-06-18T02:16:42,906][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-upgrade] elasticsearch-1 | [2024-06-18T02:16:42,906][INFO ][o.e.p.PluginsService ] [am-node] loaded module [x-pack-watcher] elasticsearch-1 | [2024-06-18T02:16:42,907][INFO ][o.e.p.PluginsService ] [am-node] no plugins loaded elasticsearch-1 | [2024-06-18T02:16:47,324][INFO ][o.e.x.s.a.s.FileRolesStore] [am-node] parsed [0] roles from file [/usr/share/elasticsearch/config/roles.yml] elasticsearch-1 | [2024-06-18T02:16:48,172][INFO ][o.e.x.m.p.l.CppLogMessageHandler] [am-node] [controller/96] [Main.cc@114] controller (64 bit): Version 6.8.23 (Build 31256deab94add) Copyright (c) 2022 Elasticsearch BV elasticsearch-1 | [2024-06-18T02:16:48,944][INFO ][o.e.d.DiscoveryModule ] [am-node] using discovery type [zen] and host providers [settings] elasticsearch-1 | [2024-06-18T02:16:50,009][INFO ][o.e.n.Node ] [am-node] initialized elasticsearch-1 | [2024-06-18T02:16:50,010][INFO ][o.e.n.Node ] [am-node] starting ... elasticsearch-1 | [2024-06-18T02:16:50,139][INFO ][o.e.t.TransportService ] [am-node] publish_address {172.23.0.3:9300}, bound_addresses {0.0.0.0:9300} elasticsearch-1 | [2024-06-18T02:16:50,190][INFO ][o.e.b.BootstrapChecks ] [am-node] bound or publishing to a non-loopback address, enforcing bootstrap checks elasticsearch-1 | ERROR: [1] bootstrap checks failed elasticsearch-1 | [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] elasticsearch-1 | [2024-06-18T02:16:50,238][INFO ][o.e.n.Node ] [am-node] stopping ... elasticsearch-1 | [2024-06-18T02:16:50,253][INFO ][o.e.n.Node ] [am-node] stopped elasticsearch-1 | [2024-06-18T02:16:50,254][INFO ][o.e.n.Node ] [am-node] closing ... elasticsearch-1 | [2024-06-18T02:16:50,265][INFO ][o.e.n.Node ] [am-node] closed elasticsearch-1 | [2024-06-18T02:16:50,268][INFO ][o.e.x.m.p.NativeController] [am-node] Native controller process has stopped - no new native processes can be started dependency failed to start: container am-elasticsearch-1 exited (78) まとめ Dockerによる起動については、開発者のために設計されている と記載されており、プロダクション環境での使用には注意が必要ですが、Archivematicaの使用にあたり、参考になりましたら幸いです。 ...

mirador-sync-windowsを試す

mirador-sync-windowsを試す

概要 mirador-sync-windowsは、以下のように説明されています。 https://github.com/UCLALibrary/mirador-sync-windows (機械翻訳)同じオブジェクトの異なるスペクトル画像など、ほぼ同一の画像を複数比較する際に、複数のウィンドウで同時にアクションを適用することが役立ちます。 使用イメージは以下です。 https://youtu.be/Ls2zvJpSRlc 注意点として、Mirador 2向けのプラグインとなっており、またリポジトリもアーカイブされています。 今回は、このmirador-sync-windowsを試すリポジトリを作成したので、紹介します。 リポジトリ https://github.com/nakamura196/mirador2-sync-windows/ 使い方 以下のように、manifestパラメータに、比較したいマニフェストファイルを;で区切って指定します。 https://nakamura196.github.io/mirador2-sync-windows/?manifest=https://nakamura196.github.io/mirador2-sync-windows/data/examples/org.json;https://nakamura196.github.io/mirador2-sync-windows/data/examples/inf.json GUIの使用方法については、上記の動画をご参照ください。 上記の例は、以下の「シェリー書簡の透過光画像を使ったIIIFアプリケーション」のデータを利用しています。 https://utda.github.io/shelley/ まとめ 今後、本機能をMirador 3のプラグインとして開発したいと思います。 また本モジュールはほぼ同一の画像を複数比較することを目的としていますが、対応点の計算などにより、ほぼ同一でない画像の比較も行えるような機能開発を行いたいと思います。 mirador-sync-windowsについて、参考になりましたら幸いです。

東寺百合文書WEBのデータをIIIFに変換する

東寺百合文書WEBのデータをIIIFに変換する

概要 京都府立京都学・歴彩館が所蔵している国宝・東寺百合文書を公開する東寺百合文書WEBで公開されている画像を利用させていただく機会があり、公開されているデータをIIIF形式に変換して公開するリポジトリを作成しました。 https://github.com/nakamura196/toji_iiif 以下のデータセットを使用させていただきました。 https://hyakugo.pref.kyoto.lg.jp/?page_id=1481 特に、以下のURLから、画像の一覧を確認することができます。 https://nakamura196.github.io/toji_iiif/ ポイント IIIFコレクション 以下のURLからIIIFコレクションにアクセスすることができます。これにより、機械的にアクセスすることができます。 https://nakamura196.github.io/toji_iiif/iiif/set/3/collection.json width, heightの情報 各アイテムには、以下のようなURLからアクセスできます。 https://nakamura196.github.io/toji_iiif/iiif/3/1/manifest.json 特に、各画像のサイズの情報は、冒頭のデータセットには含まれていないため、有用な情報になり得るかと思います。 まとめ 東寺百合文書WEBで公開されているデータを機械的に処理する際などの参考になりましたら幸いです。

https://wikidata.reconci.link/の一部を試す

https://wikidata.reconci.link/の一部を試す

概要 調査の過程で、以下のようなAPIが存在することを知りました。 https://wikidata.reconci.link/ 使い方に関する備忘録です。 suggest 以下のようなURLにより、suggestの値を得られるようでした。 https://wikidata.reconci.link/en/suggest/entity?prefix=中村覚 preview 以下のようなURLにより、previewの結果を取得できました。 https://wikidata.reconci.link/en/preview?id=Q107095935 まとめ OpenRefineと一緒に使われるようですが、また機会をみて調べてみたいと思います。 https://qiita.com/yayamamo/items/eade3e5788e6f359bce7

Omeka SのCustomOntologyモジュールを使って、クラスやプロパティを追加する

Omeka SのCustomOntologyモジュールを使って、クラスやプロパティを追加する

概要 Custom Ontologyは、LOV、schema.org、W3Cといった標準的なオントロジーが利用できないときに、独自の語彙を追加することができるモジュールです。 本モジュールの基本的な使い方については、以下を参考にしてください。 https://nakamura196.hatenablog.com/entry/2021/07/24/235050 また本モジュールを使ってすでに作成した語彙を更新する方法は以下を参考にしてください。 今回は、すでに作成した語彙に、クラスやプロパティを追加する方法に関して説明します。 方法 以下のように、「myprefix」という独自語彙が作成済みであることを前提とします。 myprefix http://localhost/ns/myprefix/ この語彙にクラスなどを新規に追加する場合には、「Create a specific ontology」のフォームは空のままにしておきます。 結果、以下のように、追加を行うことができます。 参考 すでに語彙が作成済みの場合、「Create a specific ontology」のフォームを埋めると、以下のようにエラーが発生しますので、ご注意ください。 An ontology exists for the prefix "myprefix". An error was found. Turtle cannot be created. Nothing was imported. まとめ Custom Ontologyの使用にあたり、参考になりましたら幸いです。

Omeka-S-module-FixCjkSearchのv4.1.0をリリースしました。

Omeka-S-module-FixCjkSearchのv4.1.0をリリースしました。

概要 Omeka Sの標準機能では、日本語による全文検索がうまくいかない課題に対して、以下のモジュールを作成しています。 https://github.com/nakamura196/Omeka-S-module-FixCjkSearch 本モジュールについて、本記事執筆時点のOmeka Sの最新版、v4.1.0では動作しなくなっていたため、モジュールの最新版をリリースしました。 https://github.com/omeka-j/Omeka-S-module-FixCjkSearch/releases 不完全な点もあるかと思いますが、参考になりましたら幸いです。 参考 日本語による全文検索の不具合については、以下の記事も参考にしてください。 また、日本語検索時における「たこ」「タコ」「だこ」「ダコ」などのアクセスの区別については、以下の記事を参考にしてください。

Omeka Sの部分一致検索時のアクセントの区別

Omeka Sの部分一致検索時のアクセントの区別

概要 Omeka Sの部分一致検索について、アクセントの区別について調査しましたので、その備忘録です。 事象 例えば、「たこ」という文字列を含むアイテムが格納されている場合、「たこ」「タコ」「だこ」「ダコ」で同じ検索になります。 原因 インストール時にデフォルトで設定される照合順序「utf8mb4_unicode_ci」が原因のようでした。 具体的には、この照合順序は「case-insensitive」(大文字小文字を区別しない)および「accent-insensitive」(アクセントを区別しない)となるため、「たこ」「タコ」「だこ」「ダコ」で同じ検索になるようでした。 対策 ! 照合順序を変更する際、既存のデータに影響が出ないように注意して、変更前には必ずバックアップを取ることをお勧めします。 もし上記を区別したい場合、「value」というテーブルの照合順序を「utf8mb4_bin」に設定するのが一つの方法のようです。 上記の設定を行った結果、例えば「ダコ」で検索すると0件になりました。 まとめ Omekaの利用にあたり、参考になりましたら幸いです。

Zoteroの使用メモ

Zoteroの使用メモ

概要 https://www.zotero.org/ Zoteroは以下のように説明されています。 Zotero is a free, easy-to-use tool to help you collect, organize, annotate, cite, and share research. (機械翻訳)Zoteroは、研究を収集、整理、注釈付け、引用、共有するための使いやすい無料ツールです。 Zoteroの使用方法に関する備忘録です。 識別子から 以下のように、DOIからインポートできます。 ウェブサイト 以下のchrome拡張「Zotero Connector」をインストールします。 https://chromewebstore.google.com/detail/ekhagklcjbdpajgpjgmbionohlpdbjgc 引用したいウェブサイトで拡張機能をクリックすると、以下のように登録できます。 参考文献の作成 コレクションから参考文献目録を作成できます。 DH2024やJADH2024では、「Digital Humanities Abstracts」が引用スタイルとして指定されているかと思います。 結果、以下のように、文献一覧を出力できます。 引用スタイル「Digital Humanities Abstracts」のインストール 以下からダウンロードします。 https://raw.githubusercontent.com/computationalstylistics/DHAbstracts_biblio_style/master/digital_humanities_abstracts.csl Zotero Connectorがインストールされている場合、以下のように、引用スタイルをインポートできます。 さいごに 参考になりましたら幸いです。

StrapiでCSPのエラーが発生した際の対処法

StrapiでCSPのエラーが発生した際の対処法

概要 Strapiと以下のプラグインを使って、メディアをS3に格納する構成としました。 https://www.npmjs.com/package/@liashchynskyi/strapi-provider-upload-s3-cloudfront その際、以下のエラーが発生し、画像が表示されませんでした。 Refused to load the image 'https://xxx/uploads/yyy.jpg' because it violates the following Content Security Policy directive: "img-src 'self' data: blob: dl.airtable.com". この課題に対して、以下の記事で述べられている通り、./config/middleware.jsを修正することで、この問題を解決することができました。 https://zenn.dev/studiobros/articles/04400f413eb2aa ACLについても 同様に、S3にメディアをアップロードできない状態にも遭遇しましたが、上記の記事にある通り、S3のACLを有効にし、さらに適切なブロックパブリックアクセス (バケット設定)を設定することで、無事にアップロードできるようになりました。 まとめ StrapiとS3を組み合わせたヘッドレスCMSの構築にあたり、参考になりましたら幸いです。

Drupal: Prepopulateモジュールを使って、事前に入力する値を設定する

Drupal: Prepopulateモジュールを使って、事前に入力する値を設定する

概要 Drupalのコンテンツ作成画面にアクセスする際、クエリパラメータを指定することにより、事前に入力する値を設定することができましたので、備忘録です。以下のモジュールを使用します。 https://www.drupal.org/project/prepopulate 使い方 例えば、poemsというコンテンツタイプに新規のコンテンツを追加する際、以下のように、クエリパラメータを追加します。 </node/add/poems?edit[field_spot][widget][0][target_id]=1&edit[title][widget][0][value]=テスト> その結果、以下のように、初期値が入力された状態の登録画面が表示されます。 まとめ 参考になりましたら幸いです。

Microsoft Visioを使ってRDFデータを作成する

Microsoft Visioを使ってRDFデータを作成する

概要 RDFデータの作成にあたり、Microsoft Visioを使う機会があったので、備忘録です。 https://www.microsoft.com/ja-jp/microsoft-365/visio/flowchart-software なおMicrosoft VisioはRDFデータの作成に特化したツールではありませんが、フローチャートと図面の作成ソフトウェアであり、高い操作性を有します。そこで、本ツールで作成したデータをRDFに変換することを試みます。 Microsoft Visioで作成したデータのRDFへの変換にあたっては、以下のPythonライブラリを使用します。 https://pypi.org/project/vsdx/ データ作成 今回は、以下のようなネットワークを作成しました。 https://univtokyo-my.sharepoint.com/:u:/g/personal/2436196812_utac_u-tokyo_ac_jp/EXf0yPI39-pNnruSXMT3JBsBXsUmJ4XYMF_-oRFjjz0CXw?e=wJcFVc 以下の例を参考にしています。 https://www.w3.org/TR/rdf11-primer/#fig4 リソースの作成にあたっては、以下のように楕円を選択します。リテラルは長方形を選択します。 プロパティの編集にあたっては、描画コネクタでノード同士を繋ぎ、以下のように「テキストの編集」からプロパティを入力します。 以下が作成例です。 リソースおよびプロパティはURIによる記述が基本です。またリテラル(長方形)から他のノードに接続することはせず、リソース(楕円)からのみ、他のノードへ接続します。 ただし、後述する変換ライブラリ側の処理になりますが、リソースおよびプロパティに単純な文字列を与えた場合には、http://example.org/を補うことで、URIとして出力します。 つまり、以下のように作成しても、上記と同じRDFデータが作成されます。 変換ライブラリ 本ライブラリについては別の記事で紹介予定です。 Microsoft Visioで作成したファイルは、vsdxファイルとして保存されます。 このvsdxファイルを入力して変換処理を行うことで、以下のような出力が得られます。 @prefix dcterms: <http://purl.org/dc/terms/> . @prefix ex: <http://example.org/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . ex:BOB ex:knows ex:Alice ; ex:type foaf:Person ; foaf:topic_interest <http://www.wikidata.org/entity/Q12418> . ex:subject ex:predicate "リテラル" . <http://www.wikidata.org/entity/Q12418> dcterms:title "Mona Lisa" . また、神崎正英氏が作成された可視化ツールを使うことで、以下のようなネットワーク図が得られます。 この可視化図の作成には、以下の記事で紹介した方法を使用しています。 ...

「ARC2によるRDFグラフの視覚化」をPythonで利用する

「ARC2によるRDFグラフの視覚化」をPythonで利用する

概要 神崎正英氏が公開する「ARC2によるRDFグラフの視覚化」をPythonで利用させていただく機会がありましたので、備忘録です。 「ARC2によるRDFグラフの視覚化」の公開ページは以下です。 https://www.kanzaki.com/works/2009/pub/graph-draw Turtle、RDF/XML、JSON-LD、TriGもしくはMicrodataで記述したRDFを入力として、可視化結果をpngやsvgファイルで取得することができます。 Pythonでの利用例 import requests text = "@prefix ns1: <http://example.org/propery/> .\n\n<http://example.org/bbb> ns1:aaa \"ccc\" ." output_path = "./graph.png" # POSTリクエストに必要なデータ url = "https://www.kanzaki.com/works/2009/pub/graph-draw" data = { "RDF": text, "rtype": "turtle", "gtype": "png", "rankdir": "lr", "qname": "on", } # POSTリクエストを送信 response = requests.post(url, data=data) # 応答がPNG画像でない場合、内容を確認 if response.headers['Content-Type'] != 'image/png': print("応答はPNG画像ではありません。内容を表示します:") # print(response.text[:500]) # 最初の500文字を表示 # [:500] else: os.makedirs(os.path.dirname(output_path), exist_ok=True) # 応答をPNGファイルとして保存 with open(output_path, 'wb') as f: f.write(response.content) まとめ RDFデータの可視化にあたり、参考になりましたら幸いです。