SHACL 1.2 プロファイリング

W3C 最初の公開作業草案

この文書の詳細
このバージョン:
https://www.w3.org/TR/2026/WD-shacl12-profiling-20260702/
最新公開バージョン:
https://www.w3.org/TR/shacl12-profiling/
最新編集者草案:
https://w3c.github.io/data-shapes/shacl12-profiling/
履歴:
https://www.w3.org/standards/history/shacl12-profiling/
コミット履歴
編集者:
(KurrawongAI)
(米国国立標準技術研究所)
(Inria)
(JPMorgan Chase & Co.)
(Corning)
フィードバック:
GitHub w3c/data-shapes (プルリクエスト, 新しい課題, 未解決の課題)

概要

この文書はSHACLプロファイリングを定義する。

SHACL、すなわちShapes Constraint Languageは、RDFグラフの構造を記述するための言語である。 SHACLは、検証、推論、ドメインのモデリング、他のエージェントに知らせるための オントロジーの生成、ユーザーインターフェイスの構築、コード生成、データ統合など、 さまざまな目的に使用できる。

SHACLプロファイリングは、SHACLのプロファイル、およびSHACLによるプロファイリングを可能にするために 作成されたSHACL Shapes Constraint Languageの要素を定義する。この文書の範囲は、SHACL Shapesを 含むグラフを含め、RDFグラフのプロファイリングに限定される。

この仕様は、 Data Shapesワーキンググループによって公開されている。

この文書のステータス

このセクションは、公開時点における この文書のステータスを説明する。現在のW3C 公開物およびこの技術報告の最新版の一覧は、 W3C標準および草案 インデックスにある。

この文書は、Data Shapesワーキンググループにより、 勧告 トラックを用いる 最初の公開作業草案として公開された。

最初の公開作業草案としての公開は、 W3Cおよびそのメンバーによる承認を意味しない。

これは草案文書であり、いつでも他の文書によって更新、置換、または廃止される可能性がある。 この文書を進行中の作業以外のものとして引用することは不適切である。

この文書は、 W3C 特許 ポリシーの下で運営されるグループによって作成された。 W3Cは、 当該グループの成果物に関連して行われた あらゆる特許開示の公開一覧 を維持している。このページには、 特許を開示するための手順も含まれている。個人が、 必須クレーム を含むとその個人が信じる特許について実際の知識を有する場合、 W3C特許ポリシー第6節に従って その情報を開示しなければならない。

この文書は、 2025年8月18日版W3Cプロセス文書に準拠する。

SHACL仕様

この仕様は、SHACL 1.2仕様ファミリーの一部である。それらのより詳しい 導入については、SHACL 1.2概要を参照されたい。

仕様は次のとおりである:

作業草案:

SHACL 1.2 Core
SHACLのCoreを定義する
SHACL 1.2 SPARQL Extensions
SHACLのSPARQL関連の拡張を定義する
SHACL 1.2 Node Expressions
SHACLにおいてフォーカスノードを決定するために用いられるグラフ式を定義する
SHACL 1.2 Rules
SHACLのルールベース推論の方法を定義する
SHACL 1.2 UI
ユーザーインターフェイス生成のためのSHACLの利用を定義する
SHACL 1.2 Profiling
SHACLデータを含むデータのプロファイリングにSHACLを使用することを定義する

ワーキンググループ・ノート草案:

SHACL 1.2 Overview
SHACL仕様群を概説する
SHACL 1.2 Compact Syntax
SHACL概念を表現するためのRDF構文を定義する
注記

実装者は、上記仕様への適合レベルを、 SHACL 1.2テストスイート のテストケースに合格することで、部分的に確認できる。 ただし、テストスイートのすべてのテストに合格しても、仕様への完全な適合を意味するものではない。 それは、その実装がテストスイートでテストされた側面に適合していることを意味するにすぎない。

文書の概要

はじめには、プロファイリングの背景概念を示し、この仕様の範囲を述べる。また、 用語定義を提供し、文書の表記規約を説明する。

第2節では、管理のためのSHACLのパッケージ化を扱う。

第3節および第4節では、パッケージ化を基礎として、SHACLによるプロファイリングの2つの主な方式を扱う。

1. はじめに

1.1 プロファイリングとは何か?

プロファイリングとは、何かの「プロファイル」を作成する行為である。

一般に、英語における何かの「profile」は次のようなものである:

物理的な物体または特徴の輪郭、あるいはその表現

- オックスフォード英語辞典、17世紀以来の語「profile」の用法

データの世界においては、上記と整合する「profile」の派生的な定義は次のとおりである:

要約または抽出

この定義では、英語の語の本質が保持されている。なぜなら、データオブジェクトの、または データオブジェクトからの要約や抽出は、それの輪郭である可能性があるからである。例えば、 3D空間オブジェクトの2D表現や、多数の部分を持つデータセットの統計的 要約などである。

警告: はじめにのこの時点までのプロファイリングの背景は、 The Profiles Vocabularyの更新版へ上流化される可能性がある。

定義上、SHACLはRDFデータを制約する。したがって、 shapes graph に従って妥当なあらゆるデータは、 data graphのプロファイルとなる。ある shapes graphdata graphのすべての要素を検証する場合、結果として得られる妥当なデータは、 data graphの「null」プロファイルとなる。これは、それが元のデータ グラフと同一であることを意味する。

The Profiles Vocabularyは、 仕様の文脈における profileを次のように定義する:

他の仕様の使用について制約、拡張、結合、またはガイダンスや説明を提供する仕様

shapes graphを 「仕様」とみなす場合、 shapes graphに従って妥当なデータが、 検証された data graphのプロファイルであるだけでなく、 shapes graph自体も、 data graphで用いられるデータモデルのプロファイルとして機能する。

この文書では、最適なプロファイリングのためにSHACL情報をどのようにパッケージ化するかを説明し、 これを各SHACL仕様のために作成されたSHACL shapesの パッケージ化によって例示する。

1.2 範囲

上記セクションの概念を踏まえ、この仕様は次の事項を定義する:

  1. SHACLのパッケージ化
  2. SHACLのプロファイル
  3. SHACLによるプロファイリング

