Semantic Integration EngineとChatGPT連携

浅海 智晴 Created: 2025-12-15

本記事では、Semantic Integration Engineと ChatGPT を MCP(Model Context Protocol)で連携させた場合に、ChatGPT がどのように SIE の知識を利用し、推論を行い、最終的な回答を生成しているのかをプロトコルレベルで詳しく解説します。

重要なのは、ChatGPT が SIE に「答えそのもの」を求めているのではなく、自ら考えるための材料や根拠を取得しているという点です。

本稿では、擬似的な MCP セッションを再現しながら、SIE が提供する concept / passage / graph / score という返却構造が、なぜ生成AIの推論モデルと高い親和性を持つのかを明らかにします。

SIE起動

Semantic Integration Engine📄 Semantic Integration Engine: AI時代のBoK活用デモのものを使用します。 同じ手順でdockerによって起動すればOKです。

ChatGPTセッションの実現方法

残念ながら筆者のChatGPTアカウントではまだMCPの登録が許可されていません。 このため、本稿はChatGPTのチャット上でChatGPTの助けを借りながらの仮想セッションとなります。

仮想セッションは以下の構成になっています。

  • ChatGPT側の振る舞いは、ChatGPTのチャットで教えてもらったもの

  • SIE側の振る舞いはdocker composeで公開しているSIEのデモ環境に対してWebSocketプロトコルでChatGPTに教えてもらったものを発行し、そのレスポンスを取得する

このため、実際にMCPとして接続した時に限りなく近いセッションの状況が再現できているのではないかと思います。

Semantic Integration Engineアーキテクチャ
図 1. Semantic Integration Engineアーキテクチャ

初期設定

ChatGPTの初期設定では、MCPサーバーのURLをChatGPTに登録します。

筆者の環境では試せていませんが、ChatGPTの提示する手順をまとめました。

SIEのデモではMcpWebSocketServerがMCP WebSocketプロトコルのエンドポイントとして以下のURLを用意しています。

  • ws://localhost:9050/mcp

これをChatGPTに登録すればOKです。

ChatGPTのSettingで以下の情報を入力します。

Name: Semantic Integration Engine
URL: ws://localhost:9050/mcp

ここから先は、ChatGPT が MCP サーバーと通信する際に実際にどのようなメッセージがやり取りされているのかを、websocat を用いて擬似的に再現していきます。

擬似セッション

ChatGPTとMCP間の通信はWebSocket上でJSON-RPCライクなChatGPT独自プロトコルで行われます。

本記事ではwebsocatコマンドを使用してこの擬似セッションを作っていきます。

websocatコマンドは以下のように起動します。

$ websocat ws://localhost:9050/mcp | jq .

websocatコマンドの後段にパイプラインでjqコマンドを接続することで、出力されるJSONの整形を行うようにしています。

websocatコマンドを起動すると標準入力からで入力待ちになります。 ここにJSONを入力するとSIEに送られ、実行結果がJSONで返ってきます。

初期化

ChatGPTでのMCPの初期化は以下の2つのリクエストで行われます。ChatGPTでのMCPの初期化は以下の2つのリクエストで行われます。

  • initialize

  • get_manifest

initialize

ChatGPTではMCPの登録が終わると、以下の initialize リクエストで MCP の初期化情報を取得します。

{"type":"initialize","protocolVersion":"1.0","client":{"name":"chatgpt","version":"1.0"}}

入力の結果、以下の結果が返ってきます。

{
  "type": "initialized",
  "protocolVersion": "1.0",
  "server": {
    "name": "semantic-integration-engine",
    "version": "0.0.4"
  },
  "capabilities": {
    "tools": {
      "enabled": true
    }
  },
  "version": null,
  "name": "semantic-integration-engine",
  "metadata": {
    "author": "SimpleModeling Team",
    "homepage": "https://www.simplemodeling.org"
  }
}

type: initialized

MCPセッションが正式に確立されたことを示します。

