@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/2026/04/08/001-chatbot-best-practices/#article>
    schema:about <https://comcomponent.com/knowledge/chatbot-design/>, <https://comcomponent.com/knowledge/rag/> ;
    schema:mentions <https://comcomponent.com/knowledge/grounding/>, <https://comcomponent.com/knowledge/chunking/>, <https://comcomponent.com/knowledge/guardrails/>, <https://comcomponent.com/knowledge/prompt-injection/>, <https://comcomponent.com/knowledge/pii/>, <https://comcomponent.com/knowledge/evals/>, <https://comcomponent.com/knowledge/hallucination/>, <https://comcomponent.com/knowledge/handoff-rules/>, <https://comcomponent.com/knowledge/structured-outputs/>, <https://comcomponent.com/knowledge/escalation-rate/>, <https://comcomponent.com/knowledge/multi-agent/>, <https://comcomponent.com/knowledge/single-agent/>, <https://comcomponent.com/knowledge/model-snapshot-pinning/>, <https://comcomponent.com/knowledge/least-privilege/>, <https://comcomponent.com/knowledge/knowledge-source-governance/>, <https://comcomponent.com/knowledge/chatbot-scope-definition/> .

<https://comcomponent.com/knowledge/chatbot-design/> a skos:Concept ;
    skos:prefLabel "チャットボット設計"@ja ;
    skos:definition "モデル選定より前に、役割・知識ソース・権限・引き継ぎ条件・評価方法を含めて行うチャットボット開発の実務。"@ja ;
    skos:altLabel "Chatbot Design" ;
    skos:altLabel "対話エージェント設計"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/escalation-rate/> .

<https://comcomponent.com/knowledge/rag/> a skos:Concept ;
    skos:prefLabel "RAG(Retrieval-Augmented Generation)"@ja ;
    skos:definition "質問に関係しそうな文書やページをまず検索し、その本文をモデルに渡して答えさせる方式。モデルが覚えていることだけに頼らせないための仕組み。"@ja ;
    skos:altLabel "Retrieval-Augmented Generation" ;
    ks:implements <https://comcomponent.com/knowledge/grounding/> .

<https://comcomponent.com/knowledge/grounding/> a skos:Concept ;
    skos:prefLabel "グラウンディング(grounding)"@ja ;
    skos:definition "回答を、モデルの内部知識ではなく指定した資料に基づかせること。"@ja ;
    skos:altLabel "Grounding" ;
    ks:mitigates <https://comcomponent.com/knowledge/hallucination/> .

<https://comcomponent.com/knowledge/chunking/> a skos:Concept ;
    skos:prefLabel "チャンク分割(chunking)"@ja ;
    skos:definition "長い文書を、検索で拾いやすい大きさの意味の塊(1つの制度説明、1つの手順、1つのFAQなど)に切り分けること。"@ja ;
    skos:altLabel "Chunking" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/rag/> .

<https://comcomponent.com/knowledge/hallucination/> a skos:Concept ;
    skos:prefLabel "hallucination"@ja ;
    skos:definition "事実でないことを、もっともらしい文章で答えてしまうこと。"@ja ;
    skos:altLabel "ハルシネーション"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/evals/> .

<https://comcomponent.com/knowledge/chatbot-scope-definition/> a skos:Concept ;
    skos:prefLabel "用途を1つに絞る設計"@ja ;
    skos:definition "誰の、どの仕事を、どこまで減らすのかというチャットボットの用途を、着手前に1つへ絞り込むこと。"@ja ;
    skos:altLabel "スコープ定義"@ja ;
    skos:altLabel "Scope Definition" ;
    ks:shouldPrecede <https://comcomponent.com/knowledge/knowledge-source-governance/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/chatbot-design/> .

<https://comcomponent.com/knowledge/knowledge-source-governance/> a skos:Concept ;
    skos:prefLabel "正本と更新責任者の管理"@ja ;
    skos:definition "どの文書やページを正本にするか、誰が更新責任者か、どの頻度で更新し、いつ古い情報を捨てるかを決めて運用すること。"@ja ;
    skos:altLabel "ナレッジガバナンス"@ja ;
    skos:altLabel "Knowledge Source Governance" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/chatbot-design/> .

<https://comcomponent.com/knowledge/single-agent/> a skos:Concept ;
    skos:prefLabel "single-agent構成"@ja ;
    skos:definition "1つのボット(agent)で完結させる構成。"@ja ;
    skos:altLabel "シングルエージェント"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/chatbot-design/> .

