@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/06/10/002-roslyn-dotnet-compiler-platform/#article>
    schema:about <https://comcomponent.com/knowledge/roslyn/>, <https://comcomponent.com/knowledge/syntax-tree/>, <https://comcomponent.com/knowledge/semantic-model/> ;
    schema:mentions <https://comcomponent.com/knowledge/roslyn-compilation/>, <https://comcomponent.com/knowledge/roslyn-workspace/>, <https://comcomponent.com/knowledge/roslyn-symbol/>, <https://comcomponent.com/knowledge/roslyn-analyzer/>, <https://comcomponent.com/knowledge/roslyn-code-fix/>, <https://comcomponent.com/knowledge/roslyn-source-generator/>, <https://comcomponent.com/knowledge/msbuild-workspace/>, <https://comcomponent.com/knowledge/editorconfig/>, <https://comcomponent.com/knowledge/net-sdk-analyzer/>, <https://comcomponent.com/knowledge/incremental-generator/>, <https://comcomponent.com/knowledge/dotnet/>, <https://comcomponent.com/knowledge/dotnet-framework/> .

<https://comcomponent.com/knowledge/roslyn/> a skos:Concept ;
    skos:prefLabel "Roslyn(.NET Compiler Platform)"@ja ;
    skos:definition "C#とVisual Basicのコンパイラ実装であると同時に、コード解析ツールを作るためのAPI群でもある基盤。"@ja ;
    skos:altLabel ".NET Compiler Platform" ;
    skos:altLabel "Roslynコンパイラ"@ja ;
    ks:uses <https://comcomponent.com/knowledge/syntax-tree/> ;
    ks:uses <https://comcomponent.com/knowledge/semantic-model/> ;
    ks:uses <https://comcomponent.com/knowledge/roslyn-workspace/> .

<https://comcomponent.com/knowledge/syntax-tree/> a skos:Concept ;
    skos:prefLabel "Syntax Tree"@ja ;
    skos:definition "ソースコードの構文構造を、クラス・メソッド・式・ステートメントなどのC#の構文要素として表すRoslynの木構造。"@ja ;
    skos:altLabel "構文木"@ja .

<https://comcomponent.com/knowledge/semantic-model/> a skos:Concept ;
    skos:prefLabel "SemanticModel"@ja ;
    skos:definition "構文木の各ノードが実際にどのシンボル(型・メソッドなど)に解決されたかなど、コードの意味をコンパイラの名前解決結果として取得できるRoslynのAPI。"@ja ;
    ks:requires <https://comcomponent.com/knowledge/roslyn-compilation/> ;
    ks:requires <https://comcomponent.com/knowledge/syntax-tree/> ;
    ks:uses <https://comcomponent.com/knowledge/roslyn-symbol/> .

<https://comcomponent.com/knowledge/roslyn-workspace/> a skos:Concept ;
    skos:prefLabel "Workspace(Roslyn)"@ja ;
    skos:definition "Solution・Project・Documentという単位で、単一ファイルではなくソリューションやプロジェクト全体のコードを扱うためのRoslynのAPI。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/roslyn-compilation/> .

<https://comcomponent.com/knowledge/roslyn-compilation/> a skos:Concept ;
    skos:prefLabel "Compilation(Roslyn)"@ja ;
    skos:definition "SyntaxTreeの集合・参照アセンブリ・コンパイルオプション・言語バージョンなど、型解決や参照解決に必要な情報をまとめたRoslynの型。"@ja ;
    skos:altLabel "CSharpCompilation" .

<https://comcomponent.com/knowledge/roslyn-symbol/> a skos:Concept ;
    skos:prefLabel "Symbol(Roslyn)"@ja ;
    skos:definition "型・メソッド・プロパティ・フィールド・引数・ローカル変数などを、ソースコード上の見た目ではなくコンパイラが解決した意味として表すRoslynのインターフェイス群。"@ja ;
    skos:altLabel "INamedTypeSymbol" ;
    skos:altLabel "IMethodSymbol" .