protocolVersion: 1.0

MCPの対話プロトコルバージョンです。 APIバージョンではなく、会話の文法(DSL (Domain Specific Language))のバージョンとなります。

server

serverで通信相手とバージョンを示します。

  "server": {
    "name": "semantic-integration-engine",
    "version": "0.0.4"
  },

capability

capability では「このセッションでは tools が使える」という宣言をしています。

  "capabilities": {
    "tools": {
      "enabled": true
    }
  },

ここが MCP の核心となるところで、この宣言があることで ChatGPT が「では tools/list を呼ぼう」と判断する根拠になります。

メタ情報

MCPのメタ情報です。 AI にとっては「背景知識のヒント」になります。

  "version": null,
  "name": "semantic-integration-engine",
  "metadata": {
    "author": "SimpleModeling Team",
    "homepage": "https://www.simplemodeling.org"
  }
}

get_manifest

initialize リクエストの次は、以下の get_manifest リクエストで MCP の機能を取得します。

{"type":"get_manifest"}

その結果、SIEからは以下のJSONが返ってきます。

{
  "type": "manifest",
  "manifest": {
    "schema_version": "v1",
    "name": "semantic-integration-engine",
    "version": "0.0.4",
    "description": "Semantic Integration Engine for SimpleModeling.org. Provides unified semantic search across SmartDox, RDF, SKOS, ontology graphs, and the SimpleModeling Knowledge Graph.",
    "interfaces": {
      "websocket": {
        "url": "ws://localhost:9050/mcp",
        "protocol": "mcp"
      }
    },
    "capabilities": {
      "tools": {
        "enabled": true
      }
    },
    "tools": [
      {
        "name": "tools.sie.query",
        "description": "Semantic search across SmartDox, RDF, ontology, and vector embeddings. Returns unified SemanticRAG results: concept matches, passages, summaries, and knowledge graph snippets.",
        "input_schema": {
          "type": "object",
          "properties": {
            "query": {
              "type": "string",
              "description": "Natural language query, glossary term, page title, or concept name. Example: 'What is SimpleModelObject?'"
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 20,
              "default": 5,
              "description": "Maximum number of passages to retrieve."
            },
            "include_graph": {
              "type": "boolean",
              "default": true,
              "description": "If true, include graph-neighborhood results for related concepts."
            }
          },
          "required": [
            "query"
          ]
        }
      },
      {
        "name": "tools.sie.explainConcept",
        "description": "Explain a single concept identified by its URI. Returns label, definitions, SKOS relations, and its local RDF neighborhood.",
        "input_schema": {
          "type": "object",
          "properties": {
            "uri": {
              "type": "string",
              "description": "Fully qualified concept URI. Example: 'https://www.simplemodeling.org/simplemodelingorg/ontology/0.1-SNAPSHOT#SimpleModelObject'"
            },
            "locale": {
              "type": "string",
              "description": "Optional locale for explanation (IETF BCP47). Example: 'en', 'ja'. Default is 'en'."
            }
          },
          "required": [
            "uri"
          ]
        }
      },
      {
        "name": "tools.sie.getNeighbors",
        "description": "Retrieve the local RDF/SKOS neighborhood of a concept: broader, narrower, related, domain-specific relationships, state-machine transitions, component relations, and more.",
        "input_schema": {
          "type": "object",
          "properties": {
            "uri": {
              "type": "string",
              "description": "Concept URI from the SimpleModeling Knowledge Graph."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20,
              "description": "Maximum number of neighbor nodes to return."
            }
          },
          "required": [
            "uri"
          ]
        }
      }
    ],
    "metadata": {
      "author": "SimpleModeling Team",
      "homepage": "https://www.simplemodeling.org",
      "license": "Apache-2.0",
      "description_long": "This MCP manifest describes the SimpleModeling Semantic Integration Engine (SIE), capable of hybrid semantic retrieval combining RDF, SKOS, SPARQL, ontology reasoning, SmartDox semantic index, and vector search. It provides a unified interface for ChatGPT-based knowledge exploration, conceptual explanation, and semantic graph traversal.",
      "description_long_ja": "本MCPマニフェストは、SimpleModeling Semantic Integration Engine (SIE) が提供する機能を ChatGPT に正しく伝えるための自己記述ファイルです。SIE は RDF・SKOS・SPARQL・オントロジー推論・SmartDox セマンティックインデックス・ベクトル検索を統合したハイブリッド検索を提供しており、本マニフェストにより ChatGPT はこれらの機能を理解し、適切なツール呼び出しを自律的に行えるようになります。SemanticRAG の構造や概念説明、近傍探索といった高度な知識処理を利用者に代わって実行するため、manifest の情報量は推論精度と操作性を大きく向上させます。",
      "keywords": [
        "SimpleModeling",
        "Semantic Search",
        "Knowledge Graph",
        "RDF",
        "SKOS",
        "SmartDox",
        "Ontology",
        "Semantic RAG",
        "MCP"
      ]
    },
    "protocolVersion": "1.0"
  }
}