1.3 用語

この仕様全体で用いられる用語は、ここで定義されるか、いくつかの 出典のいずれかから採用される。それらの他の出典は次のとおりである:

The Profiles Vocabulary
一般的なプロファイリング用語およびプロファイリング・オントロジー用語
SHACL 1.2 Core
SHACLの技術用語
RDF 1.2 Concepts and Abstract Data Model
RDF用語

他の出典から採用された用語は、本文中でその定義にリンクされている。

ここで定義される用語は次のとおりである:

null profile

仕様のルールの一部、おそらくはすべてを実装するが、追加のルールを一切実装しない 仕様のプロファイル。

null profileの目的は、プロファイル対象の仕様が実行可能な検証器などの プロファイリング成果物を提供していない場合に、それを提供することである。

SHACL Element

SHACL仕様のいずれかによって定義されるRDF/OWLクラスまたはプロパティ。

警告: null profileの定義は、The Profiles Vocabularyの更新版へ上流化される可能性がある。Issue dx-prof/56を参照されたい。

この仕様で用いられる定義済み用語はすべて、索引に一覧されている。

1.4 文書の表記規約

この仕様では、次の名前空間接頭辞定義を用いる:

接頭辞 名前空間
dcterms: http://purl.org/dc/terms/
ex: http://example.com/ns#
owl: http://www.w3.org/2002/07/owl#
prof: http://www.w3.org/ns/dx/prof/
rdfs: http://www.w3.org/2000/01/rdf-schema#
role: http://www.w3.org/ns/dx/prof/role/
sh: http://www.w3.org/ns/shacl#
shpr: http://www.w3.org/ns/shpr#

この仕様では、次のJSON-LDコンテキストを用いる:

{
  "@context": {
    "dcterms": "http://purl.org/dc/terms/",
    "ex": "http://example.com/ns#",
    "owl": "http://www.w3.org/2002/07/owl#",
    "prof": "http://www.w3.org/ns/dx/prof/" ,
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
    "role": "http://www.w3.org/ns/dx/prof/role/" ,
    "sh": "http://www.w3.org/ns/shacl#",
    "shpr": "http://www.w3.org/ns/shpr#"
  }
}

SHACL語彙自体を定義するグラフのURIは、上記の名前空間と同等であり、 すなわち#を含むことに注意。 例えばowl:importsを介したSHACL語彙への参照には、 #を含めるべきである。

仕様全体を通じて、TurtleおよびJSON-LDのRDFグラフを含む色分けされたボックスが現れる。 ボックスの色とタイトルは、それが shapes graphdata graph、またはそれ以外のもののいずれであるかを示す。 Turtle仕様断片では、上で与えた接頭辞バインディングを用いる。 ハイライトされる部分を持つのはTurtle仕様だけである。

# This box presents RDF data in the Turtle syntax <s> <p> <o> .

図内の規約は、このキーによって説明される:

図のキー
1 図のキー

1.5 適合性

非規範として示されたセクションに加え、この仕様におけるすべての作成ガイドライン、図、例、注記は 非規範である。この仕様におけるそれ以外のすべては規範的である。

この文書におけるキーワードMAYMUSTMUST NOTRECOMMENDEDSHOULD、およびSHOULD NOTは、 ここに示すようにすべて大文字で現れる場合に限り、 BCP 14 [RFC2119] [RFC8174] に記述されるとおりに解釈される。

この文書は、プロファイリングを目的として、SHACL Core仕様[shacl12-core]のデータモデルへの 拡張を定義する。

非規範として示されたセクションに加え、この仕様におけるすべての作成ガイドライン、図、例、注記は 非規範である。この仕様におけるそれ以外のすべては規範的である。

ここで規定される構文規則は英語で与えられ、キーワードMAYMUSTMUST NOTRECOMMENDEDSHOULD、およびSHOULD NOTを用いる。これらは、 ここに示すようにすべて大文字で現れる場合に限り、BCP 14 [RFC2119] [RFC8174]に 記述されるとおりに解釈される。

この仕様の規則に対するデータの適合性主張は、 SHACL Overview仕様[shacl12-overview]SHACL-SHACL Annexにある SHACL-SHACL Profiling validatorを用いた検証によってテストできる。

2. SHACLのパッケージ化

SHACLのパッケージ化とは、コンテナー・オブジェクトとの関係において SHACL要素を提示することである。

2.1 動機

SHACL要素のグループを 識別し、グループと個々のSHACL要素との関係を知りたい理由は複数ある。 これらの理由には、グループの目的、あるグループの変更が別のグループにどのような影響を与えるか、 そして新しいグループをどのように作成するかを理解したいというものが含まれる。 このために3つのユースケースが明示されている:

  1. SHACL要素のグループを識別する
  2. あるグループが依存するすべてのSHACL要素を見つける
  3. あるグループが依存するすべてのSHACL要素のグループを見つける
Issue 624: SHACL要素のグループ化を識別する ProfilesUCR

示された目的のためにまとめられたSHACL要素を識別する。

Issue 622: グループ化が依存するすべてのSHACL要素を見つける ProfilesUCR

Profileが依存するすべてのShapeを見つける。

Issue 623: グループ化が依存するすべてのSHACL要素のグループ化を見つける ProfilesUCR

Profileが依存するすべてのProfileを見つける。

2.2 推奨事項の要約

上で示したユースケースへの解決策は、sh:ShapesGraphのインスタンスを用いて SHACL要素をグループ化するなど、 十分に確立された実践に基づく、次の推奨事項をもたらす:

  1. sh:ShapesGraphのインスタンスは、 SHACL要素のインスタンスをグループ化するために 用いるSHOULD
  2. SHACL要素のインスタンスは、それを定義する sh:ShapesGraphのインスタンスを rdfs:isDefinedBy述語で示すSHOULD
  3. SHACL要素を 使用するが、それを定義しないsh:ShapesGraphのインスタンスは、 rdfs:member述語を用いて、そのSHACL要素をメンバーとして示す SHOULD
  4. SHACL 要素をグループ化するために用いられるsh:ShapesGraphのインスタンスは、 sh:ShapesGraphのインスタンスを用いて識別される他のSHACL要素のグループへの依存を、 owl:imports述語で示すSHOULD

