You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: solid26.html
+25-10Lines changed: 25 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -451,6 +451,7 @@ <h3>Solid WebID Profile</h3>
451
451
<ul>
452
452
<li>Unlike the other pinned specifications, the Solid WebID Profile is <em>not</em> normatively referenced by the Solid Protocol. It is included here as the only specification that describes the structure of a Solid Profile and the predicates clients use to discover its parts.</li>
453
453
<li>Most clients only need <ahref="https://solid.github.io/webid-profile/#discovery">§ 2 Discovery</a> and <ahref="https://solid.github.io/webid-profile/#reading-profile">§ 3.1 Reading Profile</a>; the <ahref="https://solid.github.io/webid-profile/#dfn-writer-application">Writer Application</a> sections (<ahref="https://solid.github.io/webid-profile/#updating-profile">§ 3.2</a>, <ahref="https://solid.github.io/webid-profile/#extending-profile">§ 3.3</a>) primarily apply to profile editors and onboarding flows.</li>
454
+
<li>The companion <ahref="https://github.com/solid/webid-profile/tree/main/shapes">shapes</a> in <code>solid/webid-profile</code> — <ahref="https://github.com/solid/webid-profile/blob/main/shapes/profile-discovery-shape.ttl"><code>profile-discovery-shape.ttl</code></a> (discovery predicates) and <ahref="https://github.com/solid/webid-profile/blob/main/shapes/profile-shapes.ttl"><code>profile-shapes.ttl</code></a> (profile data) — can be used by implementers to validate WebID Profiles, though they are not part of the pinned specification.</li>
454
455
</ul>
455
456
</div>
456
457
</section>
@@ -547,10 +548,15 @@ <h4>Assembling the Profile</h4>
547
548
<li>For each linked document (Extended Profile Documents via <code>rdfs:seeAlso</code>/<code>foaf:isPrimaryTopicOf</code>/<code>owl:sameAs</code>; the Preferences Document via <code>pim:preferencesFile</code>; Type Index documents via <code>solid:publicTypeIndex</code>/<code>solid:privateTypeIndex</code>), <code>GET</code> the document. Public documents may be fetched unauthenticated; on <code>401</code>/<code>403</code> with a logged-in user, retry authenticated. Preferences and the private Type Index will normally require authentication [<cite><aclass="bibref" href="#ref-webid-profile">Solid WebID Profile</a></cite> § <ahref="https://solid.github.io/webid-profile/#discovery">2 Discovery</a>, § <ahref="https://solid.github.io/webid-profile/#private-preferences">4 Private Preferences</a>].</li>
548
549
<li>Repeat step 2 transitively for Extended Profile Documents linked from the Preferences Document.</li>
549
550
<li>Discard any retrieved document that is not self-describing for the WebID (no triple with the WebID as subject, nor a <code>foaf:primaryTopic</code> triple naming it), to prevent attribution of arbitrary statements to the WebID.</li>
550
-
<li>Union the remaining documents with the WebID Document, dropping <code>solid:oidcIssuer</code> from any source other than the WebID Document: it is authoritative only when sourced from the WebID Document, mirroring the write protection in <ahref="https://solid.github.io/webid-profile/#updating-profile">Solid WebID Profile § 3.2</a>. Other discovery predicates (e.g. <code>pim:storage</code>, <code>ldp:inbox</code>) may legitimately appear in any of these documents.</li>
551
+
<li>Union the remaining documents with the WebID Document, dropping <code>solid:oidcIssuer</code> from any source other than the WebID Document: it is authoritative only when sourced from the WebID Document, mirroring the write protection in <ahref="https://solid.github.io/webid-profile/#updating-profile">Solid WebID Profile § 3.2</a>. Other discovery predicates (e.g. <code>pim:storage</code>) may legitimately appear in any of these documents.</li>
551
552
<li>Drop any statement in which the WebID is neither the subject nor the object, restricting the assembled graph to statements about the agent denoted by the WebID.</li>
552
553
</ol>
553
554
555
+
<divclass="note">
556
+
<h4><span>Note</span></h4>
557
+
<p>The assembled WebID Profile graph can optionally be validated against <ahref="https://github.com/solid/webid-profile/blob/main/shapes/profile-discovery-shape.ttl"><code>profile-discovery-shape.ttl</code></a> from the <ahref="https://github.com/solid/webid-profile/tree/main/shapes"><code>solid/webid-profile</code> shapes</a>. The shape covers <code>pim:preferencesFile</code> (exactly 1), <code>pim:storage</code> (0+), <code>rdfs:seeAlso</code> (0+), <code>solid:oidcIssuer</code> (0+), <code>solid:publicTypeIndex</code>/<code>solid:privateTypeIndex</code> (at most 1 each), and <code>foaf:primaryTopicOf</code> (at most 1). Two caveats apply: the shape uses the non-standard <code>foaf:primaryTopicOf</code> rather than the FOAF-defined <code>foaf:isPrimaryTopicOf</code> used elsewhere in this guide; and Solid-OIDC requires at least one <code>solid:oidcIssuer</code>, while the shape permits zero.</p>
558
+
</div>
559
+
554
560
</div>
555
561
</section>
556
562
@@ -582,20 +588,29 @@ <h2 property="schema:name">Guidance for clients</h2>
582
588
583
589
<divclass="note">
584
590
<h4><span>Note</span></h4>
585
-
<p>Service-discovery predicates such as <code>pim:storage</code>and <code>ldp:inbox</code>may yield more than one value. When the application needs exactly one (e.g. a storage to write data into), prompt the user to choose which service to use rather than picking one silently.</p>
591
+
<p><code>pim:storage</code> may yield more than one value. When the application needs exactly one storage to write data into, prompt the user to choose rather than picking one silently.</p>
586
592
</div>
587
593
588
594
<divclass="note">
589
595
<h4><span>Note</span></h4>
590
-
<p>The Solid WebID Profile [<cite><aclass="bibref" href="#ref-webid-profile">WEBID-PROFILE</a></cite>] does not standardise predicates for rendering an agent's identity (see <ahref="https://solid.github.io/webid-profile/#other-predicates">§ 7 Other predicates</a>). The list below is drawn from convention — predicates populated by existing profile editors (<ahref="https://github.com/SolidOS/solidos">SolidOS</a>/<ahref="https://github.com/SolidOS/mashlib">mashlib</a>, <ahref="https://github.com/inrupt/pod-browser">Inrupt PodBrowser</a>, <ahref="https://github.com/pod-os/PodOS">PodOS</a>, <ahref="https://gitlab.com/vincenttunru/penny">Penny</a>, and Noël De Martin's <ahref="https://github.com/NoelDeMartin/umai">Umai</a>, <ahref="https://github.com/NoelDeMartin/focus">Focus</a>, <ahref="https://github.com/NoelDeMartin/media-kraken">Media Kraken</a>) — drawn from FOAF [<cite><aclass="bibref" href="#ref-foaf">FOAF</a></cite>], vCard [<cite><aclass="bibref" href="#ref-vcard">VCARD-RDF</a></cite>], Schema.org [<cite><aclass="bibref" href="#ref-schema">SCHEMA-ORG</a></cite>], BIO [<cite><aclass="bibref" href="#ref-bio">BIO</a></cite>], and <ahref="http://www.w3.org/ns/solid/terms#">Solid Terms</a>.</p>
591
-
<p>Common predicates for rendering a profile:</p>
596
+
<p>The Solid WebID Profile [<cite><aclass="bibref" href="#ref-webid-profile">WEBID-PROFILE</a></cite>] does not standardise predicates for rendering an agent's identity (see <ahref="https://solid.github.io/webid-profile/#other-predicates">§ 7 Other predicates</a>). The list below aligns with the companion <ahref="https://github.com/solid/webid-profile/blob/main/shapes/profile-shapes.ttl"><code>profile-shapes.ttl</code></a> in the <ahref="https://github.com/solid/webid-profile/tree/main/shapes"><code>solid/webid-profile</code> shapes</a> — which targets <code>foaf:Person</code>, <code>vcard:Individual</code>, and <code>schema:Person</code> — supplemented with widely-used fallbacks populated by existing profile editors (<ahref="https://github.com/SolidOS/solidos">SolidOS</a>/<ahref="https://github.com/SolidOS/mashlib">mashlib</a>, <ahref="https://github.com/inrupt/pod-browser">Inrupt PodBrowser</a>, <ahref="https://github.com/pod-os/PodOS">PodOS</a>, <ahref="https://gitlab.com/vincenttunru/penny">Penny</a>, and Noël De Martin's <ahref="https://github.com/NoelDeMartin/umai">Umai</a>, <ahref="https://github.com/NoelDeMartin/focus">Focus</a>, <ahref="https://github.com/NoelDeMartin/media-kraken">Media Kraken</a>). Vocabularies referenced: FOAF [<cite><aclass="bibref" href="#ref-foaf">FOAF</a></cite>], vCard [<cite><aclass="bibref" href="#ref-vcard">VCARD-RDF</a></cite>], Schema.org [<cite><aclass="bibref" href="#ref-schema">SCHEMA-ORG</a></cite>], <ahref="http://www.w3.org/ns/org#">Org</a>, and <ahref="http://www.w3.org/ns/solid/terms#">Solid Terms</a>.</p>
597
+
<p>Common predicates for rendering a profile (predicates appearing in <code>profile-shapes.ttl</code> are marked †):</p>
592
598
<ul>
593
-
<li><strong>Name:</strong><code>foaf:name</code>, with fallbacks to <code>vcard:fn</code>, <code>schema:name</code>, or <code>rdfs:label</code>.</li>
594
-
<li><strong>Avatar / image:</strong><code>foaf:img</code>, <code>vcard:hasPhoto</code>, or <code>schema:image</code>.</li>
595
-
<li><strong>Homepage / web page:</strong><code>foaf:homepage</code>, <code>foaf:weblog</code>, or <code>schema:url</code>.</li>
596
-
<li><strong>Email / contact:</strong><code>foaf:mbox</code>, <code>vcard:hasEmail</code>, or <code>schema:email</code>.</li>
597
-
<li><strong>Description / bio:</strong><code>vcard:note</code>, <code>schema:description</code>, or <code>bio:olb</code>.</li>
<li><strong>Name:</strong><code>vcard:fn</code>†, with fallbacks to <code>foaf:name</code>, <code>schema:name</code>, or <code>rdfs:label</code>.</li>
600
+
<li><strong>Short name / nickname:</strong><code>foaf:nick</code>†, with fallback to <code>vcard:nickname</code>.</li>
601
+
<li><strong>Avatar / photo:</strong><code>vcard:hasPhoto</code>†, with fallbacks to <code>foaf:img</code> or <code>schema:image</code>.</li>
602
+
<li><strong>Email:</strong><code>vcard:hasEmail</code>†, with fallbacks to <code>foaf:mbox</code> or <code>schema:email</code>.</li>
<li><strong>Organization & role:</strong><code>vcard:organization-name</code>† and <code>vcard:role</code>†; for richer involvement, <code>org:organization</code>† and <code>org:role</code>†.</li>
0 commit comments