<https://comcomponent.com/knowledge/multi-agent/> a skos:Concept ;
    skos:prefLabel "multi-agent構成"@ja ;
    skos:definition "役割の違うボット(agent)を複数組み合わせる構成。"@ja ;
    skos:altLabel "マルチエージェント"@ja .

<https://comcomponent.com/knowledge/handoff-rules/> a skos:Concept ;
    skos:prefLabel "handoff rules(引き継ぎ規則)"@ja ;
    skos:definition "どの条件で、ボットから人(または別の担当ボット)へ引き継ぐかをあらかじめ決めておく規則。"@ja ;
    skos:altLabel "Handoff Rules" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/chatbot-design/> .

<https://comcomponent.com/knowledge/escalation-rate/> a skos:Concept ;
    skos:prefLabel "escalation rate"@ja ;
    skos:definition "全体のうち、人へ引き継いだ割合を示す指標。"@ja ;
    skos:altLabel "エスカレーション率"@ja .

<https://comcomponent.com/knowledge/evals/> a skos:Concept ;
    skos:prefLabel "evals(evaluations)"@ja ;
    skos:definition "決めておいた入力の一式を流して、回答の良し悪しを毎回同じ基準で測る仕組み。"@ja ;
    skos:altLabel "評価セット"@ja ;
    skos:altLabel "Evaluations" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/chatbot-design/> .

<https://comcomponent.com/knowledge/guardrails/> a skos:Concept ;
    skos:prefLabel "ガードレール(guardrails)"@ja ;
    skos:definition "チャットボットが答えてよい範囲、実行してよい操作をあらかじめ制限しておく仕組み。"@ja ;
    skos:altLabel "Guardrails" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/chatbot-design/> ;
    ks:mitigates <https://comcomponent.com/knowledge/prompt-injection/> .

<https://comcomponent.com/knowledge/prompt-injection/> a skos:Concept ;
    skos:prefLabel "prompt injection"@ja ;
    skos:definition "利用者の入力や、読み込ませた外部の文書・Webページに指示文を仕込んで、ボット本来の指示を上書きする攻撃。"@ja ;
    skos:altLabel "プロンプトインジェクション"@ja .

<https://comcomponent.com/knowledge/least-privilege/> a skos:Concept ;
    skos:prefLabel "権限の最小化(least privilege)"@ja ;
    skos:definition "読める資料や実行できる操作を必要最小限に絞り込む設計原則。"@ja ;
    skos:altLabel "Least Privilege" ;
    ks:mitigates <https://comcomponent.com/knowledge/prompt-injection/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/pii/> .

<https://comcomponent.com/knowledge/structured-outputs/> a skos:Concept ;
    skos:prefLabel "Structured Outputs"@ja ;
    skos:definition "回答を自由な文章ではなく、決められた形のJSONで返させる機能。後段のシステムへ値を渡すときに使う。"@ja ;
    skos:altLabel "構造化された出力"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/chatbot-design/> .

<https://comcomponent.com/knowledge/pii/> a skos:Concept ;
    skos:prefLabel "PII(Personally Identifiable Information)"@ja ;
    skos:definition "氏名、メールアドレス、電話番号、顧客IDなど、個人を特定できる情報。"@ja ;
    skos:altLabel "個人を特定できる情報"@ja .

