+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty status="testing">
+       <label xml:lang="en">local notation</label>
+       <comment xml:lang="en">
+               <p>
+                       An integer, string, or time·stamp which identifies and orders a thing within its <ref target="in">local context</ref>.
+               </p>
+               <p>
+                       String values can either be valid <resource name="xsd:NCName"/>¦s or else have the form of a <resource name="xsd:gYearMonth"/> or <resource name="xsd:date"/> with no time·zone component.
+                       These possibilities were selected to ensure that the lexical forms of each type are disjoint.
+               </p>
+               <p>
+                       Because this property is functional, a <resource name="Proxy"/> must be used when local notation depends on a particular context.
+               </p>
+               <p>
+                       Correctly ordering things by local notation involves two steps.
+                       First, the local notation must be split into a tuple of two parts :—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       If it is a string which begins with an underscore and contains another underscore which is followed by a period :—
+                               </p>
+                               <list>
+                                       <item>
+                                               <p>
+                                                       Let <var>base</var> be the portion of the string which follows the initial underscore and precedes the first successive underscore‐period sequence.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       Let <var>mod</var> be the portion of the string which follows that same underscore‐period sequence.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       If <var>mod</var> is not itself a valid canonical representation for some local notation, then the first value of the tuple is the original string, and the second value is the empty string.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       Otherwise, if <var>base</var> is a valid <resource name="xsd:NCName"/> or else has the form of a <resource name="xsd:gYearMonth"/> or <resource name="xsd:date"/> with no time·zone component, then the tuple is {<var>base</var>, <var>mod</var>}.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       Otherwise, if <var>base</var> is the canonical representation of some <resource name="xsd:integer"/> <var>int</var>, then the tuple is {<var>int</var>, <var>mod</var>}.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       Otherwise, make the following modifications to <var>base</var> :—
+                                               </p>
+                                               <list>
+                                                       <item>
+                                                               <p>
+                                                                       Replace all underscores in <var>base</var> with plusses.
+                                                               </p>
+                                                       </item>
+                                                       <item>
+                                                               <p>
+                                                                       If <var>base</var> contains <code>T</code>, replace the first two periods in <var>base</var> which follow <code>T</code> (if present) with colons.
+                                                               </p>
+                                                       </item>
+                                                       <item>
+                                                               <p>
+                                                                       If <var>base</var> ends in a digit, replace the final remaining period in <var>base</var> (if present) with a colon.
+                                                               </p>
+                                                       </item>
+                                               </list>
+                                               <p>
+                                                       If, after making the above substitutions, <var>base</var> is the canonical representation of some <resource name="xsd:dateTimeStamp"/> <var>time</var>, then the tuple is {<var>time</var>, <var>mod</var>}.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       Otherwise, the first value of the tuple is the original string, and the second value is the empty string.
+                                               </p>
+                                       </item>
+                               </list>
+                       </item>
+                       <item>
+                               <p>
+                                       Otherwise, the first value of the tuple is the original string, and the second value is the empty string.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       Then, the values of the tuples can be sorted according to the following rules, with the first part taking priority over the second :—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       Empty strings are always sorted first.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       Integers are sorted by numeric value and come after empty strings.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       Time·stamps and strings which match <resource name="xsd:gYearMonth"/> or <resource name="xsd:date"/> come after integers, and are sorted according to their corresponding “time on timeline” values, with the following modifications :—
+                               </p>
+                               <list>
+                                       <item>
+                                               <p>
+                                                       For <resource name="xsd:gYearMonth"/> values, the missing day component is treated as the first rather than the last day of the month
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       When the “time on timeline” value is the same, <resource name="xsd:gYearMonth"/> sorts before <resource name="xsd:date"/>, and <resource name="xsd:date"/> sorts before <resource name="xsd:dateTimeStamp"/>.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       When the “time on timeline” value is the same for two <resource name="xsd:dateTimeStamp"/> values, they are sorted based on their timezone offsets in ascending order.
+                                               </p>
+                                       </item>
+                               </list>
+                       </item>
+                       <item>
+                               <p>
+                                       Strings which match <resource name="xsd:NCName"/> follow the above, and are sorted lexically by code·point value.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       The above algorithm effectively establishes a special microsyntax in which <code>_base_.mod</code> will always sort after <code>base</code>, regardless of <code>base</code>¦s type.
+                       When <code>base</code> is a <resource name="xsd:dateTimeStamp"/>, a few reversible modifications need to be made in order to satisfy the <resource name="xsd:NCName"/> syntax :—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       Any colons in the time component or time·zone offset must be replaced with periods.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       A plus in the time·zone offset, if present, must be replaced with an underscore.
+                               </p>
+                       </item>
+               </list>
+       </comment>
+       <subPropertyOf>
+               <resource name="dcterms:identifier"/>
+       </subPropertyOf>
+       <domain>
+               <Restriction>
+                       <onProperty>
+                               <resource name="in"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </domain>
+       <range>
+               <Datatype>
+                       <unionOf>
+                               <resource name="xsd:integer"/>
+                               <resource name="xsd:NCName"/>
+                               <Datatype>
+                                       <onDatatype>
+                                               <resource name="xsd:string"/>
+                                       </onDatatype>
+                                       <withRestrictions>
+                                               <pattern>[0-9]{4}(-[0-9]{2}){1,2}</pattern>
+                                       </withRestrictions>
+                               </Datatype>
+                               <resource name="xsd:dateTimeStamp"/>
+                       </unionOf>
+               </Datatype>
+       </range>
+</DatatypeProperty>