Skip to content

Commit d132e32

Browse files
authored
Revert "remove informative appendix on reification, etc. (#100)" (#107)
This reverts commit 4174d9d.
1 parent ba82d32 commit d132e32

File tree

1 file changed

+283
-0
lines changed

1 file changed

+283
-0
lines changed

spec/index.html

Lines changed: 283 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1891,6 +1891,289 @@ <h2>Proofs of some results (Informative)</h2>
18911891

18921892
</section>
18931893

1894+
<section id="whatnot" class="informative appendix">
1895+
<h2 id="non_semantics">RDF reification, containers and collections (Informative)</h2>
1896+
1897+
<p>The RDF semantic conditions do not place formal constraints on the meaning
1898+
of much of the RDF vocabulary which is intended for use in describing containers and bounded collections,
1899+
or the reification vocabulary intended to enable an RDF graph to describe RDF triples.
1900+
This appendix briefly reviews the intended meanings of this vocabulary. </p>
1901+
1902+
<p>The omission of these conditions from the formal semantics is a design decision
1903+
to accommodate variations in existing RDF usage and to make it easier to implement
1904+
processes to check formal RDF entailment. For example, implementations may decide
1905+
to use special procedural techniques to implement the RDF collection vocabulary.</p>
1906+
1907+
<section id="Reif">
1908+
<h3>Reification</h3>
1909+
1910+
<div class="c1">
1911+
<table>
1912+
<tbody>
1913+
<tr>
1914+
<td class="othertable"><strong>RDF reification vocabulary</strong></td>
1915+
</tr>
1916+
<tr>
1917+
<td class="othertable"><code>rdf:Statement rdf:subject rdf:predicate
1918+
rdf:object</code></td>
1919+
</tr>
1920+
</tbody>
1921+
</table>
1922+
</div>
1923+
1924+
<p>The intended meaning of this vocabulary is to allow an RDF graph to act as metadata describing other RDF triples. </p>
1925+
1926+
<p>Consider an example graph containing a single triple:</p>
1927+
1928+
<p><code>ex:a ex:b ex:c .</code></p>
1929+
1930+
<p>and suppose that IRI <code>ex:graph1</code> is used to <a>identify</a> this graph.
1931+
Exactly how this identification is achieved is external to the RDF model,
1932+
but it might be by the IRI resolving to a concrete syntax document describing the graph,
1933+
or by the IRI being the associated <a>name</a> of a named graph in a dataset.
1934+
Assuming that the IRI can be used to denote the triple,
1935+
then the reification vocabulary allows us to describe the first graph in another graph:</p>
1936+
1937+
<p><code>ex:graph1 rdf:type rdf:Statement .<br/>
1938+
ex:graph1 rdf:subject ex:a .<br/>
1939+
ex:graph1 rdf:predicate ex:b .<br/>
1940+
ex:graph1 rdf:object ex:c .</code></p>
1941+
1942+
<p>The second graph is called a <dfn>reification</dfn> of the triple in the first graph.</p>
1943+
1944+
<p>Reification is not a form of quotation. Rather, the reification describes the
1945+
relationship between a token of a triple and the resources that the triple denotes.
1946+
The value of the <code>rdf:subject</code> property is not the
1947+
subject IRI itself but the thing it <a>denotes</a>, and similarly for <code>rdf:predicate</code> and <code>rdf:object</code>.
1948+
For example, if the referent of <code>ex:a</code> is Mount Everest,
1949+
then the subject of the reified triple is also the mountain, not the IRI which denotes it.</p>
1950+
1951+
<p><a>Reification</a>s can be written with a blank node as subject,
1952+
or with an IRI subject which does not <a>identify</a> any concrete realization of a triple,
1953+
in both of which cases they simply assert the existence of the described triple. </p>
1954+
1955+
<p>The subject of a <a>reification</a> is intended to denote a concrete realization of an RDF triple, such as a document in a surface syntax, rather than a triple considered as an abstract object. This supports use cases where properties such as dates of
1956+
composition or provenance information are applied to the
1957+
reified triple, which are meaningful only when thought of as
1958+
denoting a particular instance or token of a triple. </p>
1959+
1960+
<p>A <a>reification</a> of a triple does not entail the triple, and is not entailed by it.
1961+
The <a>reification</a> only says that the triple token exists and what it is about,
1962+
not that it is true, so it does not entail the triple.
1963+
On the other hand, asserting a triple does not automatically imply that any
1964+
triple tokens exist in the universe being described by the triple.
1965+
For example, the triple might be part of an ontology describing
1966+
animals, which could be satisfied by an interpretation in which the
1967+
universe contained only animals, and in which a <a>reification</a> of it was therefore
1968+
false.</p>
1969+
1970+
<p>Since the relation between triples and <a>reification</a>s of triples
1971+
in any RDF graph or graphs need not be one-to-one, asserting a
1972+
property about some entity described by a <a>reification</a> need not
1973+
entail that the same property holds of another such entity, even if
1974+
it has the same components. For example,</p>
1975+
1976+
<p><code>_:xxx rdf:type rdf:Statement .<br/>
1977+
_:xxx rdf:subject ex:subject .<br/>
1978+
_:xxx rdf:predicate ex:predicate .<br/>
1979+
_:xxx rdf:object ex:object .<br/>
1980+
_:yyy rdf:type rdf:Statement .<br/>
1981+
_:yyy rdf:subject ex:subject .<br/>
1982+
_:yyy rdf:predicate ex:predicate .<br/>
1983+
_:yyy rdf:object ex:object .<br/>
1984+
_:xxx ex:property ex:foo .</code></p>
1985+
1986+
<p>does not entail</p>
1987+
1988+
<p><code>_:yyy ex:property ex:foo .</code></p>
1989+
1990+
</section>
1991+
1992+
<section id="containers">
1993+
<h4>RDF containers</h4>
1994+
1995+
<table>
1996+
<tbody>
1997+
<tr>
1998+
<td class="othertable"><strong>RDF(S) Container Vocabulary</strong></td>
1999+
</tr>
2000+
<tr>
2001+
<td class="othertable"><code>rdf:Seq rdf:Bag rdf:Alt rdf:_1 rdf:_2
2002+
... rdfs:member rdfs:Container rdfs:ContainerMembershipProperty</code></td>
2003+
</tr>
2004+
</tbody>
2005+
</table>
2006+
2007+
<p>RDF provides vocabularies for describing three classes of
2008+
containers. Containers have a type, and their members can
2009+
be enumerated by using a fixed set of <em>container membership
2010+
properties</em>. These properties are indexed by integers to
2011+
provide a way to distinguish the members from each other, but these
2012+
indices should not necessarily be thought of as defining an
2013+
ordering of the container itself; some containers are considered to be unordered.</p>
2014+
2015+
<p>The <a>RDFS vocabulary</a> adds a generic membership
2016+
property which holds regardless of position, and classes containing
2017+
all the containers and all the membership properties.</p>
2018+
2019+
<p>One should understand this vocabulary as <em>describing</em>
2020+
containers, rather than as a tool for constructing them, as
2021+
would typically be supplied by a programming language. The actual containers are entities in the semantic universe,
2022+
and RDF graphs which use the vocabulary simply provide very basic
2023+
information about these entities, enabling an RDF graph to
2024+
characterize the container type and give partial information about
2025+
the members of a container. Since the RDF container vocabulary is
2026+
so limited, many natural assumptions concerning RDF containers
2027+
cannot be formally sanctioned by the RDF formal semantics. This should not be taken as
2028+
meaning that these assumptions are false, but only that RDF does
2029+
not formally entail that they must be true.</p>
2030+
2031+
<p>There are no special semantic conditions on the container
2032+
vocabulary: the only structure which RDF presumes its containers
2033+
to have is what can be inferred from the use of this vocabulary and
2034+
the general RDF semantic conditions. This amounts to knowing the type of a container, and having a partial
2035+
enumeration
2036+
of the items in the container. The intended mode of use is that things
2037+
of type <code>rdf:Bag</code>
2038+
are considered to be unordered but to allow duplicates; things of
2039+
type <code>rdf:Seq</code> are considered to be ordered, and things
2040+
of type <code>rdf:Alt</code> are considered to represent a
2041+
collection of alternatives, possibly with a preference ordering.
2042+
If the container is of an ordered type, then the ordering of items in the container is intended to be
2043+
indicated by the numerical ordering of the container membership
2044+
properties, which are assumed to be single-valued.
2045+
However, these informal conditions are not reflected in any formal RDF
2046+
entailments.</p>
2047+
2048+
2049+
<p>The RDF semantics does not support any entailments which could arise from enumerating
2050+
the elements of an unordered <code>rdf:Bag</code> in a different order. For example,</p>
2051+
2052+
<p><code>_:xxx rdf:type rdf:Bag .<br/>
2053+
_:xxx rdf:_1 ex:a .<br/>
2054+
_:xxx rdf:_2 ex:b .</code></p>
2055+
2056+
<p>does not entail</p>
2057+
2058+
<p><code>_:xxx rdf:_1 ex:b .<br/>
2059+
_:xxx rdf:_2 ex:a .</code></p>
2060+
2061+
<p>(If this conclusion were <a>valid</a>, then the result of
2062+
adding it to the original graph would be <a>entail</a>ed by the graph, and this would assert that both elements were in both
2063+
positions. This is a consequence of the fact that RDF is a purely
2064+
assertional language.)</p>
2065+
2066+
<p>There is no assumption that a property of a container applies to
2067+
any of the elements of the container, or vice versa. </p>
2068+
2069+
<p>There is no formal requirement that
2070+
the three container classes are disjoint, so that for example
2071+
it is consistent to assert that something is both an <code>rdf:Bag</code> and an <code>rdf:Seq</code>.
2072+
There is no assumption that containers are gap-free, so that for example</p>
2073+
2074+
<p><code>_:xxx rdf:type rdf:Seq.<br/>
2075+
_:xxx rdf:_1 ex:a .<br/>
2076+
_:xxx rdf:_3 ex:c .</code></p>
2077+
2078+
<p>does not entail</p>
2079+
2080+
<p><code>_:xxx rdf:_2 _:yyy .</code></p>
2081+
2082+
<p>There is no way in RDF to assert
2083+
that a container contains only a fixed number of members. This is a
2084+
reflection of the fact that it is always consistent to add a triple
2085+
to a graph asserting a membership property of any container. And
2086+
finally, there is no built-in assumption that an RDF container has
2087+
only finitely many members.</p>
2088+
</section>
2089+
2090+
<section id="collections">
2091+
<span id="rdf-collections"><!-- Alternative identifier --></span>
2092+
<h4>RDF collections</h4>
2093+
2094+
<table>
2095+
<tbody>
2096+
<tr>
2097+
<td class="othertable"><strong>RDF Collection Vocabulary</strong></td>
2098+
</tr>
2099+
<tr>
2100+
<td class="othertable"><code>rdf:List rdf:first rdf:rest rdf:nil</code></td>
2101+
</tr>
2102+
</tbody>
2103+
</table>
2104+
2105+
<p>RDF provides a vocabulary for describing collections, i.e.'list
2106+
structures', in terms of head-tail links. Collections differ from
2107+
containers in allowing branching structure and in having an
2108+
explicit terminator, allowing applications to determine the exact
2109+
set of items in the collection.</p>
2110+
2111+
2112+
<p>As with containers, no special semantic conditions are imposed on this vocabulary
2113+
other than the type of <code>rdf:nil</code> being <code>rdf:List</code>. It
2114+
is intended for use typically in a context where a container is described using
2115+
blank nodes to connect a 'well-formed' sequence of items, each described by
2116+
two triples of the form
2117+
<code><br/>
2118+
<br/>
2119+
_:c1 rdf:first aaa .<br/>
2120+
_:c1 rdf:rest _:c2 .</code></p>
2121+
2122+
<p>where the final item is indicated by the use of <code>rdf:nil</code> as the
2123+
value of the property <code>rdf:rest</code>. In a familiar convention, <code>rdf:nil</code>
2124+
can be thought of as the empty collection. Any such graph amounts to an assertion
2125+
that the collection exists, and since the members of the collection can be determined
2126+
by inspection, this is often sufficient to enable applications to determine
2127+
what is meant. The semantics does not require any collections
2128+
to exist other than those mentioned explicitly in a graph (and the empty collection).
2129+
For example, the existence of a collection containing two items does not automatically
2130+
guarantee that the similar collection with the items permuted also exists:
2131+
<code>
2132+
<br/><br/>
2133+
_:c1 rdf:first ex:aaa .<br/>
2134+
_:c1 rdf:rest _:c2 .<br/>
2135+
_:c2 rdf:first ex:bbb .<br/>
2136+
_:c2 rdf:rest rdf:nil . </code></p>
2137+
2138+
<p>does not entail</p>
2139+
2140+
<p><code>_:c3 rdf:first ex:bbb .<br/>
2141+
_:c3 rdf:rest _:c4 .<br/>
2142+
<span >_:c4 rdf:first</span> ex:aaa .<br/>
2143+
_:c4 rdf:rest rdf:nil .
2144+
</code></p>
2145+
2146+
<p>Also, RDF imposes no 'well-formedness' conditions on the use of this
2147+
vocabulary, so that it is possible to write RDF graphs which assert
2148+
the existence of highly peculiar objects such as lists with forked
2149+
or non-list tails, or multiple heads:</p>
2150+
2151+
<p><code>_:666 rdf:first ex:aaa .<br/>
2152+
_:666 rdf:first ex:bbb .<br/>
2153+
_:666 rdf:rest ex:ccc .<br/>
2154+
_:666 rdf:rest rdf:nil . </code></p>
2155+
2156+
<p>It is also possible to write a set of triples which under-specify a collection
2157+
by failing to specify its <code>rdf:rest</code> property value.</p>
2158+
2159+
<p><a>Semantic extension</a>s may
2160+
place extra syntactic well-formedness restrictions on the use of this vocabulary
2161+
in order to rule out such graphs. They may
2162+
exclude interpretations of the collection vocabulary which violate the convention
2163+
that the subject of a 'linked' collection of two-triple items of the form described
2164+
above, ending with an item ending with <code>rdf:nil</code>, <a>denotes</a> a totally
2165+
ordered sequence whose members are the referents of the <code>rdf:first</code>
2166+
values of the items, in the order got by tracing the <code>rdf:rest</code> properties
2167+
from the subject to <code>rdf:nil</code>. This permits sequences which contain
2168+
other sequences.</p>
2169+
2170+
<p> The RDFS semantic conditions require that any
2171+
subject of the <code>rdf:first</code> property, and any subject or object of
2172+
the <code>rdf:rest</code> property, be of <code>rdf:type rdf:List</code>. </p>
2173+
</section>
2174+
2175+
</section>
2176+
18942177
<section id="privacy" class="informative appendix">
18952178
<h2>Privacy Considerations (Informative)</h2>
18962179
<p>

0 commit comments

Comments
 (0)