このJSONは単なるツール一覧ではありません。 ChatGPT が「このサーバーをどう使って考えるか」を学習するための契約書(DSL定義)となっています。

ChatGPTはmanifestを読んで行動を決めます。

interface

interface は通信プロトコルを示します。

"interfaces": {
  "websocket": {
    "url": "ws://localhost:9050/mcp",
    "protocol": "mcp"
  }
}

ChatGPTはこのURLを見て、接続先を REST のような「事前に知っている API」ではない、という形で理解します。

tools

tools では、SIE が用意している以下のツールを定義しています。

  • tools.sie.query : 問合せ

  • tools.sie.explainConcept : コンセプトの説明

  • tools.sie.getNeighbors : 近傍情報の取得

それぞれのツールには以下のプロパティが定義されています。

name

名前

description

ツールの説明

input_schema

入力パラメタのスキーマ

ChatGPTはこれらの情報からツールの機能と使用方法を理解し、推論過程の中で、どのツールをどのように使用できるかを考察します。

このための情報として名前や入力パラメタが重要なのは言うまでもありませんが、description によるツールの説明も、直接の判断材料となる点で非常に重要です。

description の内容が ChatGPT の振る舞いに影響を与えるという点が、従来のプログラム向けインタフェースとは本質的に異なるところです。

metadata

metadata は MCP 全体に対するメタ情報です。 言語による情報記述が主ですが、ChatGPTがこの言語情報を理解して、MCP利用の判断材料にしているため非常に重要な情報になります。

セッションの開始

ChatGPTとSIE(MCP)のセッションが開始されました。

ChatGPT利用者が以下の質問をしたところから、SIEの知識ベースを活用してChatGPTが回答を行う流れを見ていきましょう。

SimpleObjectとは何ですか?

ChatGPTの処理

ChatGPTコンソールから「SimpleObjectとは何ですか?」と入力された場合の、ChatGPT側の処理について考えます。

以下の内容はChatGPTに教えてもらった結果をベースにしていますので、実際のセッションでも近しい振る舞いになると思われます。

ChatGPT内部の解析

ChatGPTは以下のような判断を行い、SIEの利用を行うことを決定します。

  • SimpleObject」は SimpleModeling の専門用語

  • SIE には “Glossary / BoK (Body of Knowledge) / SmartDox” が揃っている

  • よって外部知識を参照すべき

  • → MCP ツール(sie.query または sie.explainConcept)を呼び出すべき

この判断は ChatGPT モデル内部で自律的に行われます。

ChatGPT → MCP:ツール呼び出し判断と call_tool メッセージ生成

ChatGPTは SIE(MCP)が提供する tools.sie.query を使用します。

{"type":"call","tool":{"name":"tools.sie.query","arguments":{"query":"SimpleModeling"}}}

リクエストの結果、リクエストした単語に関係する以下の情報が返ってきます。