<https://comcomponent.com/knowledge/msbuild-workspace/> a skos:Concept ;
    skos:prefLabel "MSBuildWorkspace"@ja ;
    skos:definition "MSBuildを使ってソリューション・プロジェクトファイルを読み込む、RoslynのWorkspaceの実装。"@ja ;
    ks:implements <https://comcomponent.com/knowledge/roslyn-workspace/> .

<https://comcomponent.com/knowledge/roslyn-analyzer/> a skos:Concept ;
    skos:prefLabel "Analyzer(Roslyn)"@ja ;
    skos:definition "特定の構文やシンボルを検出し、Diagnostic(警告・エラー)としてコンパイラやIDEに報告する仕組み。"@ja ;
    skos:altLabel "DiagnosticAnalyzer" ;
    ks:uses <https://comcomponent.com/knowledge/syntax-tree/> ;
    ks:uses <https://comcomponent.com/knowledge/semantic-model/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/editorconfig/> .

<https://comcomponent.com/knowledge/editorconfig/> a skos:Concept ;
    skos:prefLabel ".editorconfig"@ja ;
    skos:definition "Analyzerの診断IDごとの重大度やコードスタイル規則を、プロジェクト単位で調整するための設定ファイル。"@ja .

<https://comcomponent.com/knowledge/roslyn-code-fix/> a skos:Concept ;
    skos:prefLabel "Code Fix(Roslyn)"@ja ;
    skos:definition "Analyzerが検出した問題に対して、安全に適用できる修正案を提示する仕組み。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/syntax-tree/> .

<https://comcomponent.com/knowledge/roslyn-source-generator/> a skos:Concept ;
    skos:prefLabel "Source Generator(Roslyn)"@ja ;
    skos:definition "コンパイル時に実行され、生成したC#コードを同じコンパイルに追加する仕組み。既存コードの書き換えではなく追加コードの生成を行う。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/roslyn-compilation/> .

<https://comcomponent.com/knowledge/incremental-generator/> a skos:Concept ;
    skos:prefLabel "IIncrementalGenerator"@ja ;
    skos:definition "変更差分を効率よく扱えるよう設計された、Source Generatorの実装インターフェイス。"@ja ;
    skos:altLabel "Incremental Generator" ;
    ks:implements <https://comcomponent.com/knowledge/roslyn-source-generator/> .

<https://comcomponent.com/knowledge/net-sdk-analyzer/> a skos:Concept ;
    skos:prefLabel ".NET SDK同梱Analyzer"@ja ;
    skos:definition ".NET 5以降のプロジェクトで既定で有効になる、.NET SDKに同梱されたコード分析機能。コード品質・信頼性・性能・セキュリティ(CAxxxx)とコードスタイル(IDExxxx)の診断を含む。"@ja ;
    skos:altLabel "CAxxxx" ;
    skos:altLabel "IDExxxx" ;
    ks:uses <https://comcomponent.com/knowledge/roslyn-analyzer/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/editorconfig/> .

<https://comcomponent.com/knowledge/dotnet-framework/> a skos:Concept ;
    skos:prefLabel ".NET Framework"@ja ;
    skos:definition "Windowsのコンポーネントとして扱われ、インストールされているOSのライフサイクルに沿ってサポートされるランタイム。System.Messagingの対象範囲。"@ja .

