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>