graph(知識グラフ)は、nodes に知識グラフを構成するノード一覧、edges に知識のトリプル一覧を格納しています。

{
  "type": "toolResult",
  "tool": "tools.sie.query",
  "result": {
    "concepts": [
      {
        "uri": "https://www.simplemodeling.org/glossary/knowledge-development/socialization",
        "label": "共同化",
        "lang": "en"
      },
      {
        "uri": "https://www.simplemodeling.org/glossary/development-process/alpha-state",
        "label": "アルファ状態",
        "lang": "en"
      },
      {
        "uri": "https://www.simplemodeling.org/glossary/development-process/activity",
        "label": "活動",
        "lang": "en"
      }
    ],
    "passages": [
      {
        "id": "https://www.simplemodeling.org/ja/glossary/development-process/kernel.html#chunk-0",
        "text": "カーネル 浅海 智晴 用語 カーネル 用語(英) Kernel 別名 - 定義 任意のソフトウェア開発活動を定義・理解するために必要最小限の概念を含むEssenceの中核要素群。アルファ、アクティビティスペース、能力などで構成される。 SimpleModeling SimpleModelingのメタ開発フレームワークを表現するための参照基盤を形成する。",
        "score": 0.8439708948135376
      },
      {
        "id": "https://www.simplemodeling.org/ja/glossary/development-process/simplemodeling-reference-profile.html#chunk-0",
        "text": "SimpleModelingリファレンス・プロファイル 浅海 智晴 用語 SimpleModelingリファレンス・プロファイル 用語(英) SimpleModeling Reference Profile 別名 - 略語 SMRP 定義 SimpleModelingのリファレンス・プロファイルです。 SimpleModelingによる文芸モデル駆動開発の説明を具体的にするために、リファレンス・プロファイルを定義しています。",
        "score": 0.8891597986221313
      },
      {
        "id": "https://www.simplemodeling.org/ja/glossary/knowledge-development/knowledge-promotion.html#chunk-0",
        "text": "知識昇格 浅海 智晴 用語 知識昇格 用語(英) Knowledge Promotion 別名 - 定義 BoKの構造化知識を再学習・ファインチューニングによりAIモデルのパラメトリック知識(PPK)へ恒久的に統合するプロセス。 SimpleModeling SimpleModelingにおける知識昇格は、文芸モデリング・知識体系化・モデル再学習を結ぶ知識生態系の持続的進化段階を意味する。",
        "score": 0.8909172415733337
      },
      {
        "id": "https://www.simplemodeling.org/en/domain-modeling/concept-analysis-design.html#chunk-1",
        "text": "ed with domain experts Establish it as a mechanism that can be implemented in software There are various options for modeling the problem domain, such as granularity and perspective, but it must fit within a structure that operates in software. Therefore, it is practical to proceed with modeling according to a predefined model framework template that works in software. Model Layers in SimpleModeling In SimpleModeling, domain models are implemented in the following three layers. Conceptual Model Analysis Model Design Model The diagram below shows the types of model elements used in the conceptual, analysis, and design models within SimpleModeling. Details will be explained in another article, but the types of model elements used increase dramatically as the level of concreteness rises from ",
        "score": 0.9439836144447327
      },
      {
        "id": "https://www.simplemodeling.org/en/domain-modeling/simple-object.html#chunk-0",
        "text": "SimpleObject ASAMI, Tomoharu Created: 2025-09-15 In the SimpleModeling Reference Profile, the abstract class SimpleEntity is defined as the base class for all entity objects. Except for special cases, all entity objects are expected to derive from SimpleEntity. SimpleEntity provides a comprehensive set of attributes commonly needed by entity objects, allowing designers to define entity objects by simply adding domain-specific attributes. SimpleObject is defined as the base class of SimpleEntity. SimpleObject is an abstract object in SimpleModeling that defines the common attributes of domain objects. Value objects can optionally use SimpleObject as their base class. SimpleObject is composed by delegating various generic attribute groups, each of which can also be reused individually as com",
        "score": 0.9511008262634277
      }
    ],
    "graph": {
      "nodes": [
        {
          "id": "https://www.simplemodeling.org/glossary/knowledge-development/socialization",
          "label": "共同化",
          "kind": "concept"
        },
        {
          "id": "https://www.simplemodeling.org/glossary/development-process/alpha-state",
          "label": "アルファ状態",
          "kind": "concept"
        },
        {
          "id": "https://www.simplemodeling.org/glossary/development-process/activity",
          "label": "活動",
          "kind": "concept"
        },
        {
          "id": "https://www.simplemodeling.org/ja/glossary/development-process/kernel.html#chunk-0",
          "label": "カーネル 浅海 智晴 用語 カーネル 用語(英) Kernel 別名 - 定義 任意のソフトウェア開発活動を定義・理解するために必要最小限の概念を含むEssen",
          "kind": "passage"
        },
        {
          "id": "https://www.simplemodeling.org/ja/glossary/development-process/simplemodeling-reference-profile.html#chunk-0",
          "label": "SimpleModelingリファレンス・プロファイル 浅海 智晴 用語 SimpleModelingリファレンス・プロファイル 用語(英) SimpleMod",
          "kind": "passage"
        },
        {
          "id": "https://www.simplemodeling.org/ja/glossary/knowledge-development/knowledge-promotion.html#chunk-0",
          "label": "知識昇格 浅海 智晴 用語 知識昇格 用語(英) Knowledge Promotion 別名 - 定義 BoKの構造化知識を再学習・ファインチューニングにより",
          "kind": "passage"
        },
        {
          "id": "https://www.simplemodeling.org/en/domain-modeling/concept-analysis-design.html#chunk-1",
          "label": "ed with domain experts Establish it as a mechanism that can be implemented in so",
          "kind": "passage"
        },
        {
          "id": "https://www.simplemodeling.org/en/domain-modeling/simple-object.html#chunk-0",
          "label": "SimpleObject ASAMI, Tomoharu Created: 2025-09-15 In the SimpleModeling Reference",
          "kind": "passage"
        }
      ],
      "edges": [
        {
          "source": "https://www.simplemodeling.org/glossary/knowledge-development/socialization",
          "target": "https://www.simplemodeling.org/ja/glossary/development-process/kernel.html#chunk-0",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/knowledge-development/socialization",
          "target": "https://www.simplemodeling.org/ja/glossary/development-process/simplemodeling-reference-profile.html#chunk-0",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/knowledge-development/socialization",
          "target": "https://www.simplemodeling.org/ja/glossary/knowledge-development/knowledge-promotion.html#chunk-0",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/knowledge-development/socialization",
          "target": "https://www.simplemodeling.org/en/domain-modeling/concept-analysis-design.html#chunk-1",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/knowledge-development/socialization",
          "target": "https://www.simplemodeling.org/en/domain-modeling/simple-object.html#chunk-0",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/development-process/alpha-state",
          "target": "https://www.simplemodeling.org/ja/glossary/development-process/kernel.html#chunk-0",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/development-process/alpha-state",
          "target": "https://www.simplemodeling.org/ja/glossary/development-process/simplemodeling-reference-profile.html#chunk-0",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/development-process/alpha-state",
          "target": "https://www.simplemodeling.org/ja/glossary/knowledge-development/knowledge-promotion.html#chunk-0",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/development-process/alpha-state",
          "target": "https://www.simplemodeling.org/en/domain-modeling/concept-analysis-design.html#chunk-1",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/development-process/alpha-state",
          "target": "https://www.simplemodeling.org/en/domain-modeling/simple-object.html#chunk-0",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/development-process/activity",
          "target": "https://www.simplemodeling.org/ja/glossary/development-process/kernel.html#chunk-0",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/development-process/activity",
          "target": "https://www.simplemodeling.org/ja/glossary/development-process/simplemodeling-reference-profile.html#chunk-0",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/development-process/activity",
          "target": "https://www.simplemodeling.org/ja/glossary/knowledge-development/knowledge-promotion.html#chunk-0",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/development-process/activity",
          "target": "https://www.simplemodeling.org/en/domain-modeling/concept-analysis-design.html#chunk-1",
          "relation": "related"
        },
        {
          "source": "https://www.simplemodeling.org/glossary/development-process/activity",
          "target": "https://www.simplemodeling.org/en/domain-modeling/simple-object.html#chunk-0",
          "relation": "related"
        }
      ]
    }
  }
}

