The plist and target attributes identify the participants in a relationship, while the rel attribute describes the nature of their relationship. A mutual relationship can be described using only the plist attribute – the target attribute is not necessary. In a non-mutual relationship, plist identifies the entities pointed "from", while target specifies the entities pointed "to". If the target attribute is present, but the plist is not, the relationship is presumed to exist between the parent of the current relation element and the entities identified by target.
<elementSpec ident="relation" module="MEI.shared">
<desc xml:lang="en">Describes a relationship or linkage amongst entities.</desc>
<classes>
<memberOf key="att.common"/>
<memberOf key="att.authorized"/>
<memberOf key="att.bibl"/>
<memberOf key="att.datable"/>
<memberOf key="att.evidence"/>
<memberOf key="att.plist"/>
<memberOf key="att.pointing"/>
<memberOf key="att.targetEval"/>
<memberOf key="model.relationLike"/>
</classes>
<content>
<empty/>
</content>
<constraintSpec ident="FRBR_relation" scheme="schematron">
<constraint>
<!-- See http://vocab.org/frbr/core for more-precise entity-to-entity constraints
-->
<sch:rule context="mei:relationList/mei:relation[parent::mei:work or parent::mei:expression or
parent::mei:source or parent::mei:item]">
<sch:assert test="matches(@rel, 'hasAbridgement') or matches(@rel, 'hasAbridgement') or
matches(@rel, 'isAbridgementOf') or matches(@rel, 'hasAdaptation') or
matches(@rel, 'isAdaptationOf') or matches(@rel, 'hasAlternate') or
matches(@rel, 'isAlternateOf') or matches(@rel, 'hasArrangement') or
matches(@rel, 'isArrangementOf') or matches(@rel, 'hasComplement') or
matches(@rel, 'isComplementOf') or matches(@rel, 'hasEmbodiment') or
matches(@rel, 'isEmbodimentOf') or matches(@rel, 'hasExemplar') or
matches(@rel, 'isExemplarOf') or matches(@rel, 'hasImitation') or
matches(@rel, 'isImitationOf') or matches(@rel, 'hasPart') or
matches(@rel, 'isPartOf') or matches(@rel, 'hasRealization') or
matches(@rel, 'isRealizationOf') or matches(@rel, 'hasReconfiguration')
or matches(@rel, 'isReconfigurationOf') or matches(@rel, 'hasReproduction')
or matches(@rel, 'isReproductionOf') or matches(@rel, 'hasRevision')
or matches(@rel, 'isRevisionOf') or matches(@rel, 'hasSuccessor')
or matches(@rel, 'isSuccessorOf') or matches(@rel, 'hasSummarization')
or matches(@rel, 'isSummarizationOf') or matches(@rel, 'hasSupplement')
or matches(@rel, 'isSupplementOf') or matches(@rel, 'hasTransformation')
or matches(@rel, 'isTransformationOf') or matches(@rel, 'hasTranslation')
or matches(@rel, 'isTranslationOf')">Within work, expression, source, or item, the value of the rel attribute must match
one
of the following: hasAbridgement, isAbridgementOf, hasAdaptation, isAdaptationOf,
hasAlternate, isAlternateOf, hasArrangement, isArrangementOf, hasComplement,
isComplementOf, hasEmbodiment, isEmbodimentOf, hasExemplar, isExemplarOf, hasImitation,
isImitationOf, hasPart, isPartOf, hasRealization, isRealizationOf, hasReconfiguration,
isReconfigurationOf, hasReproduction, isReproductionOf, hasRevision, isRevisionOf,
hasSuccessor, isSuccessorOf, hasSummarization, isSummarizationOf, hasSupplement,
isSupplementOf, hasTransformation, isTransformationOf, hasTranslation,
isTranslationOf</sch:assert>
<sch:assert test="@target">Within work, expression, source or item, the target attribute
must be present.</sch:assert>
</sch:rule>
</constraint>
</constraintSpec>
<attList>
<attDef ident="rel" usage="req">
<desc xml:lang="en">Describes the relationship between the entities identified by the plist and target
attributes.</desc>
</attDef>
</attList>
<remarks xml:lang="en">
<p>The <att>plist</att> and <att>target</att> attributes identify the participants in a
relationship, while the <att>rel</att> attribute describes the nature of their relationship.
A mutual relationship can be described using only the <att>plist</att> attribute – the
<att>target</att> attribute is not necessary. In a non-mutual relationship, <att>plist</att>
identifies the entities pointed "from", while <att>target</att> specifies the entities
pointed "to". If the <att>target</att> attribute is present, but the <att>plist</att> is
not, the relationship is presumed to exist between the parent of the current relation
element and the entities identified by <att>target</att>.</p>
</remarks>
</elementSpec>