<https://comcomponent.com/knowledge/model-snapshot-pinning/> a skos:Concept ;
    skos:prefLabel "model snapshotの固定"@ja ;
    skos:definition "本番運用で使うモデルのバージョン(snapshot)を固定し、評価してから切り替える運用。"@ja ;
    skos:altLabel "Model Version Pinning" ;
    ks:recommendedFor <https://comcomponent.com/knowledge/chatbot-design/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/rag/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/grounding/> ;
    schema:description "RAGは検索で見つけた資料の本文をモデルに渡して答えさせることで、回答を指定資料に基づかせるグラウンディングを実現する手段の1つである"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/chunking/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/rag/> ;
    schema:description "PDFやページをそのまま入れるのではなく、意味の塊で切り分けるチャンク分割を前提にすることが、RAGの回答を安定させるための本記事の推奨である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/grounding/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/hallucination/> ;
    schema:description "回答をモデルの内部知識ではなく指定した資料に基づかせるグラウンディングは、もっともらしい誤答であるhallucinationを減らすが、無くすわけではない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/generative-ai-public-websites> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/chatbot-scope-definition/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/knowledge-source-governance/> ;
    schema:description "誰の、どの仕事を、どこまで減らすのかという用途を1つに絞ってから、何を正本にするかを決める順序が推奨される"@ja ;
    ks:evidence <https://docs.cloud.google.com/dialogflow/cx/docs/concept/agent-design> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/chatbot-scope-definition/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/chatbot-design/> ;
    schema:description "モデル選定より先に、誰の・どの仕事を・どこまで減らすのかという用途を1つに絞ることが本記事の推奨である"@ja ;
    ks:evidence <https://docs.cloud.google.com/dialogflow/cx/docs/concept/agent-design> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/knowledge-source-governance/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/chatbot-design/> ;
    schema:description "どの文書を正本にするか、誰が更新責任者かを先に決めておくことが本記事の推奨である。ここが無いとボットは古い情報と新しい情報を同時に拾う"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/single-agent/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/chatbot-design/> ;
    schema:description "明確な分離理由がない限り、まずsingle-agentで検証する流れが推奨される。実装が単純で運用負荷が下がり、予測しやすい実行モデルになる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ai-agents/single-agent-multiple-agents> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/multi-agent/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/chatbot-design/> ;
    schema:description "明確な分離理由がないまま最初からmulti-agent構成にすることは、latency・状態管理・監視・権限管理を重くするためよくある失敗として挙げられている"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ai-agents/single-agent-multiple-agents> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/handoff-rules/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/chatbot-design/> ;
    schema:description "どの条件で、どこへ、何を添えて人へ渡すかまで最初から決めておくことが本記事の推奨である"@ja ;
    ks:evidence <https://docs.cloud.google.com/customer-engagement-ai/conversational-agents/ps/handoff> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/chatbot-design/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/escalation-rate/> ;
    schema:description "チャットボットの運用が適切かは、人へ引き継いだ割合を示すescalation rateなどの指標で確認できる"@ja ;
    ks:evidence <https://docs.cloud.google.com/customer-engagement-ai/conversational-agents/ps/evaluation> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/evals/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/chatbot-design/> ;
    schema:description "promptを触るたびに良くなったか悪くなったか判断できるよう、まず評価セット(evals)を作ることが本記事の推奨である"@ja ;
    ks:evidence <https://developers.openai.com/api/docs/guides/model-optimization> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/hallucination/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/evals/> ;
    schema:description "hallucination率は、決めておいた入力を毎回同じ基準で測るevalsで継続的に確認できる"@ja ;
    ks:evidence <https://docs.cloud.google.com/customer-engagement-ai/conversational-agents/ps/evaluation> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/guardrails/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/chatbot-design/> ;
    schema:description "答えてよい範囲・実行してよい操作をあらかじめ制限するガードレールを設計に含めることが本記事の推奨である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/ai/playbook/technology-guidance/generative-ai/mlops-in-openai/security/security-plan-llm-application> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/guardrails/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/prompt-injection/> ;
    schema:description "外部コンテンツをsystem instructionと同列に扱わず、ツール実行権限を最小化するガードレールは、prompt injectionが与える影響を軽減する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/content-filter-prompt-shields> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/least-privilege/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/prompt-injection/> ;
    schema:description "読める資料や実行できる操作を最小化しておくことで、prompt injectionが成功した場合の被害範囲を軽減できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/ai/playbook/technology-guidance/generative-ai/mlops-in-openai/security/security-plan-llm-application> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/structured-outputs/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/chatbot-design/> ;
    schema:description "注文状況や問い合わせ分類のように後段の処理へつなぐ場面では、自由文だけでなくStructured OutputsによるJSON返却を使うことが本記事の推奨である"@ja ;
    ks:evidence <https://developers.openai.com/api/docs/guides/prompt-engineering> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/least-privilege/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/pii/> ;
    schema:description "PIIや顧客固有データを扱うなら、認証はアプリ側で行い取得できる情報を絞るなど、権限を最小化した設計が本記事の推奨である。ユーザーが入力した個人情報が自動でscrub/maskされるわけではない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/generative-ai-public-websites> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/model-snapshot-pinning/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/chatbot-design/> ;
    schema:description "本番系では、昨日と今日で答え方が変わってしまう事故を避けるため、model snapshotを固定することが本記事の推奨である"@ja ;
    ks:evidence <https://developers.openai.com/api/docs/guides/prompt-engineering> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/model-snapshot-pinning/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/evals/> ;
    schema:description "固定したmodel snapshotを安全に変更するには、promptのbehaviorをevalsで測ってから切り替えるという運用が前提になる(固定したまま変更しないだけならevalsは必須ではない)"@ja ;
    ks:evidence <https://developers.openai.com/api/docs/guides/model-optimization> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
