Skip to content

Profiling Introduction #489

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: gh-pages
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 110 additions & 34 deletions shacl12-profiling/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<script class="remove">

function prepareSyntaxRules() {
document.querySelectorAll("[data-syntax-rule]").forEach(element => {
specification.querySelectorAll("[data-syntax-rule]").forEach(element => {
let ruleId = element.getAttribute("data-syntax-rule");
let tr = document.createElement("tr");
tr.classList.add("syntax-rule-tr");
Expand Down Expand Up @@ -420,10 +420,10 @@
<body>
<section id="abstract">
<p>
This document defines extensions of the SHACL Shapes Constraint Language created to allow for the profiling of specifications.
This specification defines elements of the SHACL Shapes Constraint Language created to allow for profiles of SHACL and profiling with SHACL.
</p>
<p>
SHACL is a language for validating RDF graphs against a set of conditions, so this document's scope is limited to the profiling of RDF graph models, including SHACL-defined models.
SHACL is a language for validating RDF graphs against a set of conditions, so this document's scope is limited to profiling of RDF graphs, including graphs containing SHACL Shapes.
</p>

<p style="text-indent: 100px;">
Expand All @@ -436,32 +436,103 @@

<section id="sotd"></section>

<section id="introduction">
<h2>Introduction</h2>
<p>SHACL Profiling is the act of creating
a <a href="https://www.w3.org/TR/dx-prof/#dfn-profile">profile</a>
of an <a href="https://www.w3.org/TR/shacl/#dfn-rdf-graph">RDF graph</a>
using SHACL...
<section class="introductory">
<h2>SHACL Specifications</h2>
<p>
This specification is part of the SHACL 1.2 family of specifications. See the SHACL 1.2 Overview for a more detailed introduction to all of them.
</p>
<p>
The specifications are as follows:
</p>
<dl>
<dt><a href="https://w3c.github.io/data-shapes/shacl12-overview/">SHACL 1.2 Overview</a></dt>
<dd>overviews the set of SHACL specifications</dd>
<dt><a href="https://w3c.github.io/data-shapes/shacl12-core/">SHACL 1.2 Core</a></dt>
<dd>defines the Core of SHACL</dd>
<dt><a href="https://w3c.github.io/data-shapes/shacl12-sparql/">SHACL 1.2 SPARQL Extensions</a></dt>
<dd>defines SPARQL-related extensions of the SHACL</dd>
<dt><a href="https://w3c.github.io/data-shapes/shacl12-node-expr/">SHACL 1.2 Node Expressions</a></dt>
<dd>defines graph expressions used to determine focus nodes in SHACL</dd>
<dt><a href="https://w3c.github.io/data-shapes/shacl12-inf-rules/">SHACL 1.2 Inference Rules</a></dt>
<dd>defines SHACL's methods of rule-based inference</dd>
<dt><a href="https://w3c.github.io/data-shapes/shacl12-ui/">SHACL 1.2 UI</a></dt>
<dd>defines SHACL's use for User Interface generation</dd>
<dt><a href="https://w3c.github.io/data-shapes/shacl12-compact-syntax/">SHACL 1.2 Compact Syntax</a></dt>
<dd>defines an RDF syntax for expressing SHACL concepts</dd>
<dt>SHACL 1.2 Profiling (this specification)</dt>
<dd>defines the use of SHACL for profiling data, including SHACL data</dd>
</dl>
</section>

<section id="terminology">
<h3>Terminology</h3>
<section class="introductory">
<h2>Document Outline</h2>
<p>
The introduction provides background concepts of profiling and states this specification's scope.
</p>
<p>
Sections 2 & 3 cover the two main elements within the stated scope.
</p>
</section>

<section id="introduction">
<h2>Introduction</h2>
<section id="what-is">
<h3>What is profiling?</h3>
<p>
Terminology used throughout this document is consistent with several sources:
Profiling is the act of creating a "profile" of something.
</p>
<p>
Generically, in English, a "profile" of something is as follows:
</p>
<p style="padding: 0 50px 0 50px;">
The outline of a physical object or feature, or a representation of this
<br /><br />- Oxford English dictionary, use of the word "profile" since the 17th century
</p>
<p>
Within the world of data, a derived definition of "profile" consistent with the above is —
</p>
<p>
A summary or an extraction
</p>
<p>
In this definition, the essence of the English word is retained, since a summary or extraction of or from a data object <em>may</em> be an outline of it; for example, a 2D representation of a 3D spatial object. or a statistical summary of a dataset having lots of parts.
</p>
<p>
By definition, SHACL constrains (RDF) data; thus, any data that is valid according to a shapes graph will be a profile of the data graph that was validated. In the case of a shapes graph validating all elements of a data graph, the valid data will be a "null" profile of the data graph, that is identical to it.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
By definition, SHACL constrains (RDF) data; thus, any data that is valid according to a shapes graph will be a profile of the data graph that was validated. In the case of a shapes graph validating all elements of a data graph, the valid data will be a "null" profile of the data graph, that is identical to it.
By definition, SHACL constrains (RDF) data. Therefore, any data that is valid according to a shapes graph will be a profile of the data graph that was validated. If a shapes graph validates all elements of a data graph, the resulting valid data will be a "null" profile of the data graph, meaning it is identical to the original data graph.

</p>
<p>
The W3C's <em>Profiles Vocabulary</em> [[dx-prof]] has defined "data profiling" in the context of <em>specifications</em> or <em>data specifications</em>:
</p>
<p style="padding: 0 50px 0 50px;">
<em>A data specification that constrains, extends, combines, or provides guidance or explanation about the use of other data specifications.</em>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<em>A data specification that constrains, extends, combines, or provides guidance or explanation about the use of other data specifications.</em>
<em>A data specification that constrains, extends, combines, or provides guidance or explanation about the use of other data specifications. This definition includes what are sometimes called "application profiles", "metadata application profiles", or "metadata profiles".</em>

Should we add the other variants referred to in the specification?

</p>
<p>
If a shapes graph is taken to be a "data specification" and it can sensibly be then, in addition to data valid according to a shapes graph being a profile of the data graph validated, the shapes graph itself is a profile of the data model used for the data graph.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If a shapes graph is taken to be a "data specification" and it can sensibly be then, in addition to data valid according to a shapes graph being a profile of the data graph validated, the shapes graph itself is a profile of the data model used for the data graph.
If a shapes graph is taken to be a "data specification," then not only is the data that is valid according to the shapes graph a profile of the validated data graph, but the shapes graph itself also serves as a profile of the data model used for the data graph.

</p>
</section>
<section id="scope">
<h3>Scope</h3>
<p>
With the above section's concepts in mind, this specification defines the following:
</p>
<ol>
<li>the main SHACL [[shacl]] specification
<ul>
<li>which references terms from RDF [[rdf11-concepts]]</li>
<li>technical terns for SHACL</li>
</ul>
</li>
<li>the Profiles Vocabulary [[dx-prof]], a W3C Dataset Exchange Working Group Note
<ul><li>which defines general terms to do with profiling including the terms "profiling" / "profile"</li></ul>
</li>
<li>profiles of SHACL</li>
<li>profiling with SHACL</li>
</ol>
</section>
<section id="terminology">
<h3>Terminology</h3>
<p>
The SHACL terms include
Terminology used throughout this specification is taken from several sources:
</p>
<dl>
<dt><a href="https://w3c.github.io/data-shapes/shacl12-core/">SHACL 1.2 Core</a> specification</dt>
<dd>technical terms for SHACL and RDF, the latter from [[rdf12-concepts]]</dd>
<dt>Profiles Vocabulary [[dx-prof]]</dt>
<dd>defines general terms to do with profiling including the terms "profiling" &amp; "profile"</dd>
</dl>
<p>
The SHACL &amp; RDF terms include:
<dfn data-lt="bindings">
<a href="https://www.w3.org/TR/shacl/#dfn-binding">binding</a>
</dfn>
Expand Down Expand Up @@ -614,7 +685,7 @@ <h3>Terminology</h3>
.
</p>
<p>
The general profiling terms include
The general profiling terms include:
<dfn data-lt="specification|specifications">
<a href="https://www.w3.org/TR/dx-prof/#dfn-specification">specification</a>
</dfn>
Expand All @@ -632,7 +703,7 @@ <h3>Terminology</h3>
<section id="conventions">
<h3>Document Conventions</h3>
<p>
Within this document, the following namespace prefix definitions are used:
Within this specification, the following namespace prefix definitions are used:
</p>
<table class="term-table">
<tr>
Expand All @@ -649,7 +720,7 @@ <h3>Document Conventions</h3>
</tr>
<tr>
<td><code>sh:</code></td>
<td><code><a href="http://www.w3.org/ns/shacl">http://www.w3.org/ns/shacl#</a></code></td>
<td><code>http://www.w3.org/ns/shacl#</code></td>
</tr>
<tr>
<td><code>xsd:</code></td>
Expand All @@ -662,7 +733,7 @@ <h3>Document Conventions</h3>
</table>

<p>
Within this document, the following JSON-LD context is used:
Within this specification, the following JSON-LD context is used:
</p>
<pre class="jsonld">{
"@context": {
Expand All @@ -679,11 +750,11 @@ <h3>Document Conventions</h3>
References to the SHACL vocabulary, e.g., via <code>owl:imports</code> should include the <code>#</code>.
</p>
<p>
Throughout the document, color-coded boxes containing RDF graphs in Turtle and JSON-LD will appear.
Throughout the specification, color-coded boxes containing RDF graphs in Turtle and JSON-LD will appear.
The color and title of a box indicate whether it is a Shapes graph, a Data graph, or something else.
The Turtle document fragments use the prefix bindings given above.
The JSON-LD document fragments use the context given above.
Only the Turtle documents will have parts highlighted.
The Turtle specification fragments use the prefix bindings given above.
The JSON-LD specification fragments use the context given above.
Only the Turtle specifications will have parts highlighted.
</p>

<div class="shapes-graph">
Expand Down Expand Up @@ -755,13 +826,18 @@ <h3>Document Conventions</h3>
</section>
</section>

<section id="section">
<h2>Section</h2>
<section id="profiles-of-shacl">
<h2>Profiles of SHACL</h2>
<p>Content.</p>
</section>

<section id="profiling-with-shacl">
<h2>Profiling with SHACL</h2>
<p>Content.</p>
</section>

<section id="syntax-rules" class="appendix">
<h2>Summary of Syntax Rules from this Document</h2>
<h2>Summary of Syntax Rules from this Specification</h2>
</section>

<section id="security">
Expand All @@ -776,7 +852,7 @@ <h2>Privacy Considerations</h2>

<section id="ack" class="appendix informative">
<h2>Acknowledgements</h2>
<p>Many people contributed to this document, including members of the RDF Data Shapes Working Group.</p>
<p>Many people contributed to this specification, including members of the RDF Data Shapes Working Group.</p>
</section>

<section id="internationalization">
Expand Down