diff --git a/index.html b/index.html index 77b3a39..f82e29c 100644 --- a/index.html +++ b/index.html @@ -722,6 +722,16 @@

Table of Contents

>Discovery +
    +
  1. + 2.1 + Assembling the Profile +
  2. +
  • Note: + +
    +

    2.1 Assembling the Profile

    +
    +

    The Solid profile is the set S of statements assembled by the procedure below. The user's WebIDs are the original WebID together with every WebID transitively equated to it via owl:sameAs within S; this set grows as S grows. Apply cycle detection throughout: do not re-fetch a document already retrieved. On 401/403 with a logged-in user, retry authenticated; missing links are not errors.

    +
      +
    1. Initialise. GET the WebID Profile Document for the original WebID. If it cannot be retrieved, surface a clear error. Add its triples to S.
    2. +
    3. Discovery-link expansion. For each triple ?w ?p ?o in S where ?p is a discovery link (rdfs:seeAlso, foaf:isPrimaryTopicOf, pim:preferencesFile, or owl:sameAs), ?w is one of the user's WebIDs, and ?o is a URL whose document has not yet been fetched, GET ?o and add its triples to S. Repeat until no new documents are discovered.
    4. +
    5. Type Indexes. For each triple in S with predicate solid:publicTypeIndex or solid:privateTypeIndex whose subject is one of the user's WebIDs, GET the document at the object (if not already fetched) and add its triples to S.
    6. +
    7. Authoritative filter. Drop every solid:oidcIssuer triple in S that did not originate in a WebID Profile Document; that predicate is authoritative only when sourced there, mirroring the write protection in § Updating Profile.
    8. +
    9. Subject filter. Restrict S to triples whose subject or object is one of the user's WebIDs. The result is the Solid profile.
    10. +
    +
    + +
    +
    Note (Bounded traversal):
    +
    +

    Traversal of discovery links is unbounded. Clients apply cycle detection to avoid re-fetching documents. To ensure that owners of WebIDs hosted outside Solid storage can extend their profile via documents they control, clients follow at least two hops of discovery links from each WebID Profile Document (the document itself, the documents it links, and the documents those link in turn). Beyond two hops, clients can terminate at a depth or document-count limit appropriate to their environment.

    +
    +
    + +
    +
    Note (Preferences leniency):
    +
    +

    Including pim:preferencesFile in the discovery-link set is intentionally lenient. In practice an agent has a single Preferences Document linked from the original WebID Profile Document; the algorithm tolerates the pim:preferencesFile link appearing in any document already in S, provided its subject is one of the user's WebIDs.

    +
    +
    + +
    +
    Note (Entity reconciliation):
    +
    +

    The assembled graph may contain triples about more than one of the user's WebIDs. Depending on the client's context, these typically need to be reconciled into a single subject. Two common strategies:

    +
      +
    • Augmentation — for every triple in which one of the user's WebIDs appears as subject or object, add a parallel triple substituting the original WebID. Non-destructive; original sources are preserved.
    • +
    • Rewriting — replace every occurrence of any of the user's WebIDs (subject or object) with the original WebID, then delete the owl:sameAs triples.
    • +
    +
    +
    +