<?xml version="1.0"?>
<!--
SPDX-FileCopyrightText: 2025 Lady <https://www.ladys.computer/about/#lady>
SPDX-License-Identifier: CC0-1.0
-->
<!DOCTYPE Class SYSTEM "../../DTD">
<Class>
	<label xml:lang="en">Slot</label>
	<comment xml:lang="en">
		<p>
			A <ref target="ore:Proxy">Proxy</ref> representing a single item in an <ptr target="olo:OrderedList">Ordered List</ptr>.
		</p>
		<p>
			Slots are required to have an <ref target="olo:index">index</ref>, which should be less than or equal to its <ref target="olo:ordered_list">ordered list</ref>�s <ref target="olo:length">length</ref>, and an <ref target="olo:item">item</ref>, providing the thing being proxied by the slot.
		</p>
		<p>
			A Slot is not actually required to have an ordered list by <ptr target="(OLO)"/>, and this caveat may prove useful for ordered slots in <ref target="ore:Aggregation">Aggregations</ref> of indeterminate length, or Aggregations which allow multiple slots with identical indices.
			In these cases, Slots will still never�the�less <ref target="ore:proxyIn">be a proxy in</ref> some Aggregation, which provides the context for interpreting their index.
		</p>
	</comment>
	<isDefinedBy>
		<SpecificResource source="(OLO)" fragment="Slot"/>
	</isDefinedBy>
	<subClassOf>
		<resource name="ore:Proxy"/>
	</subClassOf>
	<subClassOf>
		<Restriction>
			<onProperty>
				<resource name="olo:index"/>
			</onProperty>
			<cardinality>1</cardinality>
		</Restriction>
	</subClassOf>
	<subClassOf>
		<Restriction>
			<onProperty>
				<resource name="olo:item"/>
			</onProperty>
			<cardinality>1</cardinality>
		</Restriction>
	</subClassOf>
	<subClassOf>
		<Restriction>
			<onProperty>
				<resource name="olo:ordered_list"/>
			</onProperty>
			<maxCardinality>1</maxCardinality>
		</Restriction>
	</subClassOf>
	<hasKey>
		<resource name="olo:ordered_list"/>
		<resource name="olo:index"/>
	</hasKey>
</Class>