<?xml version="1.0"?>
<!--
SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
SPDX-License-Identifier: CC0-1.0
-->
<!DOCTYPE Class SYSTEM "../../DTD">
<Class>
	<label xml:lang="en">Container</label>
	<comment xml:lang="en">
		<p>
			A collection of zero or more things.
		</p>
		<p>
			Membership within Containers is indicated through the use of <code>rdf:_$</code> properties, where <code>$</code> is a <em>positive</em> (i·e nonzero) integer with no leading zeroes.
			These properties are all considered subproperties of <resource name="rdfs:member"/>, although there are no normative requirements on processors recognizing this fact.
			There is no requirement that membership properties be dense; i·e just because a Collection has values for <resource name="rdf:_1"/> and <resource name="rdf:_3"/> does not imply it has a value for <resource name="rdf:_2"/>.
		</p>
		<p>
			Containers are allowed to contain themselves as members.
			The subclasses <ptr target="rdf:Bag"/>, <ptr target="rdf:Seq"/>, and <ptr target="rdf:Alt"/> convey different intentions about the relationship between the items in containers.
		</p>
		<p>
			Because the relationship between <resource name="rdf:_1"/>, <resource name="rdf:_2"/>, ⁊·c and <resource name="rdfs:member"/> is often implicit, and because there is no upper limit to membership properties or restrictions on their length, Containers can be difficult to reason about.
			<ref target="rdf:List">Lists</ref> are a better solution in most cases.
		</p>
	</comment>
	<isDefinedBy>
		<SpecificResource source="(RDF11-SCHEMA)" fragment="ch_container"/>
	</isDefinedBy>
</Class>