concepts は「思考の中心軸」を決める

concepts には以下のようなデータが入ってきます。

"concepts": [
  { "uri": ".../socialization", "label": "共同化" },
  { "uri": "...#hasService", "label": "hasService" },
  { "uri": ".../development-system-reference-profile", "label": "開発システム・リファレンス・プロファイル" }
]

ChatGPT はここを見て、「問いがどの概念群にマップされたか」を理解します。 そして、以降の推論において、用語説明、関連付け、文脈選択のアンカーとして使用します。

つまり、「SimpleObject」という曖昧な語が、3 つの意味的中心に分解された、と理解します。

passages は「発話可能な知識素材」

passages にはコンセプトに関連するテキストとスコアが入っています。

"passages": [
  { "text": "...", "score": 0.95 },
  ...
]

passages はテキスト情報を提供するため、生成に直結する部分となります。

ChatGPT はスコア順に passages を評価し、内容を要約・再構成して、文章として自然につながるよう再編集します。

重要なのは、スコアは絶対値ではなく相対順位である点です。 ChatGPT は高スコアを優先しつつ、低スコアも補助的に利用します。

以上の処理により、GraphDB 由来の concepts と VectorDB(documents)由来の説明文が自然に融合します。

graph は「意味的一貫性チェック」に使われる