<https://comcomponent.com/knowledge/dotnet/> a skos:Concept ;
    skos:prefLabel ".NET(Core以降)"@ja ;
    skos:definition ".NET Frameworkの後継となる、クロスプラットフォーム対応の.NETランタイム(.NET 5以降)。"@ja ;
    skos:altLabel ".NET Core" ;
    skos:altLabel "モダンな.NET"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/roslyn/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/syntax-tree/> ;
    schema:description "Roslynはソースコードの構文構造を、クラス・メソッド・式などのC#の構文要素として整理されたSyntax Treeとして表す"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/work-with-syntax> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/roslyn/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/semantic-model/> ;
    schema:description "Roslynはコードの意味(このコードが何を指しているか)を、SemanticModelというAPIとして構文とは別に提供する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/work-with-semantics> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/roslyn/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/roslyn-workspace/> ;
    schema:description "Roslynは単一ファイルではなくソリューションやプロジェクト全体を扱うためにWorkspaceを提供する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/work-with-workspace> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/semantic-model/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/roslyn-compilation/> ;
    schema:description "SemanticModelを取得するには、SyntaxTreeと参照アセンブリから構成されたCompilationが必要になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/work-with-semantics> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/semantic-model/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/syntax-tree/> ;
    schema:description "SemanticModelはCompilation.GetSemanticModel(tree)のようにSyntaxTreeを指定して取り出すもので、意味を問い合わせる対象のSyntaxTreeを前提とする"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/work-with-semantics> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/semantic-model/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/roslyn-symbol/> ;
    schema:description "SemanticModelは、構文ノードが実際にどのSymbol(型・メソッドなど)に解決されたかを取得する手段を提供する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/work-with-semantics> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/msbuild-workspace/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/roslyn-workspace/> ;
    schema:description "MSBuildWorkspaceは、MSBuildプロジェクトファイルからソリューションを読み込むという形でWorkspaceのAPIの実装を担う"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/work-with-workspace> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/roslyn-analyzer/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/syntax-tree/> ;
    schema:description "Analyzerはまず構文(SyntaxKind)で候補ノードを絞り込んでから、その先の判定に進む設計が推奨される"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/visualstudio/code-quality/roslyn-analyzers-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/roslyn-analyzer/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/semantic-model/> ;
    schema:description "Analyzerは、構文で絞った候補が本当に対象のAPIかをSemanticModelでの名前解決によって確定させる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/visualstudio/code-quality/roslyn-analyzers-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/roslyn-analyzer/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/editorconfig/> ;
    schema:description "Analyzerが報告する診断の重大度は、dotnet_diagnostic.<ID>.severityのように.editorconfigで調整できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/roslyn-code-fix/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/roslyn-analyzer/> ;
    schema:description "Analyzerが検出した問題に対する修正案を提示する場合、Code FixはそのAnalyzerの診断IDを前提とする。CodeFixProviderは修正対象の診断IDを登録する仕組みなので、コンパイラ自身が出す診断に対するCode Fixも書ける。"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/tutorials/how-to-write-csharp-analyzer-code-fix> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/roslyn-source-generator/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/roslyn-compilation/> ;
    schema:description "Source Generatorはユーザーのソースコードを読み、生成したコードを同じCompilationに追加する"@ja ;
    ks:evidence <https://devblogs.microsoft.com/dotnet/introducing-c-source-generators/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/incremental-generator/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/roslyn-source-generator/> ;
    schema:description "IIncrementalGeneratorは、変更差分を効率よく扱える形でSource Generatorの実装を担うインターフェイスである"@ja ;
    ks:evidence <https://github.com/dotnet/roslyn/blob/main/docs/features/incremental-generators.cookbook.md> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/net-sdk-analyzer/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/roslyn-analyzer/> ;
    schema:description ".NET SDK同梱の.NETコード分析は、CAxxxx/IDExxxxの診断としてAnalyzerの仕組みの上に実装されている"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/net-sdk-analyzer/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/editorconfig/> ;
    schema:description ".NET SDK同梱Analyzerの重大度も、他のAnalyzer同様に.editorconfigで調整できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/roslyn-workspace/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/roslyn-compilation/> ;
    schema:description "Workspace上の各Projectは、型解決や参照解決に使うCompilationを取得できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/work-with-workspace> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/roslyn-source-generator/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-framework/> ;
    schema:description ".NET Frameworkの既存資産に対しては、最初からSource Generatorを組み込むよりRoslynベースの調査ツールやAnalyzerから始める方が安全とされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/roslyn-code-fix/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/syntax-tree/> ;
    schema:description "Code Fixは不変なSyntax Treeに対し、WithIdentifierのような呼び出しで新しいノードを作る形で修正を適用する"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/tutorials/how-to-write-csharp-analyzer-code-fix> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/net-sdk-analyzer/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/dotnet/> ;
    schema:description ".NET SDK同梱のコード分析は、.NET 5以降のプロジェクトで既定で有効になる。.NET Framework等の他のターゲットでは既定で有効ではなく、EnableNETAnalyzersを明示的にtrueにすれば利用できる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
