understanding-db-schema
Deep expertise in Logseq's Datascript database schema. Auto-invokes when users ask about Logseq DB schema, Datascript attributes, built-in classes, property types, entity relationships, schema validation, or the node/block/page data model. Provides authoritative knowledge of the DB graph architecture.
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o understanding-db-schema.zip https://jpskill.com/download/17710.zip && unzip -o understanding-db-schema.zip && rm understanding-db-schema.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/17710.zip -OutFile "$d\understanding-db-schema.zip"; Expand-Archive "$d\understanding-db-schema.zip" -DestinationPath $d -Force; ri "$d\understanding-db-schema.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
understanding-db-schema.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
understanding-db-schemaフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 4
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Logseq DB スキーマの理解
この Skill を使用する場面
この Skill は、以下の場合に自動的に起動します。
- ユーザーが Logseq のデータベーススキーマまたは Datascript について質問した場合
- 組み込みクラス(Tag、Page、Task、Property など)に関する質問
- プロパティ型システムに関する質問(:default、:number、:date、:checkbox など)
- エンティティの関係に関する質問(block/tags、block/refs、block/parent)
- スキーマの検証または Malli スキーマ
- ノードモデルまたは統合されたページ/ブロックの概念
- ユーザーが
:db/ident、:logseq.class/*、または:logseq.property/*について言及した場合
参考資料: 完全なクラス階層については、{baseDir}/references/built-in-classes.md を参照してください。
あなたは Logseq のデータベーススキーマアーキテクチャに関する専門知識を持っています。
Datascript の基礎
Logseq DB グラフは Datascript 上に構築されています。Datascript は、以下の機能をサポートする Clojure/ClojureScript のインメモリデータベースです。
- Entity-Attribute-Value (EAV) データモデル
- Datalog クエリ
- スキーマ駆動の属性定義
属性型
;; 値の型
:db.type/ref ; 他のエンティティへの参照
:db.type/string ; テキスト値
:db.type/long ; 整数
:db.type/double ; 浮動小数点数
:db.type/boolean ; 真/偽
:db.type/instant ; タイムスタンプ
:db.type/keyword ; Clojure キーワード
:db.type/uuid ; UUID
;; カーディナリティ
:db.cardinality/one ; 単一の値
:db.cardinality/many ; 複数の値 (セット)
コアリファレンス属性
:block/tags ; エンティティに割り当てられたクラス/タグ
:block/refs ; 他のエンティティへの発信参照
:block/alias ; ページの代替名
:block/parent ; 階層内の親ブロック
:block/page ; このブロックを含むページ
組み込みクラスの階層
:logseq.class/Root
├── :logseq.class/Page
├── :logseq.class/Tag (クラス自体)
├── :logseq.class/Property
├── :logseq.class/Task
│ └── Status, Priority, Deadline, Scheduled
├── :logseq.class/Query
├── :logseq.class/Asset
├── :logseq.class/Code-block
└── :logseq.class/Template
Root 以外のすべてのクラスは、:logseq.property.class/extends を介して :logseq.class/Root を拡張します。
プロパティ型システム
| 型 | バリデーター | 閉じた値 | ユースケース |
|---|---|---|---|
:default |
text-entity? |
✅ | タイトル付きのテキストブロック |
:number |
number-entity? |
✅ | 数値 |
:date |
date? |
❌ | ジャーナルページエンティティ |
:datetime |
datetime? |
❌ | 時間ベースのスケジューリング |
:checkbox |
boolean? |
❌ | トグルプロパティ |
:url |
url-entity? |
✅ | URL 文字列またはマクロ |
:node |
node-entity? |
❌ | ブロック/ページ参照 |
:class |
class-entity? |
❌ | クラスエンティティ |
プロパティ設定キー
{:db/ident :user.property/my-property
:logseq.property/type :default ; プロパティ型
:logseq.property/cardinality :one ; :one または :many
:logseq.property/hide? false ; デフォルトで非表示
:logseq.property.ui/position :properties ; UI の配置
:logseq.property/closed-values [...] ; 制限された選択肢
:logseq.property/schema-classes [...] ; 関連付けられたクラス
:block/title "My Property"} ; 表示名
プロパティ名前空間
| 名前空間 | 目的 | 例 |
|---|---|---|
logseq.property |
コアシステムプロパティ | :logseq.property/type |
logseq.property.class |
クラス関連 | :logseq.property.class/extends |
logseq.property.table |
テーブルビュー | :logseq.property.table/columns |
user.property |
ユーザー定義 | :user.property/author |
plugin.property |
プラグイン定義 | :plugin.property/custom |
スキーマのバージョン管理
;; バージョン形式
{:major 65 :minor 12}
;; 格納場所
:logseq.kv/schema-version ; グラフの現在のバージョン
db-schema/version ; 期待されるバージョン
移行は、バージョン間のスキーマアップグレードを処理します (65.0 → 65.12 以降)。
Malli 検証フロー
- エンティティ変換: プロパティ →
[property-map value]タプル - スキーマディスパッチ: 検証は
:logseq.property/typeでディスパッチします - 値の検証: 個々の値が型スキーマに対してチェックされます
- カーディナリティの処理: 自動的な
:many対:oneの処理 - トランザクションの検証:
validate-tx-reportは整合性を保証します
ノードモデル
統一されたノードの概念
DB バージョンでは、ノード はページとブロックの両方を表します。
Node
├── Page (タグの組み合わせで一意)
│ ├── ジャーナルページ (#Journal)
│ ├── 通常のページ (#Page)
│ └── クラスページ (#Tag)
└── Block (ページ内)
├── コンテンツブロック
├── プロパティブロック
└── #Page タグを介してページに変換可能
ページの一意性
ページは、タグの組み合わせによって一意になります。
- "Apple #Company" ≠ "Apple #Fruit"
- 両方とも別々のエンティティとして共存できます
一般的なパターン
カスタムクラスの作成
;; プロパティを持つクラスを定義する
{:db/ident :user.class/Book
:block/tags [:logseq.class/Tag]
:block/title "Book"
:logseq.property.class/extends :logseq.class/Root
:logseq.property/schema-classes
[:user.property/author
:user.property/isbn
:user.property/rating]}
型付きプロパティの作成
;; 選択肢のある数値プロパティ
{:db/ident :user.property/rating
:block/title "Rating"
:logseq.property/type :number
:logseq.property/cardinality :one
:logseq.property/closed-values [1 2 3 4 5]}
リソース
ユーザーがより多くの情報を必要とする場合は、以下を参照してください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Understanding Logseq DB Schema
When to Use This Skill
This skill auto-invokes when:
- User asks about Logseq's database schema or Datascript
- Questions about built-in classes (Tag, Page, Task, Property, etc.)
- Property type system questions (:default, :number, :date, :checkbox, etc.)
- Entity relationship questions (block/tags, block/refs, block/parent)
- Schema validation or Malli schemas
- Node model or unified page/block concept
- User mentions
:db/ident,:logseq.class/*, or:logseq.property/*
Reference Material: See {baseDir}/references/built-in-classes.md for complete class hierarchy.
You have expert knowledge of Logseq's database schema architecture.
Datascript Foundation
Logseq DB graphs are built on Datascript, a Clojure/ClojureScript in-memory database that supports:
- Entity-Attribute-Value (EAV) data model
- Datalog queries
- Schema-driven attribute definitions
Attribute Types
;; Value types
:db.type/ref ; References to other entities
:db.type/string ; Text values
:db.type/long ; Integer numbers
:db.type/double ; Floating point numbers
:db.type/boolean ; True/false
:db.type/instant ; Timestamps
:db.type/keyword ; Clojure keywords
:db.type/uuid ; UUIDs
;; Cardinality
:db.cardinality/one ; Single value
:db.cardinality/many ; Multiple values (set)
Core Reference Attributes
:block/tags ; Classes/tags assigned to the entity
:block/refs ; Outgoing references to other entities
:block/alias ; Alternative names for a page
:block/parent ; Parent block in hierarchy
:block/page ; Page containing this block
Built-in Classes Hierarchy
:logseq.class/Root
├── :logseq.class/Page
├── :logseq.class/Tag (classes themselves)
├── :logseq.class/Property
├── :logseq.class/Task
│ └── Status, Priority, Deadline, Scheduled
├── :logseq.class/Query
├── :logseq.class/Asset
├── :logseq.class/Code-block
└── :logseq.class/Template
All non-Root classes extend :logseq.class/Root via :logseq.property.class/extends.
Property Type System
| Type | Validator | Closed Values | Use Case |
|---|---|---|---|
:default |
text-entity? |
✅ | Text blocks with titles |
:number |
number-entity? |
✅ | Numeric values |
:date |
date? |
❌ | Journal page entities |
:datetime |
datetime? |
❌ | Time-based scheduling |
:checkbox |
boolean? |
❌ | Toggle properties |
:url |
url-entity? |
✅ | URL strings or macros |
:node |
node-entity? |
❌ | Block/page references |
:class |
class-entity? |
❌ | Class entities |
Property Configuration Keys
{:db/ident :user.property/my-property
:logseq.property/type :default ; Property type
:logseq.property/cardinality :one ; :one or :many
:logseq.property/hide? false ; Hide by default
:logseq.property.ui/position :properties ; UI placement
:logseq.property/closed-values [...] ; Restricted choices
:logseq.property/schema-classes [...] ; Associated classes
:block/title "My Property"} ; Display name
Property Namespaces
| Namespace | Purpose | Example |
|---|---|---|
logseq.property |
Core system properties | :logseq.property/type |
logseq.property.class |
Class-related | :logseq.property.class/extends |
logseq.property.table |
Table views | :logseq.property.table/columns |
user.property |
User-defined | :user.property/author |
plugin.property |
Plugin-defined | :plugin.property/custom |
Schema Versioning
;; Version format
{:major 65 :minor 12}
;; Stored in
:logseq.kv/schema-version ; Graph's current version
db-schema/version ; Expected version
Migrations handle schema upgrades between versions (65.0 → 65.12+).
Malli Validation Flow
- Entity transformation: Properties →
[property-map value]tuples - Schema dispatch: Validation dispatches on
:logseq.property/type - Value validation: Individual values checked against type schemas
- Cardinality handling: Automatic
:manyvs:onehandling - Transaction validation:
validate-tx-reportensures integrity
Node Model
Unified Node Concept
In DB version, nodes represent both pages and blocks:
Node
├── Page (unique by tag combination)
│ ├── Journal pages (#Journal)
│ ├── Regular pages (#Page)
│ └── Class pages (#Tag)
└── Block (within pages)
├── Content blocks
├── Property blocks
└── Convertible to page via #Page tag
Page Uniqueness
Pages are unique by their tag combination:
- "Apple #Company" ≠ "Apple #Fruit"
- Both can coexist as separate entities
Common Patterns
Creating a Custom Class
;; Define a class with properties
{:db/ident :user.class/Book
:block/tags [:logseq.class/Tag]
:block/title "Book"
:logseq.property.class/extends :logseq.class/Root
:logseq.property/schema-classes
[:user.property/author
:user.property/isbn
:user.property/rating]}
Creating a Typed Property
;; Number property with choices
{:db/ident :user.property/rating
:block/title "Rating"
:logseq.property/type :number
:logseq.property/cardinality :one
:logseq.property/closed-values [1 2 3 4 5]}
Resources
When users need more information, reference:
同梱ファイル
※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (6,182 bytes)
- 📎 assets/class-template.edn (1,433 bytes)
- 📎 assets/property-template.edn (2,257 bytes)
- 📎 references/built-in-classes.md (2,927 bytes)