以下のサブセクションでは、これらの推奨事項をそれぞれ詳述する。

2.3 SHACL要素のグループの識別

sh:ShapesGraphのインスタンスは、 SHACL要素のインスタンスをグループ化するために 用いるSHOULD

SHACL要素は、他の多くのRDF定義データと同様に、 OWL 2 Web Ontology Language RDF-Based Semantics (Second Edition)owl:Ontologyクラスのインスタンス内でグループ化されることが多かった。

例えば、Open Geospatial Consortiumの空間RDFデータ向け GeoSPARQL 1.1標準は、 Turtleファイル内に27個のsh:NodeShapeインスタンスと、ほぼ同数の sh:PropertyShapeインスタンスを含む SHACL validator を提供している。このファイルには、更新日、利用ライセンスなど、検証リソースのメタデータを提示する owl:Ontologyのインスタンスも含まれている。

この推奨事項はその実践に取って代わるものであり、owl:Ontologyの特殊化されたサブクラスである sh:ShapesGraphを用いてSHACL要素をグループ化することを推奨する。 これは、曖昧なグループ化オブジェクトを避けるためである。

2.4 要素定義の表示

SHACL要素のインスタンスは、それを定義する sh:ShapesGraphのインスタンスを、rdfs:isDefinedBy 述語で示すSHOULD

sh:ShapesGraphインスタンスの使用によって識別されるグループに SHACL要素を配置する際の一般的な実践は、 RDFファイル内にそれらの要素とオントロジー・インスタンスを単に含めることであった。 これはデータ交換には妥当であるが、交換されたファイルがRDFデータベースに格納される場合、 sh:ShapesGraphインスタンスと、その中で定義される SHACL要素との関連が失われることがある。 named graphにロードされた場合、 その関連は、オントロジーとSHACL要素をグループ化するnamed graphによって保持される可能性があるが、 これは非意味論的な関連、すなわちグラフ内で直接見えるものではない関連である。

この推奨事項は、SHACL要素の作成者が、 そのSHACL要素が定義されるグループを示す SHOULDことを提案する。RDFにおけるそのようなアサーションの例は次のとおりである:

ex:ont-M a sh:ShapesGraph ; . ex:shape-1 a sh:NodeShape ; rdfs:isDefinedBy ex:ont-M ; .
注記

SHACL 1.2 Core2.5 Syntactic Variations of Shapes and Classesでは、 property shapesblank nodesとして宣言してもよいが、 グラフ間での再利用性が高まるため、 IRIsとして 宣言することが望ましい、という警告が出されている。 本セクションに従ってshapeに関する情報を含める場合、IRIを用いる SHOULD

2.5 要素使用の表示

SHACL要素を使用するが、 それを定義しないsh:ShapesGraphのインスタンスは、 rdfs:member述語を用いて、そのSHACL要素を メンバーとして示すSHOULD

SHACL要素が要素のグループ内で使用されるものの、 そのグループによって定義されていない場合、それはそのグループによって定義されているものとして 示すSHOULD NOTであるため、上記セクションの推奨事項は関係しない。 それらを定義しないグループ内でのSHACL要素の再利用は、Linked Dataの原則 [LDP]に従って 期待され、奨励される。

それを定義しないグループにSHACL要素が含まれることを示すための rdfs:member述語の使用例、および上記例と同様の rdfs:isDefinedByの使用例は、次のとおりである:

# 'Ontology M' uses a Shape defined by 'Ontology Other' ex:ont-M a sh:ShapesGraph ; rdfs:member ex:shape-1 ; . ex:ont-Other a sh:ShapesGraph ; . ex:shape-1 a sh:NodeShape ; rdfs:isDefinedBy ex:ont-Other ; .

2.6 グループ依存関係の表示

SHACL要素を グループ化するために用いられるsh:ShapesGraphのインスタンスは、 sh:ShapesGraphのインスタンスを用いて識別される他のSHACL要素の グループへの依存を、owl:imports 述語で示すSHOULD

SHACL検証ツールでは、RDFデータを含むファイルなど、あるコレクションから SHACL要素owl:imports命令によって別のコレクションへインポートすることが確立された実践である。 pySHACL [PYSH]など、多くのSHACL検証エンジンが これを行っており、この実践は、特定の検証エンジンの動作がそのアサーションから生じることを期待しない場合でも、 あるコレクション/グループから別のものへの依存を示すために推奨される。 SHACLデータ管理にとっても、有用な情報となる可能性が高い。

owl:importsの例は、以下の例のとおりである。

# 'Ontology N' imports 'Ontology M' ex:ont-M a owl:Ontology ; . ex:ont-N a owl:Ontology ; owl:imports ex:ont-M ; .

2.7 依存関係の算出

依存関係の含意は、上記4つの推奨事項の使用から導くことができ、これは 動機セクションで示した3つのユースケースに答えるために利用できる。

TODO

2.8 妥当性の表示

Issue 770: SHACL検証を介してデータセットのshapeを記録する ProfilesUCR
このUCはここで答えられているか?

data graphに対して shapes graphによって実行された検証アクションの結果を、RDFに永続化する必要があるかもしれない。 その場合、データグラフDGは、述語 shpr:conformsToを用いて、shapeグラフSGに適合しているものとして 示すMAY。この状況では、DGsh:DataGraphのインスタンス、SGsh:ShapesGraphの インスタンスであると推論される。

3. SHACLのプロファイリング

このセクションでは、既存のSHACL 1.2のプロファイルがどのように作成されるかを説明し、いくつかの例を示し、 SHACLのさらなるプロファイルをどのように作成するかを示す。

この仕様の公開時点で知られているSHACLのプロファイル一覧、およびコミュニティ管理プロファイルへのリンクについては、 付録Aを参照されたい。

3.1 SHACLのプロファイルの定義

SHACLのプロファイルは、The Profiles Vocabularyを用いて宣言するべきである。 SHACL 1.2のCoreプロファイルの宣言は次のとおりである:

# declaration of the Core profile <http://www.w3.org/ns/shacl/profile/core> a prof:Profile ; prof:isProfileOf <https://www.w3.org/TR/shacl/> ; prof:hasResource <https://www.w3.org/TR/shacl12-core/> , <http://www.w3.org/ns/shacl-shacl/core> ; . # Core specification <https://www.w3.org/TR/shacl12-core/> a prof:ResourceDescriptor ; prof:hasRole role:Specification ; dcterms:format "text/html" ; dcterms:conformsTo <http://www.w3.org/TR/html5/> ; prof:hasArtifact <https://www.w3.org/TR/shacl12-core/> ; . # Core validator <http://www.w3.org/ns/shacl-shacl/core> a prof:ResourceDescriptor ; prof:hasRole role:Validation ; dcterms:format "text/turtle" ; dcterms:conformsTo <https://www.w3.org/TR/shacl/> ; prof:hasArtifact <http://www.w3.org/ns/shacl-shacl/core> ; .

この宣言は、CoreプロファイルをIRI <http://www.w3.org/ns/shacl/profile/core>で識別し、 それがprof:Profileのインスタンスであること、2015年の元のSHACL公開物のプロファイルであること、 そして仕様と検証器という2つのプロファイル・リソースを持つことを示す。

The Profiles Vocabularyの用語を用いて記述すると、 上でリンクされている各仕様のオンライン文書形式は、SHACL 1.2のプロファイルを構成する多数のリソースの うちの1つにすぎない。この文書は、 Specification —「プロファイルを人間が読める形式で定義する」— というリソース役割を果たし、他のリソースは 他の役割を果たす。SHACLユーザーに特に関心があるのは、各プロファイルの shapes graphであり、 これはValidation —「データのプロファイルへの適合性を検証する方法について指示を提供する」— の役割を果たす。 SHACL 1.2のさまざまなプロファイルは、他のプロファイル・リソース役割を持つ追加リソースを 提供する場合がある。

shapes graph検証リソースは、 SHACL 1.2 Overviewの SHACL-SHACL付録に示されている。

注記

RDFデータをこれらのSpecification Profileのいずれか、または下で定義されるUnion Profileに対して 検証するには、SHACL 1.2 OverviewのSHACL-SHACL付録に一覧されている SHACL-SHACL shapes graphsを用いる。

SHACLのパッケージ化を用いて、プロファイルでサポートするSHACL要素を選択する方法を説明する。

3.2 SHACLの既知のプロファイル

この仕様の公開時点で、上に一覧した仕様それぞれに対する SHACL 1.2のプロファイルが知られている。さらに、すべての仕様プロファイルを組み合わせた union profileも知られている。

計算労力によって定義されたSHACLのプロファイル、およびSHACL UI実装労力によって定義されたSHACLのプロファイルも 知られている。

これらの既知のプロファイルは付録Aに一覧されており、SHACLの将来のプロファイルは、 W3C SHACLコミュニティが管理するリポジトリ https://github.com/w3c/shacl-resourcesに 一覧される予定である。

3.3 その他のプロファイル

ここでは、内容の範囲設定に異なる論理を用いるSHACLのその他のプロファイルを示す。

Issue 826: 既存の計算的に定義されたSHACLプロファイルを示す Profiles

SHACL Profiling 仕様におけるPackaging SHACLおよびProfiles of SHACLの仕組みを示すために、計算的に定義されたSHACLプロファイルを示す。

3.4 その他のプロファイルの作成

SHACL 1.2の追加プロファイルは、任意の基準を用いて作成できる。例えば、 OWL 2 Web Ontology Language Profiles (Second Edition)のプロファイルとよく似た形で、特定の計算複雑性に限定されたshape型のみを 実装するSHACL 1.2 Coreのプロファイルを持つことが望ましい場合がある。この場合、 上記のSHACLのパッケージ化セクションで示された仕組みを用いて、 SHACL 1.2 Coreの要素の一部だけを含めるプロファイル定義を作成できる。

SHACL 1.2のプロファイルを作成する際には、現在知られているSHACL 1.2のプロファイル — Specification ProfilesおよびUnion Profile — に従ってプロファイルを識別し提示することが重要である。 それにより、他者による利用を含めて、効果的に使用できるようになる。 SHACL 1.2のプロファイル作成者は、次のことを行うSHOULD:

  1. IRIでプロファイルを識別する
  2. この仕様で定義されるSHACL 1.2のプロファイルとして、そのプロファイルを定義する
  3. SHACLユーザーコミュニティとプロファイルを共有する

4. SHACLによるプロファイリング

Issue 546: [PROF] SHACLによる プロファイリングの範囲 Profiles
 

このセクションでは、SHACLを用いてさまざまな種類のもののプロファイルを作成する方法を説明する。

The Profiles Vocabularyの一般的な プロファイリング用語および要素を、5. SHACLプロファイリング語彙で定義される、より特殊化されたSHACLプロファイリング要素とともに用いる。

4.1 仕様のプロファイリング

注記

The Profiles Vocabularyに合わせて、本仕様では Specification という用語をStandardという用語と同義であるとみなす。

仕様のプロファイリング例の図 [[[dx-prof]]] characterization
2 The Profiles Vocabularyのスタイル・ガイダンスに従って例を特徴付ける、仕様のプロファイリングの図

4.1.1 プロファイリング状況の特徴付け

Issue 617: [PROF] ユースケース: SKOSプロファイル ProfilesUCR
このUCの状況の特徴付け部分はここで答えられているか?
Issue 764: データのSHACLプロファイリングのユースケース: マルチモデル相互運用性 ProfilesUCR
これはUCでここで答えられているか?

SHACLは、データが既知の Specificationに合致するかどうかを テストするためによく用いられる。そのようなテストに用いられるSHACLが、仕様に含まれるルール以外の ルールを実装しない場合、そのSHACL shapes graphは、その仕様の null profileを作成する。

Shapes Graphが仕様に含まれるルールだけでなく、より多くの、または異なるルールを実装する場合、 それは仕様の(nullではない) profileをテストしていることになる。

