Line | 0df7787c056ab2b983e2de4d107c2fa477b7c8f4 | current |
1 | <!DOCTYPE html> | <!DOCTYPE html> |
2 | <html> | <html> |
3 | <head> | <head> |
⋮ | ⋮ | ⋮ |
83 | <hr class="below-title"> | <hr class="below-title"> |
84 | </div> | </div> |
85 | <div class="update-prepend rss-description-exclude"> | <div class="update-prepend rss-description-exclude"> |
86 | <em> ➣ This post was meaningfully revised at 2024-06-20 @ 11:05 AM EDT. The previous revision is <a href="index-oldcommit-f19e4870e2c719f71d2f5024cb3e2e8f477622dc.html">here</a>, diff <a href="index-diff-f19e4870e2c719f71d2f5024cb3e2e8f477622dc-to-current.html">here</a>. (See <a href="index.html#update-history">update history</a>.) <br> | <em> ➣ This post was meaningfully revised at 2024-07-01 @ 02:40 PM EDT. The previous revision is <a href="index-oldcommit-0df7787c056ab2b983e2de4d107c2fa477b7c8f4.html">here</a>, diff <a href="index-diff-0df7787c056ab2b983e2de4d107c2fa477b7c8f4-to-current.html">here</a>. (See <a href="index.html#update-history">update history</a>.) <br> |
87 | ➣ This post is expected to evolve over time. You can subscribe to ongoing updates <a href="index-sprout.rss">here</a>. | ➣ This post is expected to evolve over time. You can subscribe to ongoing updates <a href="index-sprout.rss">here</a>. |
88 | <link rel="alternate" type="application/rss+xml" title="Update to The 'iffy' XML namespace" href="https://tech.interfluidity.com/xml/iffy/index-sprout.rss"></em> | <link rel="alternate" type="application/rss+xml" title="Update to The 'iffy' XML namespace" href="https://tech.interfluidity.com/xml/iffy/index-sprout.rss"></em> |
89 | <hr> | <hr> |
⋮ | ⋮ | ⋮ |
96 | <p><strong>The current version of this namespace is <code>v0.0.1-SNAPSHOT</code>.</strong></p> | <p><strong>The current version of this namespace is <code>v0.0.1-SNAPSHOT</code>.</strong></p> |
97 | <p>(<code>-SNAPSHOT</code> signifies that the version preceding that suffix has not yet been finalized. Much more to come!)</p> | <p>(<code>-SNAPSHOT</code> signifies that the version preceding that suffix has not yet been finalized. Much more to come!)</p> |
98 | <hr> | <hr> |
99 | <p><strong>Table of Contents</strong></p> | <h2><a href="#table-of-contents" id="table-of-contents" name="table-of-contents" class="anchorlink"></a>Table of Contents</h2> |
100 | <ul> | <ul> |
101 | <li><a href="#iffy-completeness"><code>iffy:completeness</code></a></li> | <li><a href="#iffy-completeness"><code>iffy:completeness</code></a></li> |
102 | <li><a href="#iffy-diff"><code>iffy:diff</code></a></li> | <li><a href="#iffy-diff"><code>iffy:diff</code></a></li> |
⋮ | ⋮ | ⋮ |
108 | <li><a href="#iffy-revision"><code>iffy:revision</code></a></li> | <li><a href="#iffy-revision"><code>iffy:revision</code></a></li> |
109 | <li><a href="#iffy-synthetic"><code>iffy:synthetic</code></a></li> | <li><a href="#iffy-synthetic"><code>iffy:synthetic</code></a></li> |
110 | <li><a href="#iffy-type"><code>iffy:type</code></a></li> | <li><a href="#iffy-type"><code>iffy:type</code></a></li> |
111 | | <li><a href="#iffy-uid"><code>iffy:uid</code></a></li> |
112 | <li><a href="#iffy-update"><code>iffy:update</code></a></li> | <li><a href="#iffy-update"><code>iffy:update</code></a></li> |
113 | <li><a href="#iffy-update-history"><code>iffy:update-history</code></a></li> | <li><a href="#iffy-update-history"><code>iffy:update-history</code></a></li> |
114 | </ul> | </ul> |
115 | <hr> | <hr> |
116 | <p><a id="iffy-completeness" href=""></a><strong>Element — <code>iffy:completeness</code></strong></p> | <h2><a href="#element--iffycompleteness-" id="element--iffycompleteness-" name="element--iffycompleteness-" class="anchorlink"></a>Element — <code>iffy:completeness</code> <a id="iffy-completeness" href=""></a></h2> |
117 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
118 | <p><strong>Solely a channel level element</strong></p> | <h3><a href="#solely-a-channel-level-element" id="solely-a-channel-level-element" name="solely-a-channel-level-element" class="anchorlink"></a>Solely a channel level element</h3> |
119 | <p>Contains one of the following four values:</p> | <p>Contains one of the following four values:</p> |
120 | <ol> | <ol> |
121 | <li><code>Ping</code></li> | <li><code>Ping</code></li> |
⋮ | ⋮ | ⋮ |
137 | </ul> | </ul> |
138 | <p>The four values represent nested, hierarchical levels of commitment. <code>Ping</code> commits to nothing more than the spec requires. <code>Media</code> makes every commitment promised by the prior three levels, and an additional one.</p> | <p>The four values represent nested, hierarchical levels of commitment. <code>Ping</code> commits to nothing more than the spec requires. <code>Media</code> makes every commitment promised by the prior three levels, and an additional one.</p> |
139 | <p>If not specified, no commitment is made, the feed should be considered <code>Ping</code>.</p> | <p>If not specified, no commitment is made, the feed should be considered <code>Ping</code>.</p> |
140 | <p><strong>Example:</strong></p> | <h4><a href="#example" id="example" name="example" class="anchorlink"></a>Example:</h4> |
141 | <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?> | <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?> |
142 | | |
143 | <rss version="2.0" xmlns:iffy="http://tech.interfluidity.com/xml/iffy/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"> | <rss version="2.0" xmlns:iffy="http://tech.interfluidity.com/xml/iffy/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"> |
⋮ | ⋮ | ⋮ |
155 | </code></pre> | </code></pre> |
156 | </div> | </div> |
157 | <hr> | <hr> |
158 | <p><a id="iffy-diff" href=""></a><strong>Element — <code>iffy:diff</code></strong></p> | <h2><a href="#element--iffydiff-" id="element--iffydiff-" name="element--iffydiff-" class="anchorlink"></a>Element — <code>iffy:diff</code> <a id="iffy-diff" href=""></a></h2> |
159 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
160 | <p><strong>When a subelement of <a href="#iffy-update-history"><code>iffy:update</code></a></strong></p> | <h3><a href="#when-a-subelement-of-iffyupdate" id="when-a-subelement-of-iffyupdate" name="when-a-subelement-of-iffyupdate" class="anchorlink"></a>When a subelement of <a href="#iffy-update"><code>iffy:update</code></a></h3> |
161 | <p>MUST contain a URL, URI, or <a href="https://datatracker.ietf.org/doc/html/rfc3987">IRI</a> of a human-reviewable a <a href="https://en.wikipedia.org/wiki/Diff"><em>diff</em></a> of the current updated and <em>the final minor revision</em> of the update prior (or of the initially published post, if the current update is the first declared update).</p> | <p>MUST contain a URL, URI, or <a href="https://datatracker.ietf.org/doc/html/rfc3987">IRI</a> of a human-reviewable a <a href="https://en.wikipedia.org/wiki/Diff"><em>diff</em></a> of the current updated and <em>the final minor revision</em> of the update prior (or of the initially published post, if the current update is the first declared update).</p> |
162 | <p><strong>Example</strong>:</p> | <h4><a href="#example-1" id="example-1" name="example-1" class="anchorlink"></a>Example:</h4> |
163 | <pre><code class="language-xml"><iffy:diff>https://tech.interfluidity.com/xml/iffy/index-diff-394986cb8d9c57f567d324e691a44d50102101ce-to-13de0232319ceab2f830591c318089d18cbec78d.html</iffy:diff> | <pre><code class="language-xml"><iffy:diff>https://tech.interfluidity.com/xml/iffy/index-diff-394986cb8d9c57f567d324e691a44d50102101ce-to-13de0232319ceab2f830591c318089d18cbec78d.html</iffy:diff> |
164 | </code></pre> | </code></pre> |
165 | <p>See also <a href="#iffy-update-history"><code>iffy:update-history</code> example</a>.</p> | <p>See also <a href="#iffy-update-history"><code>iffy:update-history</code> example</a>.</p> |
166 | </div> | </div> |
167 | <hr> | <hr> |
168 | <p><a id="iffy-hint-announce" href=""></a><strong>Element — <code>iffy:hint-announce</code></strong></p> | <h2><a href="#element--iffyhint-announce-" id="element--iffyhint-announce-" name="element--iffyhint-announce-" class="anchorlink"></a>Element — <code>iffy:hint-announce</code> <a id="iffy-hint-announce" href=""></a></h2> |
169 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
170 | <p><strong>When a subelement of <code>item</code></strong></p> | <h3><a href="#when-a-subelement-of-item" id="when-a-subelement-of-item" name="when-a-subelement-of-item" class="anchorlink"></a>When a subelement of <code>item</code></h3> |
171 | <p>Represents a <em>hint</em> to RSS consumers that "push" — announce, rebroadcast, or notify — items whether this item should be so pushed. Consumers are free to ignore this hint or make use of it as they wish.</p> | <p>Represents a <em>hint</em> to RSS consumers that "push" — announce, rebroadcast, or notify — items whether this item should be so pushed. Consumers are free to ignore this hint or make use of it as they wish.</p> |
172 | <p>MUST contain an <a href="#iffy-policy"><code>iffy:policy</code></a> element, whose values MUST BE one of</p> | <p>MUST contain an <a href="#iffy-policy"><code>iffy:policy</code></a> element, whose values MUST BE one of</p> |
173 | <ul> | <ul> |
⋮ | ⋮ | ⋮ |
178 | <p>MAY contain an <a href="#iffy-restriction"><code>iffy:restriction</code></a> element, which represents an application-specific restriction over the consumers to which it is addressed. No restrictions are placed on the content of the <code>iffy:restriction</code> element. Applications can define restrictions as they see fit.</p> | <p>MAY contain an <a href="#iffy-restriction"><code>iffy:restriction</code></a> element, which represents an application-specific restriction over the consumers to which it is addressed. No restrictions are placed on the content of the <code>iffy:restriction</code> element. Applications can define restrictions as they see fit.</p> |
179 | <p>An <code>iffy:hint-announce</code> element with NO <code>iffy:restriction</code> or an empty <code>iffy:restriction</code> tag should be interpreted as the intended default for ALL applications not addressed by an <code>iffy:hint-announce</code> with a more specific restriction.</p> | <p>An <code>iffy:hint-announce</code> element with NO <code>iffy:restriction</code> or an empty <code>iffy:restriction</code> tag should be interpreted as the intended default for ALL applications not addressed by an <code>iffy:hint-announce</code> with a more specific restriction.</p> |
180 | <p>Multiple <code>iffy:hint-announce</code> elements may be placed within a single <code>item</code>, provided that only one has an omitted or empty <code>iffy:restriction</code>, and all <code>iffy:hint-announce</code> elements containing an <code>iffy:restriction</code> contain a unique restriction. Each <code>iffy:restriction</code> SHOULD apply to nonoverlapping application-specific contexts. If that is not the case, how applications prioritize or respond to conflicting <code>iffy-hint-announce</code> elements whose restrictions both apply must be determined by the application.</p> | <p>Multiple <code>iffy:hint-announce</code> elements may be placed within a single <code>item</code>, provided that only one has an omitted or empty <code>iffy:restriction</code>, and all <code>iffy:hint-announce</code> elements containing an <code>iffy:restriction</code> contain a unique restriction. Each <code>iffy:restriction</code> SHOULD apply to nonoverlapping application-specific contexts. If that is not the case, how applications prioritize or respond to conflicting <code>iffy-hint-announce</code> elements whose restrictions both apply must be determined by the application.</p> |
181 | <p><strong>Example</strong>:</p> | <h4><a href="#example-2" id="example-2" name="example-2" class="anchorlink"></a>Example:</h4> |
182 | <pre><code class="language-xml"><iffy:hint-announce> | <pre><code class="language-xml"><iffy:hint-announce> |
183 | <iffy:policy>Piggyback</iffy:policy> | <iffy:policy>Piggyback</iffy:policy> |
184 | </iffy:hint-announce> | </iffy:hint-announce> |
185 | </code></pre> | </code></pre> |
186 | </div> | </div> |
187 | <hr> | <hr> |
188 | <p><a id="iffy-initial" href=""></a><strong>Element — <code>iffy:initial</code></strong></p> | <h2><a href="#element--iffyinitial-" id="element--iffyinitial-" name="element--iffyinitial-" class="anchorlink"></a>Element — <code>iffy:initial</code> <a id="iffy-initial" href=""></a></h2> |
189 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
190 | <p><strong>When a subelement of <a href="#iffy-update-history"><code>iffy:update-history</code></a></strong></p> | <p>In general, describes the initial state of the item referred to by the element that contains it.</p> |
191 | <p>MAY contain a sequence of <a href="https://www.rssboard.org/rss-profile#namespace-elements-dublin-creator"><code>dc:creator</code></a> elements, defining the initial authorship of an item, if authorship has changed. Since the containing <code>item</code> should always reflect current authorship (that of the most recent revision), but no <a href="#iffy-update"><code>iffy:update</code></a> element is defined for the initially published version, this container is required for completeness.</p> | <p>MAY contain any or all of</p> |
192 | <p><strong>Example</strong>:</p> | <ul> |
193 | | <li>an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.14"><code>atom:title</code></a> element, containing the initial title of the item, which may have since been revised.</li> |
194 | | <li>an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.14"><code>atom:link</code></a> element, containing the initial link to the item, which may have since been revised.</li> |
195 | | <li>an <a href="#iffy-uid"><code>iffy:uid</code></a> element, containing the <a href="https://www.rssboard.org/rss-specification#ltguidgtSubelementOfLtitemgt"><code>guid</code></a> of the item that has been updated.</li> |
196 | | <li>an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.9"><code>atom:published</code></a> element containing the date-time of initial publication</li> |
197 | | <li>a sequence of <a href="https://www.rssboard.org/rss-profile#namespace-elements-dublin-creator"><code>dc:creator</code></a> elements, describing the initial authorship of an item, which may since have been revised.</li> |
198 | | </ul> |
199 | | <p><em><strong>Note:</strong> We define an <a href="#iffy-uid"><code>iffy:uid</code></a> element, rather than rely upon <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.6"><code>atom:id</code></a>, because <code>atom:id</code> requires that its contents be an IRI, but we mean to impose no such restriction.</em></p> |
200 | | <h3><a href="#when-a-subelement-of-item--iffyupdate-history" id="when-a-subelement-of-item--iffyupdate-history" name="when-a-subelement-of-item--iffyupdate-history" class="anchorlink"></a>When a subelement of <code>item</code> > <a href="#iffy-update-history"><code>iffy:update-history</code></a></h3> |
201 | | <p>An <code>iffy:initial</code> MAY BE included under <code>item</code> > <a href="#iffy-update-history"><code>iffy:update-history</code></a>, but is recommended ONLY IF the title, authorship, or link have changed.</p> |
202 | | <p>Since <code>item</code> > <code>guid</code> and <code>item</code> > <code>pubDate</code> never change, generators SHOULD NOT include these items under <code>item</code> > <code>iffy:update-history</code>. They are available directly in the containing item.</p> |
203 | | <h4><a href="#example-3" id="example-3" name="example-3" class="anchorlink"></a>Example:</h4> |
204 | <pre><code class="language-xml"><iffy:initial> | <pre><code class="language-xml"><iffy:initial> |
205 | <!-- Perhaps more recent updates, and the current item, include more authors --> | <!-- Perhaps more recent updates, and the current item, include more authors --> |
206 | <dc:creator>First Author, Esq.</dc:creator> | <dc:creator>First Author, Esq.</dc:creator> |
207 | </iffy:initial> | </iffy:initial> |
208 | </code></pre> | </code></pre> |
209 | | <h3><a href="#when-a-subelement-of-item--iffysynthetic--iffyupdate-and-iffytype-of-the-synthetic-element-is-updateannouncement" id="when-a-subelement-of-item--iffysynthetic--iffyupdate-and-iffytype-of-the-synthetic-element-is-updateannouncement" name="when-a-subelement-of-item--iffysynthetic--iffyupdate-and-iffytype-of-the-synthetic-element-is-updateannouncement" class="anchorlink"></a>When a subelement of <code>item</code> > <a href="#iffy-synthetic"><code>iffy:synthetic</code></a> > <a href="#iffy-update"><code>iffy:update</code></a> AND <a href="#iffy-type"><code>iffy:type</code></a> of the synthetic element is <code>UpdateAnnouncement</code></h3> |
210 | | <p>An <code>iffy:initial</code> MUST BE provided containing all of the analogous values defined in the <code>item</code> <em>whose update the announcement describes</em>.</p> |
211 | | <p>This information <em>would not be otherwise available</em>, because values in the parent <code>item</code> describe the <em>synthetic update announcement post</em>, rather than the post whose update is announced.</p> |
212 | | <ul> |
213 | | <li>If an <code>item</code> > <code>title</code> is defined in the post that was updated, that MUST BE recorded as <code>atom:title</code></li> |
214 | | <li>If an <code>item</code> > <code>link</code> is defined in the post that was updated, that MUST BE recorded as <code>atom:link</code></li> |
215 | | <li>If an <code>item</code> > <code>guid</code> is defined in the post that was updated, that MUST BE recorded as <code>iffy:uid</code></li> |
216 | | <li>If an <code>item</code> > <code>pubDate</code> is defined in the post that was updated, that MUST BE recorded as <code>atom:published</code></li> |
217 | | <li>If an <code>item</code> > <code>dc:creator</code> is defined in the post that was updated, that MUST BE recorded as <code>dc:creator</code> If, in the post that was updated, authorship was defined using <code>item</code> > <code>author</code> or <code>item</code> > <code>atom:author</code> those items should be converted into a form appropriate for <code>dc:creator</code> elements.</li> |
218 | | </ul> |
219 | | <h4><a href="#example-4" id="example-4" name="example-4" class="anchorlink"></a>Example:</h4> |
220 | | <pre><code class="language-xml"><item> |
221 | | <pubDate>Thu, 20 Jun 2024 13:10:00 -0400</pubDate> |
222 | | <guid isPermalink="true"> |
223 | | https://tech.interfluidity.com/2024/01/29/feedletter-tutorial/index-updated-2024-06-20-13-10-00.html |
224 | | </guid> |
225 | | <link>https://tech.interfluidity.com/2024/01/29/feedletter-tutorial/index-updated-2024-06-20-13-10-00.html</link> |
226 | | <title>Updated: Feedletter tutorial</title> |
227 | | <!-- other item elements --> |
228 | | <iffy:synthetic> |
229 | | <iffy:type>UpdateAnnouncement</iffy:type> |
230 | | <iffy:update> |
231 | | <atom:updated>2024-06-20T17:10:00Z</atom:updated> |
232 | | <!-- other iffy:updated elements --> |
233 | | <iffy:initial> |
234 | | <atom:title><![CDATA[Feedletter tutorial]]></atom:title> |
235 | | <atom:link href="https://tech.interfluidity.com/2024/01/29/feedletter-tutorial/index.html"/> |
236 | | <iffy:uid>https://tech.interfluidity.com/2024/01/29/feedletter-tutorial/index.html</iffy:uid> |
237 | | <atom:published>2024-01-29T15:30:00Z</atom:published> |
238 | | <dc:creator><![CDATA[Steve Randy Waldman]]></dc:creator> |
239 | | </iffy:initial> |
240 | | </iffy:update> |
241 | | </iffy:synthetic> |
242 | | <dc:creator><![CDATA[Update-o-Bot]]></dc:creator> |
243 | | </item> |
244 | | </code></pre> |
245 | | <h3><a href="#when-a-subelement-of-item--iffysynthetic--iffyupdate-history-and-iffytype-of-the-synthetic-element-is-updatecumulation-" id="when-a-subelement-of-item--iffysynthetic--iffyupdate-history-and-iffytype-of-the-synthetic-element-is-updatecumulation-" name="when-a-subelement-of-item--iffysynthetic--iffyupdate-history-and-iffytype-of-the-synthetic-element-is-updatecumulation-" class="anchorlink"></a>When a subelement of <code>item</code> > <a href="#iffy-synthetic"><code>iffy:synthetic</code></a> > <a href="#iffy-update-history"><code>iffy:update-history</code></a> AND <a href="#iffy-type"><code>iffy:type</code></a> of the synthetic element is <code>UpdateCumulation</code> <a id="iffy-initial-update-cumulation" href=""></a></h3> |
246 | | <p>An <code>iffy:initial</code> MUST BE provided containing all of the analogous values defined in the <code>item</code> <em>whose update the announcement describes</em>.</p> |
247 | | <p>This information <em>would not be otherwise available</em>, because values in the parent <code>item</code> describe the <em>synthetic update cumulation (summary) post</em>, rather than the post whose update history is documented.</p> |
248 | | <ul> |
249 | | <li>If an <code>item</code> > <code>title</code> is defined in the post that was updated, that MUST BE recorded as <code>atom:title</code></li> |
250 | | <li>If an <code>item</code> > <code>link</code> is defined in the post that was updated, that MUST BE recorded as <code>atom:link</code></li> |
251 | | <li>If an <code>item</code> > <code>guid</code> is defined in the post that was updated, that MUST BE recorded as <code>iffy:uid</code></li> |
252 | | <li>If an <code>item</code> > <code>pubDate</code> is defined in the post that was updated, that MUST BE recorded as <code>atom:published</code></li> |
253 | | <li>If an <code>item</code> > <code>dc:creator</code> is defined in the post that was updated, that MUST BE recorded as <code>dc:creator</code> If, in the post that was updated, authorship was defined using <code>item</code> > <code>author</code> or <code>item</code> > <code>atom:author</code> those items should be converted into a form appropriate for <code>dc:creator</code> elements.</li> |
254 | | </ul> |
255 | </div> | </div> |
256 | <hr> | <hr> |
257 | <p><a id="iffy-policy" href=""></a><strong>Element — <code>iffy:policy</code></strong></p> | <h2><a href="#element--iffypolicy-" id="element--iffypolicy-" name="element--iffypolicy-" class="anchorlink"></a>Element — <code>iffy:policy</code> <a id="iffy-policy" href=""></a></h2> |
258 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
259 | <p>In general, represents a statement of some kind of policy with respect to its containing element, suggested to feed consumers for handling a feed or item.</p> | <p>In general, represents a statement of some kind of policy with respect to its containing element, suggested to feed consumers for handling a feed or item.</p> |
260 | <p><strong>When a subelement of <a href="#iffy-hint-announce"><code>iffy:hint-announce</code></a></strong></p> | <h3><a href="#when-a-subelement-of-iffyhint-announce" id="when-a-subelement-of-iffyhint-announce" name="when-a-subelement-of-iffyhint-announce" class="anchorlink"></a>When a subelement of <a href="#iffy-hint-announce"><code>iffy:hint-announce</code></a></h3> |
261 | <p>Please see <a href="#iffy-hint-announce"><code>iffy:hint-announce</code></a>.</p> | <p>Please see <a href="#iffy-hint-announce"><code>iffy:hint-announce</code></a>.</p> |
262 | </div> | </div> |
263 | <hr> | <hr> |
264 | <p><a id="iffy-provenance" href=""></a><strong>Element — <code>iffy:provenance</code></strong></p> | <h2><a href="#element--iffyprovenance-" id="element--iffyprovenance-" name="element--iffyprovenance-" class="anchorlink"></a>Element — <code>iffy:provenance</code> <a id="iffy-provenance" href=""></a></h2> |
265 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
266 | <p><strong>When an item level element</strong></p> | <p>In general, this element tracks the provenance of a feed or item. It can be at the <code>channel</code>-level or at the <code>item</code>-level. Also, <code>iffy:provenance</code> elements can be nested within <code>iffy:provenance</code> elements (see below).</p> |
267 | <p>If present in an item, the item contains a sequence of one or more <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> elements, each of whose</p> | <h3><a href="#when-no-shape-attribute-is-set-or-shapesequence" id="when-no-shape-attribute-is-set-or-shapesequence" name="when-no-shape-attribute-is-set-or-shapesequence" class="anchorlink"></a>When no <code>shape</code> attribute is set, or <code>shape="sequence"</code></h3> |
268 | | <p><code>iffy:provenance</code> elements of shape <code>sequence</code> (the default) contain</p> |
269 | <ul> | <ul> |
270 | <li><code>rel</code> attribute is MUST BE <code>via</code></li> | <li>a sequence of one or more <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> elements, each of whose |
271 | <li><code>href</code> attribute MUST BE the URL of an RSS feed from which the base contents of this item were drawn</li> | <ul> |
272 | <li><code>type</code> attribute SHOULD BE <code>application/rss+xml</code></li> | <li><code>rel</code> attribute is MUST BE <code>via</code></li> |
273 | | <li><code>href</code> attribute MUST BE the URL of an RSS feed from which the base contents of this item were drawn</li> |
274 | | <li><code>type</code> attribute SHOULD BE <code>application/rss+xml</code></li> |
275 | | </ul></li> |
276 | | <li>optionally, a terminating <code>iffy:provenance</code> whose shape attribute is set to <code>merge</code></li> |
277 | </ul> | </ul> |
278 | <p>If the item from which the current item was sourced does not contain an <code>iffy:provenance</code>, then the current item should include just one <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a>.</p> | <p>If the item or channel from which the current item or channel was sourced does not contain an <code>iffy:provenance</code>, then the current item should include just one <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a>.</p> |
279 | <p>If the item from which the current item was sourced <em>does</em> contains an <code>iffy:provenance</code>, then the current feed SHOULD include all items of that element, with the URL of the feed from which the item was sourced PREPENDED.</p> | <p>If the item from which the current item was sourced <em>does</em> contains an <code>iffy:provenance</code>:</p> |
280 | <p>This will ensure the most immediate source will be the first <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> element. The origin — or at least the source for which no further provenance is known — will be the last <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> element.</p> | <ul> |
281 | <p>Processors may expect a channel level <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> element with <code>rel="self"</code> and <code>type="application/rss+xml"</code> to use as the basis for provenance in source documents. See <a href="https://www.rssboard.org/rss-profile#namespace-elements-atom-link">RSS Best Practices</a>.</p> | <li> |
282 | <p><strong>Example</strong> (from <a href="https://www.interfluidity.com/unify-rss/all-blogs.rss">here</a>):</p> | <p>If the contained <code>iffy:provenance</code> has no <code>shape</code> attribute set, or if <code>shape</code> is set to <code>sequence</code>, then the current feed SHOULD include all items of that element, with the URL of the feed from which the item was sourced PREPENDED as an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a>. This will ensure the most immediate source will be the first <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> element. The origin — or at least the source for which no further provenance is known — will be the last <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> or <code>iffy:provenance</code> subelement.</p></li> |
283 | | <li> |
284 | | <p>If the contained <code>iffy:provenance</code> has a <code>shape</code> attribute set to <code>merge</code>, then the full element should be included as a subelement, after an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> to its source.</p></li> |
285 | | </ul> |
286 | | <p>If one is present, processors SHOULD use a channel level <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> element with <code>rel="self"</code> and <code>type="application/rss+xml"</code> to as the basis for provenance in source documents. See <a href="https://www.rssboard.org/rss-profile#namespace-elements-atom-link">RSS Best Practices</a>. However, if no such <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> is available at the <code>channel</code> level, processes may default to the URL by which they accessed the source.</p> |
287 | | <h4><a href="#example-from-here" id="example-from-here" name="example-from-here" class="anchorlink"></a>Example (from <a href="https://www.interfluidity.com/unify-rss/all-blogs.rss">here</a>):</h4> |
288 | <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?> | <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?> |
289 | | |
290 | <rss version="2.0" xmlns:iffy="http://tech.interfluidity.com/xml/iffy/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/"> | <rss version="2.0" xmlns:iffy="http://tech.interfluidity.com/xml/iffy/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/"> |
⋮ | ⋮ | ⋮ |
305 | </channel> | </channel> |
306 | </rss> | </rss> |
307 | </code></pre> | </code></pre> |
308 | | <h3><a href="#when-the-shape-attribute-is-set-to-merge" id="when-the-shape-attribute-is-set-to-merge" name="when-the-shape-attribute-is-set-to-merge" class="anchorlink"></a>When the <code>shape</code> attribute is set to <code>merge</code></h3> |
309 | | <p><code>iffy:provenance</code> elements of shape <code>merge</code> describe an <code>item</code> or <code>channel</code> that has derived from multiple sources. When <code>shape="merge"</code>, the ordering of items within <code>iffy:provenance</code> is not significant.</p> |
310 | | <p>Any <code>iffy:provenance</code> element of shape <code>merge</code> can contain any number of <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> and <code>iffy:provenance</code> of shape <code>sequence</code>, or with no <code>shape</code> attribute set.</p> |
311 | | <p>When merging items or feeds whose provenance is itself the result of a merge, processors SHOULD bring what would become elements of a nested <code>iffy:provenance</code> with <code>shape="merge"</code> into the top-level merge.</p> |
312 | | <p>In other words, <code>iffy:provenance</code> elements with shape <code>merge</code> should not be <strong>directly</strong> nested, one inside the other. Elements of the inner <code>iffy:provenance</code> with <code>shape="merge"</code> should be flattened into the outer <code>iffy:provenance</code> with <code>shape="merge"</code>.</p> |
313 | | <p><code>iffy:provenance</code> elements with shape <code>merge</code> CAN and SHOULD be <strong>indirectly</strong> nested, when a merge brings in an <code>iffy:provenance</code> element of shape <code>sequence</code> (or no shape set), which then includes a nested <code>iffy:provenance</code> elements with shape <code>merge</code>.</p> |
314 | </div> | </div> |
315 | <hr> | <hr> |
316 | <p><a id="iffy-restriction" href=""></a><strong>Element — <code>iffy:restriction</code></strong></p> | <h2><a href="#element--iffyrestriction-" id="element--iffyrestriction-" name="element--iffyrestriction-" class="anchorlink"></a>Element — <code>iffy:restriction</code> <a id="iffy-restriction" href=""></a></h2> |
317 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
318 | <p>In general, represents an expressin of some kind of restriction over the application of its containing element.</p> | <p>In general, represents an expression of some kind of restriction over the application of its containing element.</p> |
319 | <p><strong>When a subelement of <a href="#iffy-hint-announce"><code>iffy:hint-announce</code></a></strong></p> | <h3><a href="#when-a-subelement-of-iffyhint-announce-1" id="when-a-subelement-of-iffyhint-announce-1" name="when-a-subelement-of-iffyhint-announce-1" class="anchorlink"></a>When a subelement of <a href="#iffy-hint-announce"><code>iffy:hint-announce</code></a></h3> |
320 | <p>Please see <a href="#iffy-hint-announce"><code>iffy:hint-announce</code></a>.</p> | <p>Please see <a href="#iffy-hint-announce"><code>iffy:hint-announce</code></a>.</p> |
321 | </div> | </div> |
322 | <hr> | <hr> |
323 | <p><a id="iffy-revision" href=""></a><strong>Element — <code>iffy:revision</code></strong></p> | <h2><a href="#element--iffyrevision-" id="element--iffyrevision-" name="element--iffyrevision-" class="anchorlink"></a>Element — <code>iffy:revision</code> <a id="iffy-revision" href=""></a></h2> |
324 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
325 | <p>MUST contain a URL, URI, or <a href="https://datatracker.ietf.org/doc/html/rfc3987">IRI</a> of a either a fixed past revision or the current (potentially evolving) revision of an item.</p> | <p>MUST contain a URL, URI, or <a href="https://datatracker.ietf.org/doc/html/rfc3987">IRI</a> of a either a fixed past revision or the current (potentially evolving) revision of an item.</p> |
326 | <p><strong>Example</strong>:</p> | <p><strong>Example</strong>:</p> |
327 | <pre><code class="language-xml"><iffy:revision>https://tech.interfluidity.com/xml/iffy/index-oldcommit-13de0232319ceab2f830591c318089d18cbec78d.html</iffy:revision> | <pre><code class="language-xml"><iffy:revision>https://tech.interfluidity.com/xml/iffy/index-oldcommit-13de0232319ceab2f830591c318089d18cbec78d.html</iffy:revision> |
328 | </code></pre> | </code></pre> |
329 | <p>See also <a href="#iffy-update-history"><code>iffy:update-history</code> example</a>.</p> | <p>See <a href="#iffy-update-history"><code>iffy:update-history</code> example</a>.</p> |
330 | </div> | </div> |
331 | <hr> | <hr> |
332 | <p><a id="iffy-synthetic" href=""></a><strong>Element — <code>iffy:synthetic</code></strong></p> | <h2><a href="#element--iffysynthetic-" id="element--iffysynthetic-" name="element--iffysynthetic-" class="anchorlink"></a>Element — <code>iffy:synthetic</code> <a id="iffy-synthetic" href=""></a></h2> |
333 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
334 | <p>This element is intended to mark channels or items that are in some sense "synthetic", rather than, um, hand-made?</p> | <p>This element marks channels or items that are in some sense automated or "synthetic".</p> |
335 | <p>Can optionally contain an <a href="#iffy-type"><code>iffy-type</code></a>, and other type-specific subelements.</p> | <p>SHOULD contain an <a href="#iffy-type"><code>iffy-type</code></a>, and then other type-specific subelements.</p> |
336 | <p><strong>When a subelement of <code>channel</code></strong></p> | <h3><a href="#when-a-subelement-of-channel" id="when-a-subelement-of-channel" name="when-a-subelement-of-channel" class="anchorlink"></a>When a subelement of <code>channel</code></h3> |
337 | <p>If <em>all the items</em> in a feed are automatically rather than human generated (however you want to define that), <code>iffy:synthetic</code> can mark an entire channel as synthetic, bot-produced.</p> | <p><code>channel</code> > <code>iffy:synthetic</code> implies that ALL of the items in the channel are synthetic or automatically produced. An aggregation or curation of human-authored items SHOULD NOT be marked <code>iffy:synthetic</code>.</p> |
338 | <p>Applications that include <code>iffy:synthetic</code> as a direct child of channel SHOULD NOT also mark individual <code>item</code>s as <code>iffy:synthetic</code>, unless there is some meaningful sense in which some items are <em>more</em> synthetic than others. It serves no purpose to mark every item of a feed <code>iffy:synthetic</code> when the channel is already so marked.</p> | |
339 | <p>Known types:</p> | <p>Known types:</p> |
340 | <ul> | <ul> |
341 | <li> | <li><code>ItemUpdateFeed</code> — A synthetic feed announcing updates of a particular logical item from another feed.</li> |
342 | <p><code>ItemUpdateFeed</code> — A synthetic feed announcing updates of a particular logical item from another feed.</p> | |
343 | <p>Elements SHOULD also include an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> with <code>rel</code> attribute set to <code>related</code>, pointing to the same resource as the <code>link</code> element of the item whose updates are being announced.</p></li> | |
344 | </ul> | </ul> |
345 | <p><strong>When a subelement of <code>item</code></strong></p> | <h3><a href="#when-a-subelement-of-channel-and-iffytype-is-itemupdatefeed" id="when-a-subelement-of-channel-and-iffytype-is-itemupdatefeed" name="when-a-subelement-of-channel-and-iffytype-is-itemupdatefeed" class="anchorlink"></a>When a subelement of <code>channel</code> AND <a href="#iffy-type"><code>iffy:type</code></a> is <code>ItemUpdateFeed</code></h3> |
346 | <p>Marks items as "synthetic", that is <em>more</em> synthetic than other, unmarked items in the feed.</p> | <p>SHOULD include an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> with <code>rel</code> attribute set to <code>related</code>, pointing to the same resource as the <code>link</code> element of the item whose updates are being announced.</p> |
347 | <p>Exactly what that means is not defined, but it should be <em>relative to the other items in the feed</em>. If every item in a feed is automatically generated — suppose a weather feed, announcing conditions on the hour — then those items should NOT be marked <code>iffy:synthetic</code>, because they are the usual for the feed. The <code>channel</code> as a whole might be marked <code>iffy:synthetic</code>.</p> | <h4><a href="#example-5" id="example-5" name="example-5" class="anchorlink"></a>Example:</h4> |
348 | <p>When <code>iffy:synthetic</code> is a subelement of <code>item</code>, it is intended to <em>distinguish</em> more automatic from less automatically produced items. It serves no purpose if it is used to mark all items.</p> | |
349 | <p>Known types:</p> | |
350 | <ul> | |
351 | <li><code>UpdateAnnouncement</code> — A synethetic item marking an update of an older item in the feed (or that once would have been in the feed)</li> | |
352 | </ul> | |
353 | <p><strong>Example — <code>channel > iffy:synthetic > iffy:type (ItemUpdateFeed)</code></strong>:</p> | |
354 | <pre><code class="language-xml"> <channel> | <pre><code class="language-xml"> <channel> |
355 | <!-- other channel elements --> | <!-- other channel elements --> |
356 | <iffy:synthetic> | <iffy:synthetic> |
357 | <iffy:type>ItemUpdateFeed</iffy:type> | <iffy:type>ItemUpdateFeed</iffy:type> |
358 | <atom:link rel="related" href="https://tech.interfluidity.com/xml/iffy/index.html"/> | <atom:link rel="related" href="https://tech.interfluidity.com/xml/iffy/index.html"/> |
359 | </iffy:synthetic> | </iffy:synthetic> |
360 | </channel> | </channel> |
361 | </code></pre> | </code></pre> |
362 | <p><strong>Example — <code>item > iffy:synthetic > iffy:type (UpdateAnnouncement)</code></strong>:</p> | <h3><a href="#when-a-subelement-of-item-1" id="when-a-subelement-of-item-1" name="when-a-subelement-of-item-1" class="anchorlink"></a>When a subelement of <code>item</code></h3> |
363 | <pre><code class="language-xml"> <item> | <p>The <code>iffy:synthetic</code> element of an <code>item</code> SHOULD contain — in some form of parsable XML — all the data from which the item content (as reflected in <code>item</code> > <code>content:encoded</code> or <code>item</code> > <code>atom:content</code>) has been generated.</p> |
364 | <!-- other item elements --> | <p>Consumers may opt to ignore these content items, and use the data from <code>iffy:synthetic</code> for custom renderings or further processing.</p> |
365 | <iffy:synthetic> | <p>Known types:</p> |
366 | <iffy:type>UpdateAnnouncement</iffy:type> | <ul> |
367 | </iffy:synthetic> | <li><code>UpdateAnnouncement</code> — A synthetic item marking an update of an older item in the feed (or that once would have been in the feed)</li> |
368 | </item> | <li><code>UpdateCumulation</code> — A synthetic item describing an aggregation of updates, which may include updates of multiple items, and multiple updates for each item.</li> |
369 | | </ul> |
370 | | <h3><a href="#when-a-subelement-of-item-and-iffytype-is-updateannouncement" id="when-a-subelement-of-item-and-iffytype-is-updateannouncement" name="when-a-subelement-of-item-and-iffytype-is-updateannouncement" class="anchorlink"></a>When a subelement of <code>item</code> AND <a href="#iffy-type"><code>iffy:type</code></a> is <code>UpdateAnnouncement</code></h3> |
371 | | <p>In addition to <code>iffy:type</code>, MUST contain an <a href="#iffy-update"><code>iffy:update</code></a> element, which in turn MUST contain an <a href="#iffy-initial"><code>iffy:initial</code></a> element describing the initial state of the updated post.</p> |
372 | | <h4><a href="#example-6" id="example-6" name="example-6" class="anchorlink"></a>Example:</h4> |
373 | | <pre><code class="language-xml"><item> |
374 | | <pubDate>Thu, 20 Jun 2024 13:10:00 -0400</pubDate> |
375 | | <guid isPermalink="true"> |
376 | | https://tech.interfluidity.com/2024/01/29/feedletter-tutorial/index-updated-2024-06-20-13-10-00.html |
377 | | </guid> |
378 | | <link>https://tech.interfluidity.com/2024/01/29/feedletter-tutorial/index-updated-2024-06-20-13-10-00.html</link> |
379 | | <title>Updated: Feedletter tutorial</title> |
380 | | <!-- other item elements --> |
381 | | <iffy:synthetic> |
382 | | <iffy:type>UpdateAnnouncement</iffy:type> |
383 | | <iffy:update> |
384 | | <atom:updated>2024-06-20T17:10:00Z</atom:updated> |
385 | | <atom:summary> |
386 | | <![CDATA[Add note to Section 16, "Advanced: Customize the content" documenting <i>feedletter</i> API changes that slightly modify this section of the tutorial.]]> |
387 | | </atom:summary> |
388 | | <iffy:revision> |
389 | | https://tech.interfluidity.com/2024/01/29/feedletter-tutorial/index-oldcommit-acb84c08c1bbcc83036b9cad70f6a3c5d60865c4.html |
390 | | </iffy:revision> |
391 | | <iffy:diff> |
392 | | https://tech.interfluidity.com/2024/01/29/feedletter-tutorial/index-diff-acb84c08c1bbcc83036b9cad70f6a3c5d60865c4-to-current.html |
393 | | </iffy:diff> |
394 | | <iffy:initial> |
395 | | <atom:title><![CDATA[Feedletter tutorial]]></atom:title> |
396 | | <atom:link href="https://tech.interfluidity.com/2024/01/29/feedletter-tutorial/index.html"/> |
397 | | <iffy:uid>https://tech.interfluidity.com/2024/01/29/feedletter-tutorial/index.html</iffy:uid> |
398 | | <atom:published>2024-01-29T15:30:00Z</atom:published> |
399 | | <dc:creator><![CDATA[Steve Randy Waldman]]></dc:creator> |
400 | | </iffy:initial> |
401 | | </iffy:update> |
402 | | </iffy:synthetic> |
403 | | <dc:creator><![CDATA[Update-o-Bot]]></dc:creator> |
404 | | <content:encoded><!-- generated HTML content --></content:encoded> |
405 | | </item> |
406 | </code></pre> | </code></pre> |
407 | </div> | </div> |
408 | <hr> | <hr> |
409 | <p><a id="iffy-type" href=""></a><strong>Element — <code>iffy:type</code></strong></p> | <h2><a href="#element--iffytype-" id="element--iffytype-" name="element--iffytype-" class="anchorlink"></a>Element — <code>iffy:type</code> <a id="iffy-type" href=""></a></h2> |
410 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
411 | <p>In general, marks the "type" of its containing element.</p> | <p>In general, marks the "type" of its containing element.</p> |
412 | <p><strong>When a subelement of <code>channel</code> > <a href="#iffy-synthetic"><code>iffy:synthetic</code></a></strong></p> | <h3><a href="#when-a-subelement-of-channel--iffysynthetic" id="when-a-subelement-of-channel--iffysynthetic" name="when-a-subelement-of-channel--iffysynthetic" class="anchorlink"></a>When a subelement of <code>channel</code> > <a href="#iffy-synthetic"><code>iffy:synthetic</code></a></h3> |
413 | <p>Marks what kind of synthetic channel its parent is. Currently known values include</p> | <p>Marks what kind of synthetic channel its parent is. Currently known values include</p> |
414 | <ul> | <ul> |
415 | <li><code>ItemUpdateFeed</code> — A synthetic feed announcing updates of a particular logical item from another feed.</li> | <li><code>ItemUpdateFeed</code> — A synthetic feed announcing updates of a particular logical item from another feed.</li> |
416 | </ul> | </ul> |
417 | <p><strong>When a subelement of <code>item</code> > <a href="#iffy-synthetic"><code>iffy:synthetic</code></a></strong></p> | <h3><a href="#when-a-subelement-of-item--iffysynthetic" id="when-a-subelement-of-item--iffysynthetic" name="when-a-subelement-of-item--iffysynthetic" class="anchorlink"></a>When a subelement of <code>item</code> > <a href="#iffy-synthetic"><code>iffy:synthetic</code></a></h3> |
418 | <p>Marks what kind of synthetic item its parent is. Currently known values include</p> | <p>Marks what kind of synthetic item its parent is. Currently known values include</p> |
419 | <ul> | <ul> |
420 | <li><code>UpdateAnnouncement</code> — A synethetic item marking an update of an older item in the feed (or that once would have been in the feed)</li> | <li> |
421 | | <p><code>UpdateAnnouncement</code> — A synthetic item marking an update of an older item in the feed (or that once would have been in the feed)</p></li> |
422 | | <li> |
423 | | <p><code>UpdateCumulation</code> — A synthetic item describing an aggregation of updates, which may include updates of multiple items, and multiple updates for each item.</p></li> |
424 | </ul> | </ul> |
425 | <p>Please see known containing elements, including</p> | <p>Please see known containing elements, including</p> |
426 | <ul> | <ul> |
427 | <li><a href="#iffy-synthetic"><code>iffy:synthetic</code></a>.</li> | <li><a href="#iffy-synthetic"><code>iffy:synthetic</code></a>.</li> |
428 | </ul> | </ul> |
429 | </div> | </div> |
430 | <hr> | <hr> |
431 | <p><a id="iffy-update" href=""></a><strong>Element — <code>iffy:update</code></strong></p> | <h2><a href="#element--iffyuid-" id="element--iffyuid-" name="element--iffyuid-" class="anchorlink"></a>Element — <code>iffy:uid</code> <a id="iffy-uid" href=""></a></h2> |
432 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
433 | <p><strong>When a sub-element of <a href="#iffy-update-history"><code>iffy:update-history</code></a></strong></p> | <p>Refers to the <a href="https://www.rssboard.org/rss-specification#ltguidgtSubelementOfLtitemgt"><code>guid</code></a> of an <code>item</code> from a different item or construct.</p> |
434 | | <p><em><strong>Note:</strong> We define an <a href="#iffy-uid"><code>iffy:uid</code></a> element, rather than rely upon <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.6"><code>atom:id</code></a>, because <code>atom:id</code> requires that its contents be an IRI, but we mean to impose no such restriction.</em></p> |
435 | | <p>Please see known containing elements, including</p> |
436 | | <ul> |
437 | | <li><a href="#iffy-initial"><code>iffy:initial</code></a>.</li> |
438 | | </ul> |
439 | | </div> |
440 | | <hr> |
441 | | <h2><a href="#element--iffyupdate-" id="element--iffyupdate-" name="element--iffyupdate-" class="anchorlink"></a>Element — <code>iffy:update</code> <a id="iffy-update" href=""></a></h2> |
442 | | <div class="iffy-element-desc"> |
443 | | <p>In general, describes or announces updates to previously published items.</p> |
444 | | <p><strong><em>Typo fixes, small rephrasings, and other tweaks are not expected to be recorded as distinct updates. That is, within a "single update" there may be a sequence of smaller revisions that go unrecorded.</em></strong></p> |
445 | | <p>Applications that want a more forensic history might consider including and exposing every published change in version control.</p> |
446 | | <h3><a href="#when-a-sub-element-of-item--iffyupdate-history" id="when-a-sub-element-of-item--iffyupdate-history" name="when-a-sub-element-of-item--iffyupdate-history" class="anchorlink"></a>When a sub-element of <code>item</code> > <a href="#iffy-update-history"><code>iffy:update-history</code></a></h3> |
447 | <p>MUST contain one <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.15"><code>atom:updated</code></a> element.</p> | <p>MUST contain one <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.15"><code>atom:updated</code></a> element.</p> |
448 | <p>MAY also contain one each of</p> | <p>MAY also contain one each of</p> |
449 | <ul> | <ul> |
450 | <li><a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.13"><code>atom:summary</code></a></li> | <li><a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.13"><code>atom:summary</code></a></li> |
451 | <li><a href="#iffy-diff"><code>iffy:diff</code></a></li> | <li><a href="#iffy-diff"><code>iffy:diff</code></a></li> |
452 | <li><a href="#iffy-revision"><code>iffy:revision</code></a></li> | <li><a href="#iffy-revision"><code>iffy:revision</code></a></li> |
453 | </ul> | </ul> |
454 | <p>MAY, but usually will not, contain any number of <a href="https://www.rssboard.org/rss-profile#namespace-elements-dublin-creator"><code>dc:creator</code></a> elements, reflecting <em>authorship specific to this revision</em>. By default, an update's authors are the same as the authorship of the containing item, which always reflects the curren revisions authors. If authorship is evolving over time, it SHOULD be specified for every update except the most recent one. Initial authorship may be specified in an <a href="#iffy-initial"><code>iffy:initial</code></a> element.</p> | <p>MAY contain an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.14"><code>atom:title</code></a> element, if the title has been revised since a previous version</p> |
455 | <p><strong><em>Typo fixes, small rephrasings, and other tweaks are not expected to be recorded as distinct updates. That is, within a "single update" there may be a sequence of smaller revisions that go unrecorded.</em></strong> Applications that want a more forensic history might consider including and exposing every published change in version control.</p> | <p>MAY contain any number of <a href="https://www.rssboard.org/rss-profile#namespace-elements-dublin-creator"><code>dc:creator</code></a> elements, reflecting <em>authorship specific to this revision</em>.</p> |
456 | | <p>By default, an update's title and authors are the same the containing item, which always reflects the <em>current</em> revisions authors.</p> |
457 | | <p>If the title changes, or authorship is evolving over time, these items should be specified in every update that alters them.</p> |
458 | | <p>The initial title and authorship SHOULD BE specified in an <a href="#iffy-initial"><code>iffy:initial</code></a> element if either have been revised.</p> |
459 | <p>See <a href="#iffy-update-history"><code>iffy:update-history</code> example</a>.</p> | <p>See <a href="#iffy-update-history"><code>iffy:update-history</code> example</a>.</p> |
460 | | <h3><a href="#when-a-sub-element-of-item--iffysynthetic-with-iffytype-updateannouncement" id="when-a-sub-element-of-item--iffysynthetic-with-iffytype-updateannouncement" name="when-a-sub-element-of-item--iffysynthetic-with-iffytype-updateannouncement" class="anchorlink"></a>When a sub-element of <code>item</code> > <a href="#iffy-synthetic"><code>iffy:synthetic</code></a> with <a href="#iffy-type"><code>iffy:type</code></a> <code>UpdateAnnouncement</code></h3> |
461 | | <p>MUST contain one <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.15"><code>atom:updated</code></a> element.</p> |
462 | | <p>MUST contain an <a href="#iffy-initial"><code>iffy:initial</code></a> describing the initial state of the item updated.</p> |
463 | | <p>(Information in the containing <code>item</code> refers to the <em>update announcement</em> rather than the post whose update is announced, so an <a href="#iffy-initial"><code>iffy:initial</code></a> element is necessary.</p> |
464 | | <p>MAY also contain one each of</p> |
465 | | <ul> |
466 | | <li><a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.13"><code>atom:summary</code></a></li> |
467 | | <li><a href="#iffy-diff"><code>iffy:diff</code></a></li> |
468 | | <li><a href="#iffy-revision"><code>iffy:revision</code></a></li> |
469 | | </ul> |
470 | | <p>MAY contain an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.14"><code>atom:title</code></a> element, if the title has been revised since a previous version.</p> |
471 | | <p>MAY contain any number of <a href="https://www.rssboard.org/rss-profile#namespace-elements-dublin-creator"><code>dc:creator</code></a> elements, if authorship has been revised since a previous version..</p> |
472 | </div> | </div> |
473 | <hr> | <hr> |
474 | <p><a id="iffy-update-history" href=""></a><strong>Element — <code>iffy:update-history</code></strong></p> | <h2><a href="#element--iffyupdate-history-" id="element--iffyupdate-history-" name="element--iffyupdate-history-" class="anchorlink"></a>Element — <code>iffy:update-history</code> <a id="iffy-update-history" href=""></a></h2> |
475 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
476 | <p><strong>When an item level element</strong></p> | <h3><a href="#when-an-item-level-element" id="when-an-item-level-element" name="when-an-item-level-element" class="anchorlink"></a>When an <code>item</code> level element</h3> |
477 | <p>SHOULD contain a sequence of <a href="#iffy-update"><code>iffy:update</code></a> elements, in reverse chronological order, describing the histories of <em>major revisions</em> to an item.</p> | <p>MUST contain a sequence of <a href="#iffy-update"><code>iffy:update</code></a> elements, in reverse chronological order, describing the histories of <em>major revisions</em> to an item.</p> |
478 | <p>MAY contain one <a href="#iffy-initial"><code>iffy:initial</code></a> element.</p> | <p>MAY contain one <a href="#iffy-initial"><code>iffy:initial</code></a> element.</p> |
479 | <p>Items containing an <code>iffy:update-history</code> SHOULD also include an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.15"><code>atom:updated</code></a> tag corresponding to the most recent update.</p> | <p>Items containing an <code>iffy:update-history</code> SHOULD also include an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.15"><code>atom:updated</code></a> tag corresponding to the most recent update.</p> |
480 | <p><strong><em>Typo fixes, small rephrasings, and other minor tweaks are not expected to be recorded as distinct updates. That is, within a "single update" there may be a sequence of smaller revisions that go unrecorded.</em></strong> Applications that want a more forensic history might consider including and exposing every published change in version control.</p> | <p><strong><em>Typo fixes, small rephrasings, and other minor tweaks are not expected to be recorded as distinct updates. That is, within a "single update" there may be a sequence of smaller revisions that go unrecorded.</em></strong> Applications that want a more forensic history might consider including and exposing every published change in version control.</p> |
481 | <p><a id="iffy-update-history-example" href=""></a><strong>Example</strong>:</p> | <h4><a href="#example-" id="example-" name="example-" class="anchorlink"></a>Example: <a id="iffy-item-update-history-example" href=""></a></h4> |
482 | <pre><code class="language-xml"><item> | <pre><code class="language-xml"><item> |
483 | <!-- Other item elements --> | <!-- Other item elements --> |
484 | <iffy:update-history> | <iffy:update-history> |
⋮ | ⋮ | ⋮ |
529 | </iffy:update-history> | </iffy:update-history> |
530 | </item> | </item> |
531 | </code></pre> | </code></pre> |
532 | | <h3><a href="#when-a-sub-element-of-iffysynthetic-with-iffytype-updatecumulation" id="when-a-sub-element-of-iffysynthetic-with-iffytype-updatecumulation" name="when-a-sub-element-of-iffysynthetic-with-iffytype-updatecumulation" class="anchorlink"></a>When a sub-element of <a href="#iffy-synthetic"><code>iffy:synthetic</code></a> with <a href="#iffy-type"><code>iffy:type</code></a> <code>UpdateCumulation</code></h3> |
533 | | <p>MUST contain a sequence of <a href="#iffy-update-history"><code>iffy:update-history</code></a> elements, each of which contains <a href="#iffy-update"><code>iffy:update</code></a> elements in reverse chronological order, describing a sequence of <em>major revisions</em> to an item, and MUST ALSO contain one <a href="#iffy-initial"><code>iffy:initial</code></a> element, which MUST include an <code>iffy:uid</code> element identifying and describing the <code>item</code> whose updates are documented. See <a href="#iffy-initial-update-cumulation">discussion under <code>iffy:initial</code></a></p> |
534 | </div> | </div> |
535 | </div> | </div> |
536 | </div> | </div> |
537 | <div class="entry-footer"> | <div class="entry-footer"> |
538 | <div class="post-metainfo"> | <div class="post-metainfo"> |
539 | <div class="updated-note"> | <div class="updated-note"> |
540 | <a href="index.html#major-updates">Last major update at 2024-06-20 @ 11:05 AM EDT</a> | <a href="index.html#major-updates">Last major update at 2024-07-01 @ 02:40 PM EDT</a> |
541 | </div> | </div> |
542 | <div> | <div> |
543 | <a href="index.html" class="pubtime">04:10 AM EDT</a> | <a href="index.html" class="pubtime">04:10 AM EDT</a> |
⋮ | ⋮ | ⋮ |
560 | <div id="update-history" class="update-history"> | <div id="update-history" class="update-history"> |
561 | <h3 class="update-history-title"><a id="major-updates" href=""></a>Major revisions:</h3> | <h3 class="update-history-title"><a id="major-updates" href=""></a>Major revisions:</h3> |
562 | <ul> | <ul> |
563 | <li><span class="update-timestamp"><i>2024-06-20 @ 11:05 AM EDT</i></span> — Document <code>iffy:type</code>, update documentation of <code>iffy:synthetic</code> as optionally including <code>iffy:type</code>. (<a href="index-diff-f19e4870e2c719f71d2f5024cb3e2e8f477622dc-to-current.html">diff</a>)</li> | <li><span class="update-timestamp"><i>2024-07-01 @ 02:40 PM EDT</i></span> — Major revision of <code>iffy:synthetic</code>, generalize <code>iffy:initial</code>, <code>iffy:update</code>, <code>iffy:update-history</code>, define <code>iffy:uid</code>. (<a href="index-diff-0df7787c056ab2b983e2de4d107c2fa477b7c8f4-to-current.html">diff</a>)</li> |
564 | | <li><span class="update-timestamp"><i> <a href="index-oldcommit-0df7787c056ab2b983e2de4d107c2fa477b7c8f4.html">2024-06-20 @ 11:05 AM EDT</a></i></span> — Document <code>iffy:type</code>, update documentation of <code>iffy:synthetic</code> as optionally including <code>iffy:type</code>. (<a href="index-diff-f19e4870e2c719f71d2f5024cb3e2e8f477622dc-to-0df7787c056ab2b983e2de4d107c2fa477b7c8f4.html">diff</a>)</li> |
565 | <li><span class="update-timestamp"><i> <a href="index-oldcommit-f19e4870e2c719f71d2f5024cb3e2e8f477622dc.html">2024-06-17 @ 11:50 PM EDT</a></i></span> — Document <code>iffy:synthetic</code>. (<a href="index-diff-b8f2ae57694f9fb88b10df011f69ee9acfe4c0ac-to-f19e4870e2c719f71d2f5024cb3e2e8f477622dc.html">diff</a>)</li> | <li><span class="update-timestamp"><i> <a href="index-oldcommit-f19e4870e2c719f71d2f5024cb3e2e8f477622dc.html">2024-06-17 @ 11:50 PM EDT</a></i></span> — Document <code>iffy:synthetic</code>. (<a href="index-diff-b8f2ae57694f9fb88b10df011f69ee9acfe4c0ac-to-f19e4870e2c719f71d2f5024cb3e2e8f477622dc.html">diff</a>)</li> |
566 | <li><span class="update-timestamp"><i> <a href="index-oldcommit-b8f2ae57694f9fb88b10df011f69ee9acfe4c0ac.html">2024-06-11 @ 02:10 PM EDT</a></i></span> — Document <code>iffy:hint-announce</code>, <code>iffy:policy</code>, and <code>iffy:restriction</code>. (<a href="index-diff-6c5fef82527bd419e8e9c7e7f3a6420c9925cf10-to-b8f2ae57694f9fb88b10df011f69ee9acfe4c0ac.html">diff</a>)</li> | <li><span class="update-timestamp"><i> <a href="index-oldcommit-b8f2ae57694f9fb88b10df011f69ee9acfe4c0ac.html">2024-06-11 @ 02:10 PM EDT</a></i></span> — Document <code>iffy:hint-announce</code>, <code>iffy:policy</code>, and <code>iffy:restriction</code>. (<a href="index-diff-6c5fef82527bd419e8e9c7e7f3a6420c9925cf10-to-b8f2ae57694f9fb88b10df011f69ee9acfe4c0ac.html">diff</a>)</li> |
567 | <li><span class="update-timestamp"><i> <a href="index-oldcommit-6c5fef82527bd419e8e9c7e7f3a6420c9925cf10.html">2024-06-02 @ 12:25 AM EDT</a></i></span> — Drop <code>iffy:timestamp</code>. We can just reuse <code>atom:updated</code> for the same work. (<a href="index-diff-199e44561de3fd9e731a335d8b2a655f42d9bc04-to-6c5fef82527bd419e8e9c7e7f3a6420c9925cf10.html">diff</a>)</li> | <li><span class="update-timestamp"><i> <a href="index-oldcommit-6c5fef82527bd419e8e9c7e7f3a6420c9925cf10.html">2024-06-02 @ 12:25 AM EDT</a></i></span> — Drop <code>iffy:timestamp</code>. We can just reuse <code>atom:updated</code> for the same work. (<a href="index-diff-199e44561de3fd9e731a335d8b2a655f42d9bc04-to-6c5fef82527bd419e8e9c7e7f3a6420c9925cf10.html">diff</a>)</li> |
⋮ | ⋮ | ⋮ |
571 | <li><span class="update-timestamp"><i> <a href="index-oldcommit-394986cb8d9c57f567d324e691a44d50102101ce.html">2024-05-13 @ 04:10 AM EDT</a></i></span> — Initial publication.</li> | <li><span class="update-timestamp"><i> <a href="index-oldcommit-394986cb8d9c57f567d324e691a44d50102101ce.html">2024-05-13 @ 04:10 AM EDT</a></i></span> — Initial publication.</li> |
572 | </ul> | </ul> |
573 | <div class="update-history-note"> | <div class="update-history-note"> |
574 | Timestamps represent "major", substantative revisions. There may have been subsequent typo fixes and language reworkings within a major revision, after the time displayed. For a more complete and fine-grained update history, you can view the <a href="https://github.com/swaldman/tech.interfluidity.com/commits/main/">git repository commit history</a>. The most recent minor modification of this entry occurred 2024-06-20 @ 11:04 AM EDT. | Timestamps represent "major", substantative revisions. There may have been subsequent typo fixes and language reworkings within a major revision, after the time displayed. For a more complete and fine-grained update history, you can view the <a href="https://github.com/swaldman/tech.interfluidity.com/commits/main/">git repository commit history</a>. The most recent minor modification of this entry occurred 2024-08-23 @ 02:53 PM EDT. |
575 | </div> | </div> |
576 | </div> | </div> |
577 | </div><!-- after-article --> | </div><!-- after-article --> |
⋮ | ⋮ | ⋮ |
581 | </div> | </div> |
582 | </body> | </body> |
583 | </html> | </html> |