graph には、問いに関連する知識グラフが格納されます。

"graph": {
  "nodes": [...],
  "edges": [...]
}

ChatGPT はこの部分を、可視化用ではなく内部整合性の検証用として利用します。

具体的には以下の点を確認しています。

  • 同じ concept から複数の passage が出ているか

  • passage 同士が無関係でないか

  • 説明の流れが飛躍していないか

GraphDB の構造が、生成文の「論理ジャンプ防止柵」として機能します。

ChatGPT の統合処理:回答生成

ChatGPT は返されたデータを内部で統合して、次の処理を行います。

  1. 定義を抽出(Glossary / BoK

  2. 説明文書の該当箇所を読み解く

  3. RDF の意味構造から文脈を補強する

  4. 会話履歴(sessionMemory)に基づき口調や文脈を調整

  5. 利用者が理解しやすい自然文に最終整形

その結果として以下のような回答が行われます。

SimpleObject は SimpleModeling におけるエンティティの基本抽象です。
識別子(id)を持ち、name/title/description などの NameAttributes に加えて、
作成日時・更新日時などのライフサイクル情報、
そして PostStatus や Aliveness といった状態機械を委譲によって保持します。
SimpleModelObject(または SimpleEntity)は、アプリケーション全体で共通化される
標準的な基底型として機能し、すべての業務エンティティの土台となります。

ChatGPT は自分が知っている知識ではなく、SIE が提供した内容を利用して回答しています。

なぜこの構造が ChatGPT に向いているか

SIEが提供する問合せ機能について、ChatGPTから以下のコメントをもらいました。

あなたの返却構造は、ChatGPT にとって非常に扱いやすい。
理由は:
	•	意味単位(concept) が明示されている
	•	説明単位(passage) が分離されている
	•	関係構造(graph) が明示されている
	•	rank(score) が付いている
👉 ChatGPT は「何を」「どの順で」「どのくらい強く」使うかを
自分で判断できる。

Your response structure is extremely easy for ChatGPT to work with.

The reasons are as follows:

  • Semantic units (concepts) are explicitly defined.

  • Explanatory units (passages) are clearly separated.

  • Relational structures (graph) are explicitly represented.

  • Each item is associated with a rank (score).

👉 As a result, ChatGPT can decide by itself what to use, in what order, and with what level of emphasis.

ChatGPT からのコメントが示しているのは、ChatGPT は MCP に「答えそのもの」を求めているのではなく、自ら推論を行うための「材料」や「根拠」を求めているという点です。

SIEの返却構造が ChatGPT にとって扱いやすいと評価された理由は明確です。

  • 意味単位(concept)が明示されている

  • 説明単位(passage)が分離されている

  • 関係構造(graph)が明示されている

  • rank(score)によって重要度が示されている

この構造により ChatGPT は、「何を」「どの順で」「どのくらい強く」参照すべきかを、自身の推論プロセスの中で判断できます。

つまり、ChatGPT にとって MCP サーバーは 「回答を生成する装置」ではなく、「推論を支える根拠を供給する装置」として機能しているわけです。

この観点から見ると、SIE が提供する知識グラフ(概念間の意味関係)と、ベクトル化されたテキスト情報(意味的近接性)を組み合わせた知識提供方式は、まさに ChatGPT の推論モデルと目的を同一線上に置いた機能であると言えるでしょう。

まとめ

ChatGPT のような生成AIと協業してソフトウェア開発を進める場合、ドメイン知識をどのような手段で生成AIに理解してもらうのかという点は重要なテーマです。

ちょっとしたシステム規模であっても、ドメイン知識は想像以上に大きなものになります。 この知識をチャットのセッション開始時などに、すべてプロンプト (Prompt)として与えるのは現実的ではありません。

この問題に対しては、本稿で示したように、ドメイン知識を構造化された知識基盤として整備し、必要に応じて問い合わせを行う方式が有効です。

SIE は単なる検索エンジンではなく、生成AIが自律的に推論を行うための知識環境を提供する基盤として位置づけられます。

参照

用語集

Semantic Integration Engine (SIE)

BoK(Body of Knowledge)から生成された構造化知識(RDF)および文書知識(SmartDox)を統合し、AIが直接利用できる形に変換・検索するための統合エンジン。

DSL (Domain Specific Language)

DSL(ドメイン固有言語)は、特定の領域(ドメイン)に特化して設計された言語であり、その分野の概念や構造を直接的かつ簡潔に表現することを目的とします。 一般的な汎用プログラミング言語(GPL)に比べ、DSLは特定ドメインの問題解決や自動生成に適した高い抽象度を持ちます。

SimpleObject

SimpleObjectはSimpleModelingリファレンス・プロファイルで定義している、ドメイン・オブジェクトの共通属性を定義した抽象オブジェクトです。 NameAttributesやLifecycleAttributesなどの汎用的な属性群をバリュー・オブジェクトとして委譲し、エンティティ・オブジェクトやバリュー・オブジェクトの基底クラスとして再利用可能な構造になっています。 SimpleEntityはこのSimpleObjectを継承し、永続化に必要な識別子(id)などを追加定義することでエンティティ・オブジェクトの基盤を形成しています。

BoK (Body of Knowledge)

SimpleModelingでは文脈共有の核となる知識体系をBoK (Body of Knowledge)と呼んでいます。 BoKの構築は、知識の共有、教育、AIによる支援、自動化、意思決定支援を可能にするための基盤です。

知識グラフ (knowledge graph)

現実の概念・事物・出来事をノードとし、その関係をエッジとして表す意味的グラフ構造の知識ベース。

RDF

W3C により標準化された、情報を「主語–述語–目的語」の三つ組(トリプル)で表現するための知識記述モデル。

プロンプト (Prompt)

RAGによって取得された知識を、AIモデルの推論プロセスに橋渡しするための構造化指示または文脈表現。 BoKに格納された構造化知識を、モデルが理解し行動・内化できる物語的/命令的形式に変換する。