Shapes Graph SG1仕様S1をプロファイリングしている場合、 The Profiles Vocabularyの特徴付けに従うと:

<SG1> a prof:Profile ; prof:isProfileOf <S1> ; .

しかし、SG1Validationの役割も果たしているため、 この状況をより完全にThe Profiles Vocabularyで特徴付けると、 次のようになる:

<SG1> a prof:Profile ; prof:isProfileOf <S1> ; prof:hasResource [ prof:hasArtifact <SG1> ; prof:hasRole role:validation ; ] ; .

これは、The Profiles Vocabularyの予期しない使用である。 ここでは、プロファイルが、通常はプロファイルの一部、またはいずれかのリソースによって実行される役割も 果たしており、単一のプロファイル・リソースがすべての役割を果たしているわけではない。 しかしこれは正当であり、概念的なプロファイルが、共通のプロファイリング・リソース役割 — validation — を実行するリソースを示せるようにするというPROFの目的を引き続き達成する。

プロファイル・リソースがSHACL 1.2 Coreを使用しており、 Turtleで利用可能であることを示すために、次の内容を特徴付けに追加することもできる:

<SG1> a prof:Profile ; prof:isProfileOf <S1> ; prof:hasResource [ prof:hasArtifact <S1> ; prof:hasRole role:validation ; dcterms:conformsTo <https://www.w3.org/TR/shacl12-core/> ; dcterms:format "text/turtle" ; ] ; .

SG1が、場合によってはそれらを含む別個の自然言語文書ではなく、 プロファイルの要求事項の規範的表現ともみなされる場合、 prof:hasRoleの値 role:constraintsをそのリソースに適用することもできる。

プロファイルについての別個の自然言語文書が存在しない場合、 prof:hasRoleの値 role:specificationをそのリソースに適用することもできる。ただし、これは最適ではない。 なぜなら、role:specificationは「プロファイルを人間が読める形式で[定義する]」ものとして 規定されており、SHACLは人間が読めるとはいえ、自然言語の散文が想定されているためである。

<SG1> a prof:Profile ; prof:isProfileOf <S1> ; prof:hasResource [ prof:hasArtifact <S1> ; prof:hasRole role:constraints , role:specification , role:validation ; dcterms:conformsTo <https://www.w3.org/TR/shacl12-core/> ; dcterms:format "text/turtle" ; ] ; .

この推論はどのユースケースに対応するか?

4.1.2 データへの影響

2.8 妥当性の表示に従い、 述語sh:conformsToを用いて、 data graphshapes graphに対する妥当性を示すことができる。 この述語は、The Profiles Vocabularyで用いられる [DCTERMS]述語 dcterms:conformsToのサブプロパティである。

2に従い、 <DG1> sh:conformsTo <SG1>がある場合、これは validationによって Data GraphのShapes Graphへの適合性をテストした後にアサートされた可能性があるが、 次のことを推論できる:

<DG1> dcterms:conformsTo <SG1> . # via RDFS or OWL-RL reasoning

The Profiles Vocabularydcterms:conformsTo owl:propertyChainAxiom ( dcterms:conformsTo prof:isProfileOf ) という公理に従い、次が与えられた場合、

<DG1> dcterms:conformsTo <SG1> .

および

<SG1> prof:isProfileOf <S1> .

次のことを結論できる

<DG1> dcterms:conformsTo <S1> .

この推論により、仕様のプロファイルおよび仕様自体に対するデータの静的な適合性主張を行うことができる。 これは、これらのものへの適合性を知る必要があるが、継続的に検証できないデータにとって有用である。

4.2 データのプロファイリング

セクション内容は、上記の仕様のプロファイリングと重複するため削除された。

4.3 プロファイル部分の役割

SHACLは、RDFデータに対する制約と推論ルールを実装できる言語である。これら2つは、 プロファイル設計者が行いたいことの完全な集合ではない。例えば、プロファイルがなぜ、どのように 作成されたかについての文書を含めたい場合や、拡張スキーマ内で新しいモデル要素 (クラス、述語など)を提供したい場合がある。

SHACLは考えられるすべてのプロファイル部分に使用できるわけではないため、プロファイル設計者は、 プロファイルの全体的な部分集合と、それらを互いにどのように関連付けるかについてのガイダンスを、 SHACL仕様ファミリーの外部の仕様に求める必要がある。 The Profiles Vocabularyが そのために使用されることが期待される。

The Profiles VocabularyResource Role Instancesの語彙を参照すると、 SHACLグラフがプロファイル内で Validationの役割を果たすことは明らかであり、 また、SHACLはOWLがクラスやプロパティを宣言するのと同じようにNode ShapeおよびProperty Shapeを宣言できるため、 Specificationの役割も 果たせる可能性がある。

SHACL shapesは自然にモデルとデータを制約するため、あるもの — 標準または別のプロファイル — をプロファイルがどのように制約するかを示すために用いられる場合、 Constraintsの役割を果たすことができる。

また、SHACL Rulesがあるモデルから別のモデルへデータを変換するために実装される場合、 Mappingの役割を果たすこともできる。

4.4 プロファイル階層

プロファイル階層とは、あるプロファイルが別のプロファイルの特殊化であり、より具体的なプロファイルが より広いプロファイルから制約を継承する連鎖を形成する配置である。 The Profiles Vocabularyの規則に従うと、 CBのプロファイルであり、BAのプロファイルである場合、 Cに適合しようとするデータは、BおよびAにも適合している場合にのみ 妥当になり得る。

プロファイルに対するデータの適合性を確認するとは、 Validation 役割を持つプロファイル・リソースでデータをテストすることを意味する。

未完成

4.5 Nullプロファイルの作成

SHACLを用いて作成される仕様の null profileとは、SHACLを用いてその仕様のルールの一部、 おそらくはすべてを実装するが、他のルールはSHACLで実装しない、その仕様のプロファイルである。

SHACLを用いて仕様のnull profileを作成する主な目的は、SHACL検証によってその仕様への適合性テストを 可能にすることである。この目的が存在するのは、多くのRDFデータモデルが、OWLモデルまたは モデルの自然言語文書のみといったモデル仕様を持つ一方で、SHACL validatorのようなデータ検証の仕組みを 提供していないためである。そのようなモデルの例には、 Data Catalog Vocabulary (DCAT) - Version 3Schema.orgThe RDF Data Cube Vocabulary、および多くのW3C 標準がある。

注記

仕様のnull profileはSHACL以外の仕組みを用いて作成することもできるが、ここではSHACLの使用のみに 焦点を当てる。

null profileとして機能するRDFデータ向けの非SHACL validatorの例として、 W3CConstraints of the PROV Data Modelがある。 これは、PROV-O: The PROV Ontologyに従って定式化された来歴データに適用される制約の一覧を提供する。 Constraints of the PROV Data Modelは、PROV-O: The PROV Ontologyおよび 概念的なPROV-DM: The PROV Data Modelで 明示または暗示されたものを超える制約を実装しない。ただし、時間的エンティティの順序付けなど、 モデルが明示的にモデル化していないが適切な使用には必要なものに対するテストを含んでいる。 これらの制約の実装は、SPARQLクエリを実行してRDFデータ検証を可能にするPythonスクリプトとして 作成されている

仕様のnull profileを作成するための普遍的かつ精密な方法論を与えることはできない。 なぜなら、その作業の性質上、仕様のルールが不正確に定義されている場合があり、そのため、 精密であるSHACLでそれらを特徴付けるために用いる方法も、不正確なルール定義と同様に変化するからである。

他の仕様のnull profileの例については、B. Nullプロファイルの例を参照されたい。

5. SHACLプロファイリング語彙

SHACLプロファイリング語彙
3 SHACLプロファイリング語彙
Issue 805: プロファイルの一般化と dcterms:conformsTo推論への影響 Profiles
 

この語彙のすべての要素はSHACL Core語彙のメンバーであり、その名前空間の場所である http://www.w3.org/ns/shacl#で RDF直列化が利用可能である。

5.1 クラス: Shapes Graph

RDFクラス: sh:ShapesGraph
定義元: SHACL 1.2 Core
サブクラス: owl:Ontology
定義: shapes graphは、データグラフをshapeに照らして検証できるようにSHACL検証 プロセスに渡される、0個以上のshapeを含むRDFグラフである。
関連項目: SHACL 1.2 Core: Shapes Graph
範囲注記: SHACLプロファイリングの目的では、このクラスは、 SHACL要素をまとめてグループ化するために使用される。 これは第2.3 SHACL 要素のグループの識別に従う。

5.1.1 プロパティ: imports

RDFプロパティ: owl:imports
定義元: OWL Web Ontology Language Reference
定義: 他のオントロジーを所与のオントロジーにインポートするために用いられるプロパティ。
ドメイン: owl:Ontology
範囲: owl:Ontology
関連項目: OWL Web Ontology Language Reference: オントロジーのインポート
範囲注記: SHACLプロファイリングの目的では、この述語はShapes Graph間の依存関係を示すために使用される。 これは第2.6 グループ依存関係の表示に従う。

5.1.2 プロパティ: member

RDFプロパティ: rdfs:member
定義元: RDF 1.2 Schema
定義: 主語リソースのメンバー。
ドメイン: Resource
範囲: Resource
関連項目: RDF 1.2 Schema: member
範囲注記: SHACLプロファイリングの目的では、この述語は、Shapes Graphを、それが使用する各Shapeに関連付けるために使用される。 そのShapeが当該Shapes Graphで定義されているか他所で定義されているかは問わない。 これは第2.5 要素使用の表示に従う。

5.2 クラス: Data Graph

RDFクラス: sh:DataGraph
定義元: SHACL 1.2 Core
定義: 任意のRDFグラフはdata graphであり得る。
使用上の注記: 適合性主張を行いたいRDFグラフを表すために、このクラスを使用する。 例えば、GeoSPARQL 1.1 標準のShapes Graph(http://www.opengis.net/def/geosparql/validator)に従って 適合性をテストする場合、RDFデータのグラフをData Graphsとして記録する。
関連項目: SHACL 1.2 Core: Data Graph
範囲注記: SHACLプロファイリングの目的では、このクラスは、SHACL関連の 主張を行う対象となるRDFデータを表すために使用される。

5.2.1 プロパティ: conforms to

RDFプロパティ: sh:conformsTo
定義元: SHACL 1.2 Core
サブプロパティ: dcterms:conformsTo
定義: 検証が、許可されないレベルの集合のseverity levelを持つ 検証結果を生成しなかった場合、主語は目的語に適合する。
ドメイン: Data Graph
範囲: Shapes Graph

5.2.2 プロパティ: validation report

RDFプロパティ: sh:validationReport
定義元: SHACL 1.2 Core
定義: 主語に対して存在するValidation Report。
ドメイン: Data Graph
範囲: Validation Report

5.3 クラス: Validation Report

RDFクラス: sh:ValidationReport
定義元: SHACL 1.2 Core
定義: validation reportは、Shapes Graphに対するData Graphの適合性と、すべての 検証結果の集合を報告する検証プロセスの結果である。
関連項目: SHACL 1.2 Core: Validation Report

5.3.1 プロパティ: used shapes graph

RDFプロパティ: sh:usedShapesGraph
定義元: SHACL 1.2 Core
定義: 主語のValidation Reportは、目的語のShapes Graphを用いて生成された。
ドメイン: Validation Report
使用上の注記: version IRI of a Shapes Graphも、このプロパティの目的語として使用できる。
範囲: Shapes Graph

5.3.2 プロパティ: conforms

RDFプロパティ: sh:conforms
定義元: SHACL 1.2 Core
定義: Validation Reportが記述している適合性確認の結果を表す。
ドメイン: Validation Report
範囲: boolean
関連項目: SHACL 1.2 Core: conforms

5.4 クラス: Shape

RDFクラス: sh:Shape
定義元: SHACL 1.2 Core
定義: shapeは、特定のノードを対象にすることができる制約の集合である。
関連項目: SHACL 1.2 Core: Shape

5.4.1 プロパティ: is defined by

RDFプロパティ: rdfs:isDefinedBy
定義元: RDF 1.2 Schema
定義: 主語は、テスト対象Data Graphの妥当性を判定する際に目的語を用いた。
ドメイン: Validation Report
範囲: Shapes Graph
関連項目: RDF 1.2 Schema: isDefinedBy

5.5 規則: conforms to

「conforms to」規則は、Data Graphに関連付けられたValidation Reportが存在し、 そのレポートがShapes Graphが検証に使用されたことを示し、かつsh:conforms プロパティがtrueを示す場合に、Data GraphShapes Graphに適合していると示すことを可能にする推論規則である。

この推論規則は、sh:conformsプロパティ値のテストを含むため、 OWL property chain axiomとして表現できない。そのため、ここではSPARQL 1.2 Query Language規則とSHACL 1.2 Rules規則の両方として示す。

CONSTRUCT { ?x sh:conformsTo ?z } WHERE { ?x sh:validationReport ?y . ?y sh:usedShapesGraph ?z ; sh:conforms true ; . }
RULE { ?x sh:conformsTo ?z } WHERE { ?x sh:validationReport ?y . ?y sh:usedShapesGraph ?z ; sh:conforms true ; . }

A. SHACLのプロファイル

この付録は、この仕様の公開時点で知られているSHACL 1.2のプロファイルを、 SHACLのプロファイリングセクションに従って定式化して一覧する。 また、この文書が確定した後に追加できるSHACLのプロファイルの非公式レジスターを、 W3CのSHACLコミュニティがどこで管理しているかも示す。

A.1 仕様プロファイル

RDFにおける7つのSpecification Profileそれぞれの定義は、ここで利用可能である:

  1. Core Profile
  2. SPARQL Profile
  3. Node Expressions Profile
  4. Rules Profile
  5. UI Profile
  6. Profiling Profile

Union Profile定義もRDFで利用可能である:

  1. Union Profile

A.2 Union Profile

SHACL 1.2のUnion Profileは、SHACL 1.2仕様シリーズの すべての側面を包含する、SHACL 1.2の概念的な全体である。人間が読める単一のUnion Profile 仕様文書は存在しない — 仕様セクションからリンクされている各文書を個別に読む必要がある — が、単一のvalidationリソースは存在する。すなわち、個々のプロファイルの validation shapes graphをすべて含む shapes graphである。

Union Profileのshapes graphは、 SHACL 1.2 Overviewの SHACL-SHACL付録に示されている。

A.3 SHACL 1.2 UI Profile

Issue 827: [PROF/UI] SHACL UIプロファイリングのユースケース UIProfilesUCR
SHACL UI実装が、サポートする機能の集合を明示的に述べるSHACL UIのプロファイルを定義できるようにする

SHACLのSHACL 1.2 UI profileは、SHACL 1.2 UI仕様向けに実装されるユーザーインターフェイス・コンポーネントとしての 実装の容易さに基づいて選択された、SHACL Core語彙要素のサブセットである。

TODO

A.4 CD1 Profile

Issue 847: SHACLの計算複雑性定義プロファイルを作成する ProfilesUCR
SHACLの計算複雑性定義プロファイルを例示し、他のプロファイルを作成する方法を示す
Issue 242: 検証労力を制限できるようにsh:ReferenceShape、sh:SimpleShapeを 定義する PostponedProfiles
 

SHACLのCD1(「Computationally-Defined #1」)プロファイルは、計算上の単純さに基づいて 選択された、SHACL Core、SPARQL、およびNode Expressions語彙要素のサブセットである。

このCD1プロファイルを定義する理由は2つある:

  1. 実際の、計算複雑性定義プロファイルをプロファイル化する
  2. 同様の論理を用いる他のプロファイルをどのように定義できるかを示す

このプロファイルは、リソースhttp://www.w3.org/ns/shacl/profile/cd1で定義されており、 その一部は次のとおりである:

<http://www.w3.org/ns/shacl/profile/cd1> a owl:Ontology , prof:Profile ; prof:isProfileOf sh: ; rdfs:label "CD1 Profile of SHACL"@en ; rdfs:comment """This is a Profile of SHACL 1.2 that excludes shapes found to be computationally intensive. Vocabulary elements of SHACL that are not listed as members of this profile may not be used for implementations claiming conformance to this profile."""@en ; rdfs:member sh:AbstractResult , sh:AndConstraintComponent , # ... many skipped members sh:xone , sh:zeroOrMorePath , sh:zeroOrOnePath ; .

上で... many skipped membersと示されている箇所には、次を除くSHACL 1.2の すべてのクラス要素およびプロパティ要素が一覧されている:

TODO

A.5 SHACL 1.0 Profile

Issue 872: SHACLのSHACL 1.0 Profile ProfilesUCR
 

A.6 Pretty Print Profile

SHACLのPretty Print profileは、検証プロセスによって「pretty」— 読みやすい — エラーメッセージが 生成されるように選択された、SHACL語彙要素のサブセットである。

A.7 OWL Consistent Profile

SHACLのOwl Consistent profileは、shape定義が対象とするクラスおよび述語に関するOWL制約に 違反しないことを保証するために選択された、SHACL語彙要素のサブセットである。

B. Nullプロファイルの例

このセクションは非規範である。

この付録には、他の仕様のnull profileの例が含まれる。

B.1 POSのNullプロファイル

このプロファイルは、Basic Geo (WGS84 lat/long) Vocabularynull profileである。 このプロファイルの目的は、非常に単純なRDF語彙のnull profileがどのようなものかを示すことである。

TODO - repo内のpos.ttlファイルを参照

B.2 PROFのNullプロファイル

このプロファイルは、The Profiles Vocabularynull profileである。

このプロファイルの目的は、PROFデータ用のSHACLベースの検証器を提供することと、 やや複雑な語彙のnull profileがどのようなものかを示すことの両方である。

このnull profileは、PROFのすべてのOWLルール、およびPROF仕様で述べられているが PROFオントロジーでは実装されていないいくつかのルールを実装する。

TODO

C. セキュリティとプライバシーに関する 考慮事項

このセクションは非規範である。

ほとんどのRDFベース技術と同様に、SHACLプロセッサーは、さまざまなソースから 組み立てられたグラフを操作する場合がある。一部のアプリケーションは、オープンな 「linked data」(「LD」)アーキテクチャを持ち、組織の信頼ネットワークの外部にあるソースから RDFトリプルを動的に組み立てる場合がある。 RDFでは誰でも任意のリソースについて文を追加できるため、トリプルがshape定義または data graph内のノードの当初意図された意味を変更し、その結果、 誤解を招く結果につながる可能性がある。 これ(および以下)のシナリオに対する保護は、信頼され検証されたRDFソースのみを使用し、 owl:importsおよびsh:shapesGraphを介してグラフが動的に追加される可能性を 排除することで実現可能である。

他の仕様のプロファイルを作成する場合、プロファイル作成者は、 自らの制約がそれらの仕様のルールに違反しないことを保証する必要がある。 いずれかが違反しており、仕様のルールではなくプロファイルのルールのみが、偶然または設計により データ妥当性確認に使用された場合、データが誤って妥当であると計算される可能性がある。 これは偶発的なデータ公開または利用につながり、セキュリティ問題を引き起こす可能性がある。

D. 謝辞

このセクションは非規範である。

RDF Data Shapesワーキンググループのメンバーを含む多くの人々が、この仕様に貢献した。

E. 国際化に関する 考慮事項

TODO

F. 索引

F.1 この仕様で定義される用語

F.2 参照により定義される用語

G. Issue要約

H. 参考文献

H.1 規範的参考文献

[DCTERMS]
DCMI Metadata Terms. DCMI Usage Board. DCMI. 20 January 2020. DCMI Recommendation. URL: https://www.dublincore.org/specifications/dublin-core/dcmi-terms/
[dx-prof]
The Profiles Vocabulary. Nicholas Car. W3C. 18 December 2019. W3C Working Group Note. URL: https://www.w3.org/TR/dx-prof/
[owl-ref]
OWL Web Ontology Language Reference. Mike Dean; Guus Schreiber. W3C. 10 February 2004. W3C Recommendation. URL: https://www.w3.org/TR/owl-ref/
[owl2-rdf-based-semantics]
OWL 2 Web Ontology Language RDF-Based Semantics (Second Edition). Michael Schneider. W3C. 11 December 2012. W3C Recommendation. URL: https://www.w3.org/TR/owl2-rdf-based-semantics/
[owl2-syntax]
OWL 2 Web Ontology Language Structural Specification and Functional-Style Syntax (Second Edition). Boris Motik; Peter Patel-Schneider; Bijan Parsia. W3C. 11 December 2012. W3C Recommendation. URL: https://www.w3.org/TR/owl2-syntax/
[rdf12-concepts]
RDF 1.2 Concepts and Abstract Data Model. Andy Seaborne; Gregg Kellogg; Olaf Hartig; Pierre-Antoine Champin. W3C. 7 April 2026. W3C Candidate Recommendation. URL: https://www.w3.org/TR/rdf12-concepts/
[rdf12-schema]
RDF 1.2 Schema. Dominik Tomaszuk. W3C. 28 March 2026. W3C Working Draft. URL: https://www.w3.org/TR/rdf12-schema/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/info/rfc2119/
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/info/rfc8174/
[schema-org]
Schema.org. W3C Schema.org Community Group. W3C. 6.0. URL: https://schema.org/
[shacl12-core]
SHACL 1.2 Core. Holger Knublauch; Thomas Bergwinkl; Yousouf Taghzouti; Jesse Wright. W3C. 22 June 2026. W3C Working Draft. URL: https://www.w3.org/TR/shacl12-core/
[shacl12-rules]
SHACL 1.2 Rules. Robert David; David Habgood; Andy Seaborne; Simon Steyskal. W3C. 19 June 2026. W3C Working Draft. URL: https://www.w3.org/TR/shacl12-rules/
[sparql12-query]
SPARQL 1.2 Query Language. Olaf Hartig; Andy Seaborne; Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon. W3C. 25 June 2026. W3C Working Draft. URL: https://www.w3.org/TR/sparql12-query/
[vocab-data-cube]
The RDF Data Cube Vocabulary. Richard Cyganiak; Dave Reynolds. W3C. 16 January 2014. W3C Recommendation. URL: https://www.w3.org/TR/vocab-data-cube/
[vocab-dcat-3]
Data Catalog Vocabulary (DCAT) - Version 3. Simon Cox; Andrea Perego; Alejandra Gonzalez Beltran; Peter Winstanley; Riccardo Albertoni; David Browning. W3C. 22 August 2024. W3C Recommendation. URL: https://www.w3.org/TR/vocab-dcat-3/

H.2 参考情報文献

[LDP]
LinkedData. W3C. URL: https://www.w3.org/wiki/LinkedData
[owl2-profiles]
OWL 2 Web Ontology Language Profiles (Second Edition). Boris Motik; Bernardo Cuenca Grau; Ian Horrocks; Zhe Wu; Achille Fokoue. W3C. 11 December 2012. W3C Recommendation. URL: https://www.w3.org/TR/owl2-profiles/
[prov-constraints]
Constraints of the PROV Data Model. James Cheney; Paolo Missier; Luc Moreau. W3C. 30 April 2013. W3C Recommendation. URL: https://www.w3.org/TR/prov-constraints/
[prov-dm]
PROV-DM: The PROV Data Model. Luc Moreau; Paolo Missier. W3C. 30 April 2013. W3C Recommendation. URL: https://www.w3.org/TR/prov-dm/
[prov-o]
PROV-O: The PROV Ontology. Timothy Lebo; Satya Sahoo; Deborah McGuinness. W3C. 30 April 2013. W3C Recommendation. URL: https://www.w3.org/TR/prov-o/
[PYSH]
pySHACL - A Python validator for SHACL. RDFLib Community. URL: https://pypi.org/project/pyshacl
[w3c-basic-geo]
Basic Geo (WGS84 lat/long) Vocabulary. Dan Brickley. W3C Semantic Web Interest Group. 1 February 2006. URL: https://www.w3.org/2003/01/geo/