Encoding Manual and TEI Customization for SPEAR: Syriaca Persons, Events, and Relations

This schema and set of encoding guidelines has been created for the born-digital prosopography project SPEAR: Syriac Persons, Events, and Relations. An initial draft of this schema was produced in 2016. Since then the data model and the linked data infrastructure of Syriaca.org has evolved requiring a series of revisions culminating in the current version 2.0 of the schema customization contained here. The SPEAR project aggregates the data encoded from multiple Syriac texts by many different researchers. If you are interested in suggesting updates to this data model you may do so via submittng pull requests or issues to this GitHub repository. This schema and documentation is released under a Creative Commons Attribution 4.0 International license. Users wishing to cite these materials may do so in this way: Daniel L. Schwartz, Syriac Persons, Events, and Relations: A TEI P5 Customization and Encoding Guidelines for Modeling Factoid Prosopography, 2025, https://github.com/srophe/spear/blob/main/documentation/Schema/SPEAR.odd.

Table of contents

1. SPEAR Encoding Guidelines

1.1. Introduction

SPEAR is a born-digital prosopography using a methodology focused on the encoding of ‘factoids’, discussed below at 1.3.1. It relies on and integrates with the Syriaca.org Linked Open Data (LOD) knowledge graph. A SPEAR XML file does not trigger error messages when validated against the TEI P5 All schema. Nevertheless, the SPEAR data model, the encoding process, and the required integration with other Syriaca.org data sets require a highly constrained customization of the TEI.

It should be noted that these guidelines assume a basic familiarity with the Text Encoding Initiative (TEI) standard of XML. The user who is unfamiliar with the TEI Guidelines will want to study them before trying to use these encoding guidelines. There are also tutorials, exercises, and other tools for learning the TEI available at TEI by Example.

If you are familiar with Appendix C Elements of the TEI Guidelines, you will notice that Section 2.1 below contains discussion of individual TEI elements and their customization for SPEAR. These element discussions show the customization of the following sections: Attributes, Contained by, May contain, Note, and Example.

Please note that the following sections of the TEI have received almost no customization: Model classes, Attribute classes, Macros, and Datatypes.

Please note as well that the prose documentation that follows here in section 1 is an abbreviated and slightly updated version of an article appearing in the jTEI. The discussion here is also more oriented toward guidelines for using the schema to encode prosopographical data. For a fuller discussion of factoid prosopography and TEI modeling of prosopographical factoids, see Daniel L. Schwartz, Nathan P. Gibson, and Katayoun Torabi, Modeling a Born-Digital Factoid Prosopography using the TEI and Linked Data, Journal of the Text Encoding Initiative, (2022), https://journals.openedition.org/jtei/3979.

1.2. Acknowledgements

SPEAR is a digital prosopography project that both stands somewhat apart from Syriaca.org but has also depends on it and has developed in dialogue with it. As such, I would like to acknowledge the contributions of Syriaca.org colleagues David A. Michelson and Jeanne-Nicole Mellon Saint-Laurant. Syriaca.org Senior Programmer Winona Salesky has shaped SPEAR through her work on adapting the Srophé Software Application (used for an early beta version of SPEAR) to the data model and more recently by developing an instance of the Gaddel Software Application (link to code base) to display and query SPEAR data. The influence of these three colleagues on Syriaca.org can be seen throughout the SPEAR data model. Nathan P. Gibson was a postdoc with Syriaca.org and Katayoun (Kathy) Torabi was a graduate research assistant early on in the project. Both helped shape this data model and are co-authors on the jTEI article mentioned above. Nathan Gibson has also adapted the SPEAR data model to his Usaybia.net, a prosopographical research project analyzing early Islamic intellectual networks between Jews, Christians, and Muslims. Will Potter provided excellent feedback on a draft of these prose guidelines from a deep knowledge of the Syriaca.org knowledge graph. What you read here benefits much from his helpful feedback. All of these colleagues as well as many additional student and faculty researchers have contributed data to SPEAR and feedback on the data model as well. Many thanks to all of these contributors.

1.3. The SPEAR Factoid Model

SPEAR offers a customized schema for modeling prosopographical factoids in TEI XML and for integrating these factoids into the Syriaca.org knowledge graph. Each of these concepts requires a bit of unpacking. What follows is an overview of these issues. For a fuller discussion, please see the jTEI article mentioned above.

1.3.1. Factoid Prosopography

Traditional prosopographical methods rely on print publications to collect prose descriptions of individuals appearing in historical sources. These magisterial works, such as the Prosophography of the Later Roman Empire, eds. A. H. M. Jones, J. R. Martindale, and John Morris, (1971-1982), required multiple volumes and were very difficult to update as knowledge developed. The print medium also suffered from constraints regarding scale. This required difficult editorial decisions about whom the editors included and whom they left out. The resulting works typically focus on elite, male figures related to political and military developments.

A group of scholars at King's College London sought to leverage digital technologies for prosopographical research by developing methodologies that could capture prosopographical information in a database. This would allow a scale that could include all persons, not just political elites, and would expose that information to computational analysis. The term they chose for the discrete pieces of personal information entered into the database was ‘factoid’.

Most factoid prosopography uses a relational database for this work. SPEAR, along with Syriaca.org, has preferred to use TEI XML as a data format due to its ability to integrate structured, semi-structured, and unstructured (prose) data. This offers the benefits of scale and computational analysis while also leaving room for some of the idiosyncratic features of ancient source material. These guidelines and customized TEI schema describe how SPEAR uses the TEI to model prosopographical facoids.

1.3.2. SPEAR and the Syriac Biographical Dictionary

SPEAR integrates with the Syriac Biographical Dictionary (SBD) at a deep level even though the two datasets remain separate and have separate goals. The goal of Syriaca.org in general, and SBD in particular, is the creation of authority files. An authority file identifies an entity, in this case a person, assigns it a so-called ‘cool URI’ (a Uniform Resource Identifier that when entered into a web browser resolves to a page of information about the entity), and collects data that is useful for disambiguation between entities and for integration into a knowledge graph. SPEAR, in contrast, uses the URIs minted in SBD alongside Syriaca.org URIs for other types of entities, to model prosopographical information derived from primary source texts. See Section 3, especially Table 1, in the jTEI article mentioned above for additional discussion of the relationship between SPEAR and SBD.

1.4. SPEAR TEI Document Structure

1.4.2. Basic Factoid Structure

1.4.2.1. Containing Element

SPEAR factoids appear at the path /TEI/text/body/ab. The <ab> (anonymous block) element provides the container for factoids and takes a @type attribute with value ‘factoid’ to indicate this usage. A @subtype attribute is used to indicate what type of factoid. The allowed values are ‘relation’, ‘event’, ‘birth’, ‘citizenship’, ‘death’, ‘education’, ‘ethnicLabel’, ‘gender’, ‘langKnown’, ‘mentalState’, ‘nameVariant’, ‘occupation’, ‘physicalTrait’, ‘religiousAffiliation’, ‘residence’, ‘sanctity’, and ‘socecStatus’. The SPEAR schema uses these @subtype values to require the necessary XML structure for each type of data.

The <ab> element also requires an @xml:id with a value ‘factoid-\d+’ where ‘\d+’ is a unique number within the document. This number must also agree with the substring after ‘-’ in the child <idno>. This ensures that there is unique @xml:id for the <ab> and an <idno> containing a full URI for this factoid. For more detail, see Factoid Identifier below.

Every <ab> must also have a @resp attribute indicating one or more editors responsible for the factoid. Similar to the practice in the <titleStmt>, the values on the @resp attribute here must validate against the @xml:id attributes in the list of editors on GitHub.

The name SPEAR derives from the TEI elements <person>, <event>, and <relation>. The @subtype values ‘relation’ and ‘event’ indicate those types of factoids and have descendant <relation> and <event> elements respectively. The remainder of the @subtype values indicate a person factoid and must have a descendent <person> element or a descendent <personGrp> element, the latter used for groups of people instead of individual persons. The TEI expects these elements to nest under <listRelation>, <listEvent>, and <listPerson> elements respectively and SPEAR has followed that practice even though it is not strictly necessary for the SPEAR data model.

Outline of a relation factoid:
<ab type="factoidsubtype="relation"  xml:id="factoid-36resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-36</idno>  <listRelation>   <relation type="person"    ref="http://syriaca.org/taxonomy/fellow-monastics"    mutual="http://syriaca.org/person/3227 http://syriaca.org/person/3249">    <desc>     <persName ref="http://syriaca.org/person/3227">Jonathan</persName> and <persName ref="http://syriaca.org/person/3249">Samuel</persName>        were monks at the same monastery.    </desc>   </relation>  </listRelation>  <bibl type="primary">...</bibl> </ab>

1.4.2.2. Factoid Identifier

Each SPEAR factoid must contain an <idno> element that provides a cool-URI for the factoid. This identifies the factoid and also indicates the URL where the data can be viewed in HTML. The schema requires that this <idno> is based on the document URI in the <publicationStmt> which also aligns with the work URI in the <sourceDesc>, (see sections Publication Statement and Source Description above). The three examples below come from the factoid https://spear-prosop.org/798-5, contained in a SPEAR XML file named ‘798.xml’.

The XML document URI at the path /TEI/teiHeader/fileDesc/publicationStmt/idno contains the number ‘798’.
<publicationStmt>  <authority>Syriaca.org: The Syriac Reference Portal</authority>  <idno type="URI">https://spear-prosop.org/798/tei</idno> ... </publicationStmt>
The work URI at the path /TEI/teiHeader/fileDesc/sourceDesc//bibl/ptr/@target contains the number ‘798’.
<sourceDesc>  <listBibl>   <head>Sources for the Data in this Born Digital Prosopography</head>    ...  <bibl type="primary">    <title>Paul the Mourner</title>    <author>     <persName ref="http://syriaca.org/person/74">John of Ephesus</persName>    </author>    <ptr target="http://syriaca.org/work/798"/>   </bibl>  </listBibl> </sourceDesc>
The factoid URI at the path /TEI/text/body/ab[@type='factoid']/idno contains the number ‘798’ followed by a ‘-’ and a unique number.
<ab type="factoidsubtype="event"  xml:id="factoid-5resp="#jwalters">  <idno type="URI">https://spear-prosop.org/798-5</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/holy-places http://syriaca.org/taxonomy/relics">    <desc>     <persName ref="http://syriaca.org/person/1980">Paul</persName> entered        a cave filled with malignant fiends and planted a cross and hung up        relics of saints. </desc>   </event>  </listEvent>  <bibl type="primary">...</bibl> </ab>

Again, this practice is not strictly necessary but it helps maintain the connection between the work and the factoids derived from the work.

1.4.2.3. Elements for Balancing Structured and Semi-Structured Data

One of the reasons that SPEAR uses the TEI is the ability it offers for the integration of structured and semi-structured data. Specific examples of how SPEAR does this appear below. Suffice it to say here, that most factoids contains either a <note> or a <desc> element (for the exception, see Name Variants). These elements contain text written by the encoder that offer a prose description of the data contained elsewhere in the factoid <ab>. These <note> and <desc> elements typically allow text, <persName> (with @ref attributes restricted to person URIs from SBD), <placeName> (with @ref attributes restricted to place URIs from The Syriac Gazetteer) and elements for encoding dates. This text, along with hyperlinks to additional infromation on the persons and places encoded, are displayed to the user in HTML. The portions of each factoid that are less visible in HTML are serialized into RDF triples and used by the processor to facilitate filter, browse, and linking to additional metadata.

1.4.2.4. Sourcing Factoid Data

1.4.2.4.1. Bibliographic Citations
SPEAR sources every factoid to a primary source text. Because Syriaca.org includes a bibliography dataset, Comprehensive Bibliography on Syriac Studies (CBSS), only the bibliography URI and the portion of that text needs to be cited. We can generate a full bibliographic citation from this information. We attach this citation to each factoid using a <bibl> element with a @type attribute indicating ‘primary’. The bibliography URI appears in the <ptr> element. The range of the citation appears in a <citedRange> element whose @unit attribute must take one of the following values: ‘p’ for page; ‘line’ for a line of text, typically but not necessarily a line of poetry; ‘part’ for a portion of a book or collection, i.e. chapter and verse of a biblical text; and ‘column’ for a column of text.
<bibl type="primary">  <ptr target="http://syriaca.org/cbss/U78B4C66"/>  <citedRange unit="p">645</citedRange> </bibl>
1.4.2.4.2. CTS URNs
In addition to using Syriaca.org bibliography records, SPEAR can also employ CTS URNs (Canonical Text Services, Uniform Resource Name). Using URNs allows SPEAR to pull text from the Digital Syriac Corpus directly into the HTML page of the individual factoid that contains a CTS URN. In this case the <bibl> element must have a @type attribute indcating the URN and a <ptr> element whose @target attribute indicates the URN. A URN is a pointer to a specific portion of a text. Since the range is already included, there is no need for a <citedRange> element.
<bibl type="urn">  <ptr target="urn:cts:syriacLit:nhsl8559.syriacCorpus57:12"/> </bibl>

For an example of the incorporation of source text into an HTML factoid page, see https://spear-prosop.org/8559-87. For more on URNs, see https://www.rfc-editor.org/rfc/rfc8141.

1.4.2.4.3. Citing Syriaca.org Works
Syriaca.org data on works differs from its data on bibliography. A work is the Platonic concept of a work. Whereas a bibliography record contains bibliographic information for a specific edition or translation of the work, a work record is an authority file for the concept of the work. In cases where the Digital Syriac Corpus does not yet have a digitized version of the text that would allow the use of a CTS URN, SPEAR allows the use of the work record URI as a temporary placeholder. This work URI appears on the @target attribute of the <ptr> element. Even though work records refer to concepts, not editions, and therefore do not have page ranges or similar, SPEAR does allow the use of <citedRange> with a @unit attribute derived from a Syriac edition of the text. When an edition of the Syriac text is included in the Digital Syriac Corpus we will be able to change the <bibl> element to indicate the URN and display that text on the HTML factoid page.
<bibl type="primary">  <ptr target="http://syriaca.org/work/830"/>  <citedRange unit="p">443</citedRange> </bibl>

1.4.3. Factoid Types

What follows is an introduction to encoding each of the types of SPEAR factoids mentioned above. All three types of factoid follow the basic encoding structure described in the previous section on Basic Factoid Structure. The three tables below introduce the different types of factoids that are discussed in greater detail in the following sections.

Person Factoids
Factoid TypeDescription
BirthUsed to encode dates and/or places of a person's birth. See below Birth and Death.
CitizenshipUsed to encode places where a person had citizenship as well as dates of that citizenship when known. The place of citizenship can be for any type of place, from city to empire. See below Citizenship, Mental States, Religious Affiliation, and Sanctity.
DeathUsed to encode dates and/or places of a person's birth. See below Birth and Death.
EducationUsed to encode the subject area of a person's study. See below Education, Language, Occupation, and Socio-economic Status.
Ethnic LabelUsed to encode a text's use of an ethnic label to describe a person. See below Physical Traits, Gender, and Ethnicity.
GenderUsed to encode a text's use of gender to describe a person. See below Physical Traits, Gender, and Ethnicity.
Language KnownUsed to encode a language known or used by a person. See below Education, Language, Occupation, and Socio-economic Status.
Mental StateUsed to encode a person's mental or emotional state, including things like suffering, pride, tears, etc. See below Citizenship, Mental States, Religious Affiliation, and Sanctity.
Name VariantsUsed to encode a variety of names for a person: personal names, descriptive names, even insulting names. See below Name Variants.
OccupationUsed to encode the type of work ascribed to a person, including any type of trade, clerical or political office, etc. See below Education, Language, Occupation, and Socio-economic Status.
Physical TraitUsed to encode a person's distinguishing physical characteristics. See below Physical Traits, Gender, and Ethnicity.
Religious AffiliationUsed to encode a person's membership in or participation with a religious group regardless of personal belief. See below Citizenship, Mental States, Religious Affiliation, and Sanctity.
ResidenceUsed to encode places where a person resided as well as dates when available. See below Residence.
SanctityUsed to encode states of sanctity such as saint, martyr, confessor, etc. See below Citizenship, Mental States, Religious Affiliation, and Sanctity.
Socio-economic StatusUsed to encode a person's socio-economic status, typically indicated by a rank held or an occupation worked. See below Education, Language, Occupation, and Socio-economic Status.
Event Factoids
Factoid TypeDescription
EventsEvent factoids capture any event the encoder deems worth of capturing and include data regarding the persons, places, dates, and keyword concepts. See below Event Factoids.
Relation Factoids
Factoid TypeDescription
RelationshipsRelation factoids capture a wide range of familial, personal, and professional relationships. See below Relation Factoids.

1.4.3.1. Relation Factoids

Relation factoids have the most consistent and straightforward structure so we will begin by describing them. Relation factoids contain a <listRelation> followed by <relation>. The schema constrains the values of the @ref attribute on <relation> to allow only appropriate relationship values from the Syriac Taxonomy. The <relation> element also has either a @mutual attribute with two or more person URI values or @active and @passive attributes. The distinction is between relationships that are mutual (if person x is a sibling of person y, then person y is a sibling of person x) and relationships that are directed (person x ordained person y). The @mutual, @active, and @passive attributes may only take Syriaca.org person URIs from SBD.

<ab type="factoidsubtype="relation"  xml:id="factoid-232resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/8559-232</idno>  <listRelation>   <relation type="person"    ref="http://syriaca.org/taxonomy/sibling-of"    mutual="http://syriaca.org/person/2234 http://syriaca.org/person/13">    <desc>     <persName ref="http://syriaca.org/person/2234">Anonmyous 2234</persName> and <persName ref="http://syriaca.org/person/13">Ephrem</persName> were siblings.</desc>   </relation>  </listRelation>  <bibl type="primary">...</bibl> </ab>

1.4.3.2. Person Factoids

Person factoids are the most variable as they pertain to so many different types of data about persons. Each of these follows the TEI for the types of elements that can appear as child elements of <person> or <personGrp>. The <personGrp> element is used for groups of persons whereas <person> is used for individuals.

In SPEAR, a <person> or <personGrp> requires a child <persName> with a @ref attribute indicating the subject of the factoid. If the factoid only contains a name variant, this <persName> element takes a text node with that variant. Otherwise, this <persName> is self-closing and merely identifies the subject of the factoid. This is followed by one of the following elements: <birth>, <death>, <education>, <langKnowledge>, <occupation>, <residence>, <socecStatus>, <state>, or <trait>.

1.4.3.2.1. Name Variants
SPEAR seeks to capture a wide variety of ways that texts refer to people. This often includes titles, places the person is associated with, or other descriptors. It is important to note that SPEAR does not designate a preferred label for a person. That preferred or canonical name is encoded in the SBD. This is the one factoid type that does not contain a <note> or <desc> element. The human-readable text is simply supplied by the text node of the <persName> element.
<ab type="factoidsubtype="nameVariant"  xml:id="factoid-1resp="#tbaillargeon #tmcneir">  <idno type="URI">https://spear-prosop.org/799-1</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/1555"> Abraham, layman and recluse</persName>   </person>  </listPerson>  <bibl type="primary">   <ptr target="http://syriaca.org/work/799"/>...</bibl> </ab>
1.4.3.2.2. Birth and Death
The model for birth and death information appears in a <person> or <personGrp> element. The immediate child of these elements must be a self-closing <persName> element indicating the subject of the factoid. The child <birth> or<death> element can take a child <date> element and/or a child <placeName> element. This allows them to capture both date and place of birth or death. A child <placeName> element must have a @ref attribute pointing to a Syriaca.org place URI. The schema will throw a warning message if this is not a place URI in The Syriac Gazetteer. If there is a child <date> element, the Gregorian version of that dating information must appear on <birth> or <death>. For a discussion of how SPEAR handles different dating systems, see below on Dating Systems.
<ab type="factoidsubtype="birth"  xml:id="factoid-66resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/8559-66</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3"/>    <birth when="0154-07-11">     <choice>      <reg>       <date when="0154-07-11"        calendar="Gregorian">11 July 154</date>      </reg>      <orig>       <date when-custom="0465-10-11"        datingMethod="Seleucid-SyriacMonths">11 Tammuz A. Gr. 465</date>      </orig>     </choice>     <note type="desc">      <persName ref="http://syriaca.org/person/3">Bardaisan</persName> was born on 11 July 154. </note>    </birth>   </person>  </listPerson>  <bibl type="primary">...</bibl> </ab>
In this example as in most SPEAR factoids, there is a <note> element containing a human-readable version of the factoid data. In other contexts, SPEAR accomplishes the same using a <desc> element.
1.4.3.2.3. Residence

These factoids employ a <residence> element which must take a <placeName> element and may take a <date> element. A <placeName> element must have a @ref attribute pointing to a Syriaca.org place URI. The schema will throw a warning message if this is not a place URI in The Syriac Gazetteer. For a discussion of how SPEAR handles different dating systems, see below on Dating Systems.

<ab type="factoidsubtype="residence"  xml:id="factoid-12resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-12</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3251"/>    <residence>     <placeName ref="http://syriaca.org/place/399"/>     <note type="desc">      <persName ref="http://syriaca.org/person/3251">Mar Samuel</persName> resided in the     <placeName ref="http://syriaca.org/place/399">Convent of John Urtaya</placeName>.     </note>    </residence>   </person>  </listPerson>  <bibl type="primary">...</bibl> </ab>
1.4.3.2.4. Citizenship, Mental States, Religious Affiliation, and Sanctity
These types of information are grouped together here because SPEAR uses the <state> element to encode information on citizenship, mental states, religious affiliation, and sanctity (a category dealing with things like sainthood, etc.). The <state> element requires a @type attribute with one of the following values: ‘citizenship’, ‘mental’, ‘religiousAffiliation’, or ‘sanctity’. Note that this must match the @subtype attribute on the ancestor <ab> element. In most cases (mental states, religious affiliation, and sanctity), the <state> element must also takes an @ana attribute whose value the schema constrains to the appropriate concepts in the Syriac Taxonomy. Using URIs here allows the model to contain a Linked Data reference to a specific state.
<ab type="factoidsubtype="sanctity"  xml:id="factoid-55resp="#ktorabi #dschwartz">  <idno type="URI">https://spear-prosop.org/3004-55</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/958"/>    <state type="sanctity"     ana="http://syriaca.org/taxonomy/martyrs">     <note type="desc">      <persName ref="http://syriaca.org/person/958">Eusebius</persName> was a martyr.</note>    </state>   </person>  </listPerson>  <bibl type="primary">...</bibl> </ab>
In the case of citizenship, there is no need for an @ana attribute. Instead, the immediate child of <state> with a @type attribute of "citizenship" must be a <placeName> element with a @ref pointing to a Syriaca.org place URI. The schema will throw a warning message if this is not a place URI in The Syriac Gazetteer.
<ab type="factoidsubtype="citizenship"  xml:id="factoid-39resp="#ktorabi #dschwartz">  <idno type="URI">https://spear-prosop.org/3004-39</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/2562"/>    <state type="citizenship">     <placeName ref="http://syriaca.org/place/1469"/>     <note type="desc">      <persName ref="http://syriaca.org/person/2562">Epiphanius</persName>          was a citizen of <placeName ref="http://syriaca.org/place/1469">Perga</placeName>.</note>    </state>   </person>  </listPerson>  <bibl type="primary">...</bibl> </ab>
1.4.3.2.5. Physical Traits, Gender, and Ethnicity
The <trait> element is used for physical traits, gender, and ethnic labels and so it takes a @type attribute with one of the following values: ‘physical’, ‘gender’, ‘ethnicLabel’. It also takes an @ana attribute whose value must validate against the appropriate concepts in the Syriac Taxonomy. Using URIs here allows the model to contain a Linked Data reference to a specific trait, gender, or ethnicity.
<ab type="factoidsubtype="ethnicLabel"  xml:id="factoid-8resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/3090-8</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3784"/>    <trait type="ethnicLabel"     ana="http://syriaca.org/taxonomy/ethiopians">     <note type="desc">      <persName ref="http://syriaca.org/person/3784">Anonymous 3784</persName> was Ethiopian.</note>    </trait>   </person>  </listPerson>  <bibl type="primary">...</bibl> </ab>
1.4.3.2.6. Education, Language, Occupation, and Socio-economic Status

With <education>, <langKnowledge>, <occupation>, and <socecStatus>, each of these elements take an @ana attribute whose value the schema constrains to appropriate concepts in the Syriac Taxonomy. Using URIs here allows the model to contain a Linked Data reference to a specific field of eduction, occuation, etc.

<ab type="factoidsubtype="occupation"  xml:id="factoid-3resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/3019-3</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/2666"/>    <occupation ana="http://syriaca.org/taxonomy/monks">     <note type="desc">      <persName ref="http://syriaca.org/person/2666">Isidore</persName> was a monk.     </note>    </occupation>   </person>  </listPerson>  <bibl type="primary">...</bibl> </ab>

For examples of additional factoids following this format, see <education>, <langKnowledge>, <socecStatus>.

1.4.3.3. Event Factoids

Event factoids have the freest form. They contain an <event> element that takes various date attributes and an @ana attribute that can contain one or more concepts from the Syriac Taxonomy. This schema customization validates when any Syriac Taxonomy URI is used. For any other URI, the schema displays a warning message. This allows encoders to attach keywords not currently in the Syriac Taxonomy. This functions as a suggestion to editors to include this concept in the Syriac Taxonomy. If editors of both projects agree that this concept is relevant it can be included in both projects going forward.

The child <desc> element can contain text marked up with <date>, <rs>, <title>, <orgName>, <persName>, and <placeName> elements. For a discussion of how SPEAR handles different dating systems, see below on Dating Systems.

<ab type="factoidsubtype="event"  xml:id="factoid-26resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/794-26</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/miracles http://syriaca.org/taxonomy/healing">    <desc> From atop his column <persName ref="http://syriaca.org/person/1524">Zeʿora</persName> healed the sick by blessing water and sprinkling        it on them. </desc>   </event>  </listEvent>  <bibl type="primary">...</bibl> </ab>

For events with dates, the <event> element can take the date attributes @when, @notBefore, @notAfter, @from, and @to. When appropriate, the schema requires that these dates correspond to dates appearing in the <desc> element. For a discussion of how SPEAR handles different dating systems, see the section below on Dating Systems.

<event ana="http://syriaca.org/taxonomy/letters http://syriaca.org/taxonomy/sin http://syriaca.org/taxonomy/greed"  notBefore="0513notAfter="0518">  <desc>   <date notBefore="0513notAfter="0518">Sometime during his episcopacy</date>   <persName ref="http://syriaca.org/person/51">Severus of Antioch</persName> sent a letter to  <persName ref="http://syriaca.org/person/2479">Victor</persName> on the subject of the monk  <persName ref="http://syriaca.org/person/2400">John</persName> and his lust for money.  </desc> </event>
1.4.3.3.1. Events Creating Relationships
Some events create relationships. For example, a marriage creates a spousal relationship. Rather than model these using two or more separate factoids, SPEAR prefers to model the event and the relationships in one factoid. In such a case, <listRelation> is the required child of <desc> and <relation> the required child of <listRelation>. See <relation> and the discussion of Relation Factoids above for more on the encoding of relationships.
<ab type="factoidsubtype="event"  xml:id="factoid-46resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/841-46</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/ordination http://syriaca.org/taxonomy/bishops">    <desc> While traveling in <placeName ref="http://syriaca.org/place/2747">Asia</placeName>, <persName ref="http://syriaca.org/person/69">Jacob Baradaeus</persName>, <persName ref="http://syriaca.org/person/3208">Eugene</persName>, and <persName ref="http://syriaca.org/person/1336">Conon</persName>        ordained <persName ref="http://syriaca.org/person/3243">Peter</persName> as bishop of <placeName ref="http://syriaca.org/place/2856">Tralles</placeName>.    <listRelation>      <relation type="personal"       ref="http://syriaca.org/taxonomy/ordained"       active="http://syriaca.org/person/69 http://syriaca.org/person/3208 http://syriaca.org/person/1336passive="http://syriaca.org/person/74"/>     </listRelation>    </desc>   </event>  </listEvent>  <bibl type="primary">...</bibl> </ab>

In these cases, we have several pieces of data associated with one factoid URI, the event with its participants, places, dates, and taxonomy concepts, but also the relationships between the persons. All of these pieces of information get serialized into the Linked Open Data graph of SPEAR, and each is sourced to the same factoid.

1.4.3.3.2. Related Events
Most of the data in SPEAR connects to the authority files (persons, places, works, bibliography, taxonomy concepts) of Syriaca.org. The editors of Syriaca.org have so far not wanted to create authority files for events. As such, SPEAR cannot collect data directly associated with specific events. It remains desirable, however, to at least be able to connect different textual references to the same or similar events. SPEAR does this by creating a <relation> element that connects two event factoids. These <listRelation> and <relation> elements appear in a <note> element with a @type attribute indicating ‘relatedEvent’. These elements are direct children of the <ab> element containing the event. These <relation> elements take a @mutual attribute connecting two or more factoid URIs and a @ref attribute with one of the following Taxonomy URIs: ‘http://syriaca.org/taxonomy/proximate-event’ for factoids that deal with closely related events or ‘http://syriaca.org/taxonomy/same-event’ for factoids that deal with the same event.
<ab type="factoidsubtype="event"  xml:id="factoid-476resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/8559-476</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/natural-disasters"    notBefore="0524-10notAfter="0525-09">    <desc>        In <choice>      <reg>       <date notBefore="0524-10"        notAfter="0525-09calendar="Gregorian">524/5</date>      </reg>      <orig>       <date when-custom="0836"        datingMethod="Seleucid">A. Gr. 836</date>      </orig>     </choice> a flood destroyed <placeName ref="http://syriaca.org/place/78"> Edessa </placeName> for the fourth time. </desc>   </event>  </listEvent>  <bibl type="primary">...</bibl>  <note type="relatedEvent">   <listRelation>    <relation ref="http://syriaca.org/taxonomy/same-event"     type="event"     mutual="https://spear-prosop.org/8559-476 https://spear-prosop.org/8559-555">     <desc> The following factoids deal with the same event: <rs ref="https://spear-prosop.org/8559-476">8559-476</rs>, <rs ref="https://spear-prosop.org/8559-555">8559-555</rs>.     </desc>    </relation>   </listRelation>  </note> </ab>

As in the example above, the <relation> element requires a <desc> element containing a prose description of the relationships. The references to the two related factoids appear in <rs> elements with the full URI for the factoid in the @ref attribute and just the number portion of the factoid URI in the text node.

1.5. Additional Data Issues

1.5.1. Dating Systems

1.5.1.1. Simple Dates

Dates sometimes need to appear in two locations in a factoid: a <date> element in a <desc> element as well as one of several date attributes from the att.datable.w3c attribute class: @when, @notBefore, @notAfter, @from, and @to. This facilitates the combination of human readable dates with methods more easily serialized into RDF. As in the example below, the schema requires that when <date> appears in a <desc> element, it should also appear on the ancestor <event> element.
<ab type="factoidsubtype="event"  xml:id="factoid-151resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-151</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/monastic-heads http://syriaca.org/taxonomy/succession"    when="0522">    <desc>     <persName ref="http://syriaca.org/person/3263">Symy</persName>        succeeded <persName ref="http://syriaca.org/person/3255">Sergius I</persName> as the head of the    <placeName ref="http://syriaca.org/place/399">Convent of John Urtaya</placeName> in    <date when="0522calendar="Gregorian">522</date>.    </desc>   </event>  </listEvent>  <bibl type="primary">...</bibl> </ab>

1.5.1.2. Non-Gregorian Dates

Syriac sources often use non-Gregorian dating systems or non-calendrical dating systems such as regnal years. SPEAR allows the encoder to capture the dating system used in the sources while also rendering that date into a form modern readers and computer systems are more familiar with. In the case below, <choice> indicates that there are two different ways to encode the information that follows. The <orig> element captures the dating system used in the original source while the <reg> element contains a regularization of that date into an appropriate modern data. In each case, the date itself appears in a <date> element. The example below shows a Seleucid year with Syriac months in the <orig> element and the corresponding Gregorian date in the <reg> element. Only the Gregorian date is used in the @when attribute on <event> as that will be used for RDF serialization, the production of a timeline, etc.
<ab type="factoidsubtype="event"  xml:id="factoid-13resp="#ayousif #ekowalik">  <idno type="URI">https://spear-prosop.org/829-13</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/death http://syriaca.org/taxonomy/burial"    when="0560-10-22">    <desc>     <persName ref="http://syriaca.org/person/1533">Aaron</persName> died from old age on    <choice>      <reg>       <date when="0560-10-22"        calendar="Gregorian"> 22 October 560 A.D. </date>      </reg>      <orig>       <date when-custom="0872-01-22"        datingMethod="Seleucid-SyriacMonths"> 22 Teshri I 872 A. G.</date>      </orig>     </choice>        and he was laid in the <placeName ref="http://syriaca.org/place/2816">sepulchre</placeName> that        was built by the blessed <persName ref="http://syriaca.org/person/1875">Mare</persName>.    </desc>   </event>  </listEvent>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/U78B4C66"/>   <citedRange unit="p">644</citedRange>  </bibl> </ab>
SPEAR can also capture dating systems based on things like regnal years, encoding them as they appear in the source text and rendering them into a Gregorian date as well. The <note> element with an @ana attribute indicating ‘#calculated’ will appear to users of the HTML version of this data as well.
<event ana="http://syriaca.org/taxonomy/ordination http://syriaca.org/taxonomy/bishops"  notBefore="0542-04-01notAfter="0543-03-31">  <desc>   <choice>    <reg>     <date calendar="Gregorian"      notBefore="0542-04-01notAfter="0543-03-31">In 542/43</date>     <note ana="#calculated">This regularized date was calculated by the          SPEAR editor from a non-calendrical dating system such as          regnal years, etc.</note>    </reg>    <orig>     <date datingMethod="regnalYear">During the sixteenth year of the reign of Justinian</date>    </orig>   </choice>,    at the request of <persName ref="http://syriaca.org/person/3214">Hereth Bar Gabala</persName>,  <persName ref="http://syriaca.org/person/779">Theodora</persName> ordered the ordination of non-Chalcedonian bishops:  <persName ref="http://syriaca.org/person/69">Jacob Baradaeus</persName> as bishop of  <placeName ref="http://syriaca.org/place/2605">Edessa</placeName> and  <persName ref="http://syriaca.org/person/3266">Theodore of Hirtha</persName> as bishop of  <placeName ref="http://syriaca.org/place/2791">Hirtha of the Saracens</placeName>.  </desc> </event>
In this case the <reg> containing the Gregorian date also contains a note indicating that this date was calculated by the encoder of this factoid. This note will appear in the HTML page for this factoid.

1.5.2. (Un)Certainty

Since the factoid model focuses on the encoding of textual assertions about personal information, it is important that the SPEAR data model be able to indicate levels of uncertainty regarding those textual assertions. SPEAR does this using a <note> element with a @type attribute containing the value "certainty" and a @subtype attribute containing one of the following: "incerta", "dubia", or "errata". An encoder should use use "incerta" to indicate their uncertainty regarding the assertion in the text, "dubia" when they doubt the veracity of the assertion but are not convinced it is false, and "errata" when they know that the assertion is incorrect.

These uncertainty values are rendered into HTML for the viewer to see and are serialized into RDF as well so that queries of the data can exclude information with one or more of these values. This note also contains a prose description of the reason for the @subtype rating and can included a bibliographical reference as well. As in the example below, the <bibl> element receives a @type value of "secondary" because it points to a secondary source that discusses the issues at question in this note.
<ab type="factoidsubtype="event"  xml:id="factoid-321resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/8559-321</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/bishops http://syriaca.org/taxonomy/accession"    when="0448-07-21">    <desc> On    <choice>      <reg>       <date when="0448-07-21"        calendar="Gregorian">21 July 448</date>      </reg>      <orig>       <date when-custom="0759-10-21"        datingMethod="Seleucid-SyriacMonths">21 Tāmmuz A. Gr. 759</date>      </orig>     </choice>     <persName ref="http://syriaca.org/person/2292">Nonos</persName> became Bishop of <placeName ref="http://syriaca.org/place/78"> Edessa </placeName>. </desc>   </event>  </listEvent>  <bibl type="primary">...</bibl>  <note type="certaintysubtype="dubia"> The dates of Hiba's exile and Nonos' first episcopate are confused here.  <bibl type="secondary">    <ptr target="http://syriaca.org/cbss/X9NUGZJ3"/>    <citedRange unit="p">116-17</citedRange>   </bibl>  </note> </ab>

1.6. Code Templates

The SPEAR factoid model requires a large amount of XML to provide the structure for the individual factoids and facilitate the integration of structured and semi-structured data for serialization into HTML and RDF. Typing this amount of XML would get onerous. In order to speed the encoding process, SPEAR employs a set of code templates for use with oXygen XML Editor. These templates allow the encoder to drop a ‘skeleton’ of each type of factoid into a TEI XML file. You can find these code templates along with further directions for uploading and using them at https://github.com/srophe/spear/blob/main/documentation/SPEARCodeTemplatesOxygen.xml.

Here is an example of a code template for an occupation.
<ab type="factoidsubtype="occupation"  xml:id="factoid-resp="#">  <idno type="URI">https://spear-prosop.org/</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/"/>    <occupation ana="http://syriaca.org/taxonomy/">     <note type="desc">      <persName ref="http://syriaca.org/person/"/>          .     </note>    </occupation>   </person>  </listPerson> </ab>
After inserting a template like this, the encoder will see error messages directing them to complete URIs, develop the content of the <note> element, and add a <bibl> element citing the source. There is also a code template containing a ‘skeleton’ of a <bibl> formatted for SPEAR.

Please note as well that once loaded into oXygen XML editor these code templates can be edited. If, for example, the encoding work will be done by one person, they can edit the code templates to include the appropriate @resp attribute value. The same is the case for the bibliographic information.

2. SPEAR Schema Customization

2.1. Elements

2.1.1. <TEI>

<TEI> (TEI document) contains a single TEI-conformant document, combining a single TEI header with one or more members of the model.resource class. Multiple <TEI> elements may be combined within a <TEI> (or <teiCorpus>) element. [4. Default Text Structure 16.1. Varieties of Composite Text]
Moduletextstructure — SPEAR Schema Customization
Attributes
versionspecifies the version number of the TEI Guidelines against which this document is valid.
StatusOptional
Datatypeteidata.version
Note

Major editions of the Guidelines have long been informally referred to by a name made up of the letter P (for Proposal) followed by a digit. The current release is one of the many releases of the fifth major edition of the Guidelines, known as P5. This attribute may be used to associate a TEI document with a specific release of the P5 Guidelines, in the absence of a more precise association provided by the source attribute on the associated <schemaSpec>.

Contained by
textstructure: TEI
May contain
header: teiHeader
textstructure: TEI text
Note

As with all elements in the TEI scheme (except <egXML>) this element is in the TEI namespace (see 5.7.2. Namespaces). Thus, when it is used as the outermost element of a TEI document, it is necessary to specify the TEI namespace on it. This is customarily achieved by including http://www.tei-c.org/ns/1.0 as the value of the XML namespace declaration (xmlns), without indicating a prefix, and then not using a prefix on TEI elements in the rest of the document. For example: <TEI version="4.8.1" xml:lang="it" xmlns="http://www.tei-c.org/ns/1.0">.

Example
<TEI version="3.3.0" xmlns="http://www.tei-c.org/ns/1.0">  <teiHeader>   <fileDesc>    <titleStmt>     <title>The shortest TEI Document Imaginable</title>    </titleStmt>    <publicationStmt>     <p>First published as part of TEI P2, this is the P5          version using a namespace.</p>    </publicationStmt>    <sourceDesc>     <p>No source: this is an original work.</p>    </sourceDesc>   </fileDesc>  </teiHeader>  <text>   <body>    <p>This is about the shortest TEI document imaginable.</p>   </body>  </text> </TEI>
Example
<TEI version="2.9.1" xmlns="http://www.tei-c.org/ns/1.0">  <teiHeader>   <fileDesc>    <titleStmt>     <title>A TEI Document containing four page images </title>    </titleStmt>    <publicationStmt>     <p>Unpublished demonstration file.</p>    </publicationStmt>    <sourceDesc>     <p>No source: this is an original work.</p>    </sourceDesc>   </fileDesc>  </teiHeader>  <facsimile>   <graphic url="page1.png"/>   <graphic url="page2.png"/>   <graphic url="page3.png"/>   <graphic url="page4.png"/>  </facsimile> </TEI>
Content model
<content>
 <sequence>
  <elementRef key="teiHeader"/>
  <alternate>
   <sequence>
    <classRef key="model.resource"
     minOccurs="1" maxOccurs="unbounded"/>
    <elementRef key="TEI" minOccurs="0"
     maxOccurs="unbounded"/>
   </sequence>
   <elementRef key="TEI" minOccurs="1"
    maxOccurs="unbounded"/>
  </alternate>
 </sequence>
</content>
    
Schema Declaration
element TEI
{
   att.global.attributes,
   att.typed.attributes,
   attribute version { text }?,
   ( teiHeader, ( ( model.resource+, TEI* ) | TEI+ ) )
}

2.1.2. <ab>

<ab>
Modulelinking — SPEAR Schema Customization
Attributes
xml:id
StatusRequired
DatatypeID
Schematron
<sch:assert test="starts-with(., 'factoid-')">An @xml:id attribute starts with 'factoid-'.</sch:assert> <sch:report test="matches(substring-after(., '-'), '\D')">A properly formatted SPEAR factoid URI ends with a hyphen followed by a number.</sch:report> <sch:assert test="matches(substring-after(., '-'), '\d')">A properly formatted SPEAR factoid URI ends with a number.</sch:assert>
resp
StatusRequired
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
type
StatusRequired
Datatypeteidata.enumerated
subtype
StatusRequired
Legal values are:
birth
(birth) Used to designate person factoids that encode birth dates and/or locations
citizenship
(citizenship) Used to designate person factoids that encode citizenship
death
(death) Used to designate person factoids that encode death dates and/or locations
education
(education) Used to designate person factoids that encode education
ethnicLabel
(ethnic label) Used to designate person factoids that encode ethnic labels
event
(event) Used to designate event factoids
gender
(gender) Used to designate person factoids that encode gender
langKnown
(language known) Used to designate person factoids that encode language knowledge
mentalState
(mental state) Used to designate person factoids that encode mental states
nameVariant
(name variant) Used to designate person factoids that encode name variants
occupation
(occupation) Used to designate person factoids that encode occupations
physicalTrait
(physical trait) Used to designate person factoids that encode physical traits
relation
(relation) Used to designate relation factoids
religiousAffiliation
(religious affiliation) Used to designate person factoids that encode the religious affiliation of a person
residence
(residence) Used to designate person factoids that encode places and dates of residence
sanctity
(sanctity) Used to designate person factoids that encode sanctity
socecStatus
(socio-economic status) Used to designate person factoids that encode socio-econimic status
Contained by
textstructure: body
May contain
core: bibl note
header: idno
Note

This customization requires the basic pattern of SPEAR factoids to be encoded correctly. Each factoid is encoded in an <ab> element. Since each factoid contains data on a Person, Event, or Relation, the schema requires that <ab> must contain a <listPerson>, <listEvent>, or <listRelation> child element. Since every factoid requires a bibliographic reference, every <ab> must contain one or more child <bibl> elements. The encoder also has the option of adding a <note> element to the factoid as well.

This customization also requires that every <ab> element receives @xml:id, @type, @subtype, and @resp attributes. The @xml:id must take the form "factoid-{\d}" where {\d} is a number unique within the document. The @type attribute must be "factoid". The @subtype attribute comes from a closed list of data types encoded in the SPEAR project. The @resp attribute must point to an editor listed in the <titleStmt>. This ensures that all contributions are attributed at the factoid level.

Example
<ab type="factoidsubtype="residence"  xml:id="factoid-42resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-42</idno>  <listPerson>   <personGrp>    <persName ref="http://syriaca.org/person/3669"/>    <residence>     <placeName ref="http://syriaca.org/place/399"/>     <note type="desc">      <persName ref="http://syriaca.org/person/3669">Anonymi            3669</persName> resided in the <placeName ref="http://syriaca.org/place/399">Convent of John            Urtaya</placeName> in <placeName ref="http://syriaca.org/place/8">Amida</placeName>. </note>    </residence>   </personGrp>  </listPerson>  <bibl type="primary">   <ptr target="http://syriaca.org/work/10510"/>   <citedRange unit="p">555</citedRange>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/PHMZMM3R"/>   <citedRange unit="p">209</citedRange>  </bibl> </ab> <ab type="factoidsubtype="relation"  xml:id="factoid-43resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-43</idno>  <listRelation>   <relation type="person"    ref="http://syriaca.org/taxonomy/fellow-monastics"    mutual="http://syriaca.org/person/3249 http://syriaca.org/person/3227 http://syriaca.org/person/3669">    <desc>     <persName ref="http://syriaca.org/person/3249">Samuel</persName>, <persName ref="http://syriaca.org/person/3227">Jonathan</persName> and <persName ref="http://syriaca.org/person/3669">Anonymous 3669</persName> were monks at the same monastery.</desc>   </relation>  </listRelation>  <bibl type="primary">   <ptr target="http://syriaca.org/work/10510"/>   <citedRange unit="p">555</citedRange>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/PHMZMM3R"/>   <citedRange unit="p">209</citedRange>  </bibl> </ab> <ab type="factoidsubtype="event"  xml:id="factoid-44resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-44</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/death">    <desc>     <persName ref="http://syriaca.org/person/3218">John          Urtaya</persName> died. </desc>   </event>  </listEvent>  <bibl type="primary">   <ptr target="http://syriaca.org/work/10510"/>   <citedRange unit="p">555</citedRange>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/PHMZMM3R"/>   <citedRange unit="p">209</citedRange>  </bibl> </ab>
Schematron
<sch:rule context="tei:ab[ancestor::tei:body]"> <sch:assert test="@xml:id">An <ab> descendant of <body> requires an @xml:id attribute.</sch:assert> <sch:assert test="@resp">An <ab> descendant of <body> requires a @resp attribute.</sch:assert> <sch:assert test="@type='factoid'">An <ab> descendant of <body> requires a @type attribute with the value "factoid".</sch:assert> </sch:rule> <sch:rule context="tei:ab[ancestor::tei:body]/@resp"> <sch:let name="contributorRefs"  value="//tei:name[ancestor::tei:respStmt]/@ref"/> <sch:let name="respPtrs"  value="for $i in $contributorRefs return substring-after($i, '.xml')"/> <sch:assert test=" every $i in (tokenize(., ' ')) satisfies $i = $respPtrs"> Acceptable values for this @resp attribute include: <sch:value-of select="string-join($respPtrs, '; ')"/>. </sch:assert> </sch:rule>
Content model
<content>
 <alternate minOccurs="1" maxOccurs="1">
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="idno" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="listPerson"
    minOccurs="1" maxOccurs="1"/>
   <elementRef key="bibl" minOccurs="1"
    maxOccurs="unbounded"/>
   <elementRef key="note" minOccurs="0"
    maxOccurs="unbounded"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="idno" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="listEvent"
    minOccurs="1" maxOccurs="1"/>
   <elementRef key="bibl" minOccurs="1"
    maxOccurs="unbounded"/>
   <elementRef key="listRelation"
    minOccurs="0" maxOccurs="1"/>
   <elementRef key="note" minOccurs="0"
    maxOccurs="unbounded"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="idno" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="listRelation"
    minOccurs="1" maxOccurs="1"/>
   <elementRef key="bibl" minOccurs="1"
    maxOccurs="unbounded"/>
   <elementRef key="note" minOccurs="0"
    maxOccurs="unbounded"/>
  </sequence>
 </alternate>
</content>
    
Schema Declaration
element ab
{
   attribute xml:id { text },
   attribute resp { list { + } },
   attribute type { text },
   attribute subtype
   {
      "birth"
    | "citizenship"
    | "death"
    | "education"
    | "ethnicLabel"
    | "event"
    | "gender"
    | "langKnown"
    | "mentalState"
    | "nameVariant"
    | "occupation"
    | "physicalTrait"
    | "relation"
    | "religiousAffiliation"
    | "residence"
    | "sanctity"
    | "socecStatus"
   },
   (
      ( idno, listPerson, bibl+, note* )
    | ( idno, listEvent, bibl+, listRelation?, note* )
    | ( idno, listRelation, bibl+, note* )
   )
}

2.1.3. <author>

<author> (author) in a bibliographic reference, contains the name(s) of an author, personal or corporate, of a work; for example in the same form as that provided by a recognized bibliographic name authority. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement]
Modulecore — SPEAR Schema Customization
Attributes
Contained by
core: bibl
May contain
Note

Particularly where cataloguing is likely to be based on the content of the header, it is advisable to use a generally recognized name authority file to supply the content for this element. The attributes key or ref may also be used to reference canonical information about the author(s) intended from any appropriate authority, such as a library catalogue or online resource.

In the case of a broadcast, use this element for the name of the company or network responsible for making the broadcast.

Where an author is unknown or unspecified, this element may contain text such as Unknown or Anonymous. When the appropriate TEI modules are in use, it may also contain detailed tagging of the names used for people, organizations or places, in particular where multiple names are given.

Example
<author>British Broadcasting Corporation</author> <author>La Fayette, Marie Madeleine Pioche de la Vergne, comtesse de (1634–1693)</author> <author>Anonymous</author> <author>Bill and Melinda Gates Foundation</author> <author>  <persName>Beaumont, Francis</persName> and <persName>John Fletcher</persName> </author> <author>  <orgName key="BBC">British Broadcasting    Corporation</orgName>: Radio 3 Network </author>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
    
Schema Declaration
element author
{
   att.global.attributes,
   att.datable.attributes,
   att.naming.attributes,
   macro.phraseSeq
}

2.1.4. <authority>

<authority> (release authority) supplies the name of a person or other agency responsible for making a work available, other than a publisher or distributor. [2.2.4. Publication, Distribution, Licensing, etc.]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
May containCharacter data only
Note

Syriaca.org is identified as the responsible entity using <authority>.

Example
<publicationStmt>  <authority>Syriaca.org: The Syriac Reference Portal</authority>  <idno type="URI">https://spear-prosop.org/3159/tei</idno>  <availability>   <licence target="http://creativecommons.org/licenses/by/4.0/">    <p>Distributed under a Creative Commons Attribution 4.0 International License (CC BY 4.0)</p>   </licence>  </availability>  <date>2020-01-03-05:00</date> </publicationStmt>
Schematron
<sch:rule context="//tei:publicationStmt/tei:authority"> <sch:assert test="normalize-space(.) = 'Syriaca.org: The Syriac Reference Portal'"> The <authority> element should contain the text: "Syriaca.org: The Syriac Reference Portal." </sch:assert> </sch:rule>
Content model
<content>
 <textNode/>
</content>
    
Schema Declaration
element authority { att.global.attributes, att.canonical.attributes, text }

2.1.5. <availability>

<availability> (availability) supplies information about the availability of a text, for example any restrictions on its use or distribution, its copyright status, any licence applying to it, etc. [2.2.4. Publication, Distribution, Licensing, etc.]
Moduleheader — SPEAR Schema Customization
Attributes
status(status) supplies a code identifying the current availability of the text.
StatusOptional
Datatypeteidata.enumerated
Legal values are:
free
(free) the text is freely available.
unknown
(unknown) the status of the text is unknown.
restricted
(restricted) the text is not freely available.
Contained by
May contain
core: p
header: licence
Note

A consistent format should be adopted

Example
<availability status="restricted">  <p>Available for academic research purposes only.</p> </availability> <availability status="free">  <p>In the public domain</p> </availability> <availability status="restricted">  <p>Available under licence from the publishers.</p> </availability>
Example
<availability>  <licence target="http://opensource.org/licenses/MIT">   <p>The MIT License      applies to this document.</p>   <p>Copyright (C) 2011 by The University of Victoria</p>   <p>Permission is hereby granted, free of charge, to any person obtaining a copy      of this software and associated documentation files (the "Software"), to deal      in the Software without restriction, including without limitation the rights      to use, copy, modify, merge, publish, distribute, sublicense, and/or sell      copies of the Software, and to permit persons to whom the Software is      furnished to do so, subject to the following conditions:</p>   <p>The above copyright notice and this permission notice shall be included in      all copies or substantial portions of the Software.</p>   <p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR      IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,      FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE      AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,      OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN      THE SOFTWARE.</p>  </licence> </availability>
Content model
<content>
 <alternate minOccurs="1"
  maxOccurs="unbounded">
  <classRef key="model.availabilityPart"/>
  <classRef key="model.pLike"/>
 </alternate>
</content>
    
Schema Declaration
element availability
{
   att.global.attributes,
   att.declarable.attributes,
   attribute status { "free" | "unknown" | "restricted" }?,
   ( model.availabilityPart | model.pLike )+
}

2.1.6. <back>

<back> (back matter) contains any appendixes, etc. following the main part of a text. [4.7. Back Matter 4. Default Text Structure]
Moduletextstructure — SPEAR Schema Customization
Attributes
Contained by
textstructure: text
May contain
core: listBibl
Note

The <back> element must contain only one <listBibl> element. The <back> element is used to provide a human-readable "Works Cited" in the TEI file. Otherwise, works are cited in each factoid using the Syriaca.org URI. This section includes both the source of the factoids and any secondary literature cited in factoid notes.

Example
<back>  <listBibl>   <head>Works Cited</head>   <bibl type="primaryxml:id="bibl8559-1">    <title xml:lang="la">Chronica minora</title>    <editor>Ignatius Guidi</editor>    <ptr target="http://syriaca.org/cbss/XQU5AW69"/>   </bibl>   <bibl type="primaryxml:id="bibl8559-2">    <title xml:lang="enlevel="a">The Chronicle of Edessa</title>    <title level="j">The Journal of Sacred Literature, New Series [=Series        4]</title>    <editor role="translator">B. Cowper</editor>    <date when="1865">1865</date>    <biblScope unit="vol">5</biblScope>    <biblScope unit="pp">28-45</biblScope>    <ptr target="http://syriaca.org/cbss/IRKW44YC"/>   </bibl>   <bibl type="secondary"    xml:id="bibl8559-3">    <title xml:lang="de">Untersuchungen über die Edessenische Chronik. Texte und        Untersuchungen zur Geschichte der altchristlichen Literatur 9.1</title>    <author>Ludwig Hallier</author>    <pubPlace>Leipzig</pubPlace>    <publisher>J.C. Hinrichs</publisher>    <date>1892</date>    <ptr target="http://syriaca.org/cbss/YMVDWHT5"/>   </bibl>   <bibl type="secondary"    xml:id="bibl8559-4">    <title xml:lang="en">Stewards of the Poor: The Man of God, Rabbula, and Hiba in        Fifth-Century Edessa</title>    <editor role="translator">Robert Doran</editor>    <pubPlace>Kalamazoo, MI</pubPlace>    <publisher>Cistercian Publications</publisher>    <date>2006</date>    <ptr target="http://syriaca.org/cbss/X9NUGZJ3"/>   </bibl>  </listBibl> </back>
Content model
<content>
 <elementRef key="listBibl" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element back { att.global.attributes, att.declaring.attributes, listBibl }

2.1.7. <bibl>

<bibl> (bibliographic citation) contains a loosely-structured bibliographic citation of which the sub-components may or may not be explicitly tagged. [3.12.1. Methods of Encoding Bibliographic References and Lists of References 2.2.7. The Source Description 16.3.2. Declarable Elements]
Modulecore — SPEAR Schema Customization
Attributes
typecharacterizes the element in some sense, using any convenient classification scheme or typology.
Derived fromatt.typed
StatusRequired
Datatypeteidata.enumerated
Legal values are:
primary
secondary
urn
Member of
Contained by
May contain
Note

SPEAR only uses @xml:id and @type attributes on the <bibl> element. SPEAR uses <bibl> elements with an @xml:id only in the <back> of the TEI file. The @type attribute indicates whether the <bibl> is "primary", "secondary", or a "urn".

Since SPEAR relies on the Linked Open Data infrastructure of Syriaca.org, a <bibl> element in the body only requires a <ptr> element indicating the Syriaca.org URI or CTS URN for the bibliographic reference. When indicating a CTS URNs no other additional information is required. When indicating a Syriaca.org URI, a <citedRange> is needed.

Example
<body> ... <ab type="factoidsubtype="relation"   xml:id="factoid-5resp="#dschwartz">   <idno type="URI">https://spear-prosop.org/3159-5</idno>   <listRelation>    <relation type="person"     ref="http://syriaca.org/taxonomy/cited-negativelyactive="http://syriaca.org/person/51"     passive="http://syriaca.org/person/781">     <desc>      <persName ref="http://syriaca.org/person/51">Severus</persName>          cited positively     <persName ref="http://syriaca.org/person/781">Theodoret</persName>.     </desc>    </relation>   </listRelation>   <bibl type="primary">    <ptr target="http://syriaca.org/cbss/X6ZICMNL"/>    <citedRange unit="p">206</citedRange>    <citedRange unit="part">11</citedRange>   </bibl>  </ab> </body> <back>  <listBibl>   <head>Works Cited</head>   <bibl type="primaryxml:id="bibl3159-1">    <title xml:lang="en">A Collection of Letters of Severus of Antioch</title>    <title xml:lang="lalevel="s">Patrologia Orientalis</title>    <author>     <persName ref="http://syriaca.org/person/51">Severus of          Antioch</persName>    </author>    <editor>     <persName ref="http://syriaca.org/person/403">E. W.          Brooks</persName>    </editor>    <biblScope unit="tomus">12</biblScope>    <ptr target="http://syriaca.org/cbss/X6ZICMNL"/>    <citedRange unit="p">203-06</citedRange>    <citedRange unit="part">11</citedRange>   </bibl>  </listBibl> </back>
Schematron
<sch:rule context="tei:back//tei:bibl"> <sch:assert test="@xml:id">A <bibl> element in the back matter must contain an @xml:id attribute.</sch:assert> </sch:rule> <sch:rule context="tei:back//tei:bibl/@xml:id"> <sch:let name="docURIno"  value="//tei:publicationStmt/tei:idno[@type='URI']/substring-after(substring-before(., '/tei'), 'spear-prosop.org/')"/> <sch:assert test="contains(., concat('bibl', $docURIno, '-'))">The @xml:id on <bibl> in the back matter must take the following form: 'bibl' + '<sch:value-of select="$docURIno"/>' + '-' + a unique number.</sch:assert> <sch:assert test="count(distinct-values(//tei:back//tei:bibl/@xml:id)) eq count(//tei:back//tei:bibl/@xml:id)">Each @xml:id attribute on <bibl> must have a unique value.</sch:assert> <sch:report test="matches(substring-after(., '-'), '\D')">A properly formatted @xml:id ends with a number.</sch:report> <sch:assert test="matches(substring-after(., '-'), '\d')">A properly formatted @xml:id ends with a number.</sch:assert> </sch:rule>
Content model
<content>
 <sequence minOccurs="0" maxOccurs="1"
  preserveOrder="true">
  <elementRef key="title" minOccurs="0"
   maxOccurs="2"/>
  <elementRef key="author" minOccurs="0"
   maxOccurs="unbounded"/>
  <elementRef key="editor" minOccurs="0"
   maxOccurs="unbounded"/>
  <elementRef key="pubPlace" minOccurs="0"
   maxOccurs="1"/>
  <elementRef key="publisher" minOccurs="0"
   maxOccurs="1"/>
  <elementRef key="date" minOccurs="0"
   maxOccurs="1"/>
  <elementRef key="biblScope" minOccurs="0"
   maxOccurs="2"/>
  <elementRef key="ptr" minOccurs="1"
   maxOccurs="1"/>
  <elementRef key="citedRange"
   minOccurs="0" maxOccurs="3"/>
 </sequence>
</content>
    
Schema Declaration
element bibl
{
   att.global.attributes,
   att.canonical.attributes,
   att.cmc.attributes,
   att.declarable.attributes,
   att.docStatus.attributes,
   att.sortable.attributes,
   att.typed.attribute.subtype,
   attribute type { "primary" | "secondary" | "urn" },
   (
      (
         ( title?, ( title, title? )? ),
         author*,
         editor*,
         pubPlace?,
         publisher?,
         date?,
         ( biblScope?, ( biblScope, biblScope? )? ),
         ptr,
         ( citedRange?, ( citedRange, ( citedRange, citedRange? )? )? )
      )?
   )
}

2.1.8. <biblScope>

<biblScope> (scope of bibliographic reference) defines the scope of a bibliographic reference, for example as a list of page numbers, or a named subdivision of a larger work. [3.12.2.5. Scopes and Ranges in Bibliographic Citations]
Modulecore — SPEAR Schema Customization
Attributes
unitidentifies the unit of information conveyed by the element, e.g. columns, pages, volume, entry.
Derived fromatt.citing
StatusRequired
Datatypeteidata.enumerated
Legal values are:
pp
the element contains a page number or page range.
line
the element contains a line number or line range.
part
the element contains a part of a book or collection, i.e. chapter and verse of a biblical text.
column
the element identifies a column.
volume
Contained by
core: bibl
header: seriesStmt
May contain
core: title
header: idno
character data
Note

Even though SPEAR relies on the Linked Open Data infrastructure of Syriaca.org for bibliographic information on Works Cited, we have included additional information in the <back> so that the TEI file is more easily read by a human. Otherwise, the relevant <biblScope> enters the Syriaca.org knowledge graph through the bibliography URI in each factoid.

Example
<back>  <listBibl>   <head>Works Cited</head>   <bibl type="primaryxml:id="bibl3159-1">    <title xml:lang="en">A Collection of Letters of Severus of Antioch</title>    <title xml:lang="lalevel="s">Patrologia Orientalis</title>    <author>     <persName ref="http://syriaca.org/person/51">Severus of          Antioch</persName>    </author>    <editor>     <persName ref="http://syriaca.org/person/403">E. W.          Brooks</persName>    </editor>    <biblScope unit="tomus">12</biblScope>    <ptr target="http://syriaca.org/cbss/X6ZICMNL"/>    <citedRange unit="p">203-06</citedRange>    <citedRange unit="part">11</citedRange>   </bibl>  </listBibl> </back>
Content model
<content>
 <sequence minOccurs="0" maxOccurs="1">
  <textNode/>
  <elementRef key="title" minOccurs="0"
   maxOccurs="1"/>
  <elementRef key="idno" minOccurs="0"
   maxOccurs="1"/>
 </sequence>
</content>
    
Schema Declaration
element biblScope
{
   att.global.attributes,
   att.citing.attribute.from,
   att.citing.attribute.to,
   attribute unit { "pp" | "line" | "part" | "column" | "volume" },
   ( ( text, title?, idno? )? )
}

2.1.9. <birth>

<birth> (birth) contains information about a person's birth, such as its date and place. [16.2.2. The Participant Description]
Modulenamesdates — SPEAR Schema Customization
Attributes
Contained by
namesdates: person
May contain
namesdates: placeName
Note

This customization restricts the attribute classes of the <birth> element to att.datable.w3c but excludes the @to and @from attributes. If more precise dating is required for a SPEAR factoid, encoder should use the <date> element.

It also restricts the child elements to those dealing with dates (<date> or <choice>), <placeName>, and <note>.

Example
<ab type="factoidsubtype="birth"  xml:id="factoid-21resp="#nelder">  <idno type="URI">https://spear-prosop.org/834-21</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/2069"/>    <birth>     <placeName ref="http://syriaca.org/place/486">Syria</placeName>     <note type="desc">      <persName ref="http://syriaca.org/person/2069">Sergius</persName> was born in     <placeName ref="http://syriaca.org/place/486">Syria</placeName> in the region of     <placeName ref="http://syriaca.org/place/576">Aremenia</placeName>.     </note>    </birth>   </person>  </listPerson> ... </ab>
Content model
<content>
 <sequence minOccurs="1" maxOccurs="1"
  preserveOrder="true">
  <alternate minOccurs="0" maxOccurs="1">
   <elementRef key="date" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="choice" minOccurs="1"
    maxOccurs="1"/>
  </alternate>
  <elementRef key="placeName" minOccurs="0"
   maxOccurs="1"/>
  <elementRef key="note" minOccurs="1"
   maxOccurs="1"/>
 </sequence>
</content>
    
Schema Declaration
element birth
{
   att.datable.w3c.attribute.when,
   att.datable.w3c.attribute.notBefore,
   att.datable.w3c.attribute.notAfter,
   ( ( date | choice )?, placeName?, note )
}

2.1.10. <body>

<body> (text body) contains the whole body of a single unitary text, excluding any front or back matter. [4. Default Text Structure]
Moduletextstructure — SPEAR Schema Customization
Attributes
Contained by
textstructure: text
May contain
linking: ab
Note

The body of a SPEAR file contains factoids, each of which appears in a separate <ab> element. As such, <ab> is the only acceptable child element of <body>.

Example
<body>  <ab type="factoidsubtype="event"   xml:id="factoid-1resp="#dschwartz">   <idno type="URI">https://spear-prosop.org/3218-1</idno>   <listEvent>    <event ana="http://syriaca.org/taxonomy/letters http://syriaca.org/taxonomy/bible http://syriaca.org/taxonomy/exegesis"     notBefore="0513notAfter="0518">     <desc>      <persName ref="http://syriaca.org/person/51">Severus</persName> wrote a letter to     <persName ref="http://syriaca.org/person/44">Philoxenus</persName> on the interpretation of     <title ref="http://syriaca.org/work/9595">1 Corinthians</title> 3.10.     <listRelation>       <relation type="person"        ref="http://syriaca.org/taxonomy/sender-of-letter-toactive="http://syriaca.org/person/51"        passive="http://syriaca.org/person/44notBefore="0513notAfter="0518"/>      </listRelation>     </desc>    </event>   </listEvent>   <bibl type="primary">    <ptr target="http://syriaca.org/cbss/4DVWZDNU"/>    <citedRange unit="p">122-23</citedRange>    <citedRange unit="part">77</citedRange>   </bibl>  </ab> </body>
Content model
<content>
 <elementRef key="ab" minOccurs="1"
  maxOccurs="unbounded"/>
</content>
    
Schema Declaration
element body { att.global.attributes, att.declaring.attributes, ab+ }

2.1.11. <catDesc>

<catDesc> (category description) describes some category within a taxonomy or text typology, either in the form of a brief prose description or in terms of the situational parameters used by the TEI formal <textDesc>. [2.3.7. The Classification Declaration]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: category
May containCharacter data only
Note

SPEAR only uses <catDesc> to describe a taxonomy category used to indicate a date that has been calculated by the editors based on a regnal year given in the text.

Example
<classDecl>  <taxonomy>   <category xml:id="calculated">    <catDesc> Used to denote a date calculated by the editor from a regnal year        given in the text. </catDesc>   </category>  </taxonomy> </classDecl>
Content model
<content>
 <textNode/>
</content>
    
Schema Declaration
element catDesc { att.global.attributes, att.canonical.attributes, text }

2.1.12. <category>

<category> (category) contains an individual descriptive category, possibly nested within a superordinate category, within a user-defined taxonomy. [2.3.7. The Classification Declaration]
Moduleheader — SPEAR Schema Customization
Attributes
xml:id(identifier) provides a unique identifier for the element bearing the attribute.
Derived fromatt.global
StatusOptional
DatatypeID
Legal values are:
calculated
Contained by
header: taxonomy
May contain
header: catDesc
Note

SPEAR only uses <category> to indicate a date that has been calculated by the editors based on a regnal year given in the text.

Example
<classDecl>  <taxonomy>   <category xml:id="calculated">    <catDesc> Used to denote a date calculated by the editor from a regnal year        given in the text. </catDesc>   </category>  </taxonomy> </classDecl>
Content model
<content>
 <elementRef key="catDesc" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element category
{
   att.global.attribute.n,
   att.global.attribute.xmllang,
   att.global.attribute.xmlbase,
   att.global.attribute.xmlspace,
   att.global.analytic.attribute.ana,
   att.global.linking.attribute.corresp,
   att.global.linking.attribute.synch,
   att.global.linking.attribute.sameAs,
   att.global.linking.attribute.copyOf,
   att.global.linking.attribute.next,
   att.global.linking.attribute.prev,
   att.global.linking.attribute.exclude,
   att.global.linking.attribute.select,
   att.global.rendition.attribute.rend,
   att.global.rendition.attribute.style,
   att.global.rendition.attribute.rendition,
   att.global.responsibility.attribute.cert,
   att.global.responsibility.attribute.resp,
   att.global.source.attribute.source,
   att.datcat.attributes,
   attribute xml:id { "calculated" }?,
   catDesc
}

2.1.13. <change>

<change> (change) documents a change or set of changes made during the production of a source document, or during the revision of an electronic file. [2.6. The Revision Description 2.4.1. Creation 12.7. Identifying Changes and Revisions]
Moduleheader — SPEAR Schema Customization
Attributes
target(target) points to one or more elements that belong to this change.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
Contained by
header: revisionDesc
May contain
Note

The who attribute may be used to point to any other element, but will typically specify a <respStmt> or <person> element elsewhere in the header, identifying the person responsible for the change and their role in making it.

It is recommended that changes be recorded with the most recent first. The status attribute may be used to indicate the status of a document following the change documented.

Example
<titleStmt>  <title> ... </title>  <editor xml:id="LDB">Lou Burnard</editor>  <respStmt xml:id="BZ">   <resp>copy editing</resp>   <name>Brett Zamir</name>  </respStmt> </titleStmt> <!-- ... --> <revisionDesc status="published">  <change who="#BZwhen="2008-02-02"   status="public">Finished chapter 23</change>  <change who="#BZwhen="2008-01-02"   status="draft">Finished chapter 2</change>  <change n="P2.2when="1991-12-21"   who="#LDB">Added examples to section 3</change>  <change when="1991-11-11who="#MSM">Deleted chapter 10</change> </revisionDesc>
Example
<profileDesc>  <creation>   <listChange>    <change xml:id="DRAFT1">First draft in pencil</change>    <change xml:id="DRAFT2"     notBefore="1880-12-09">First revision, mostly        using green ink</change>    <change xml:id="DRAFT3"     notBefore="1881-02-13">Final corrections as        supplied to printer.</change>   </listChange>  </creation> </profileDesc>
Content model
<content>
 <macroRef key="macro.specialPara"/>
</content>
    
Schema Declaration
element change
{
   att.global.attributes,
   att.ascribed.attributes,
   att.datable.attributes,
   att.docStatus.attributes,
   att.typed.attributes,
   attribute target { list { + } }?,
   macro.specialPara
}

2.1.14. <choice>

<choice> (choice) groups a number of alternative encodings for the same point in a text. [3.5. Simple Editorial Changes]
Modulecore — SPEAR Schema Customization
Member of
Contained by
May contain
Note

SPEAR mainly uses the <choice> element to capture original dating schemes used in the source texts. The <choice> element allows this date to exist alongside a Gregorian date that can put events onto a timeline.

Example
<ab type="factoidsubtype="event"  xml:id="factoid-202resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-202</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/death"    notBefore="0565-10notAfter="0566-09">    <desc>     <persName ref="http://syriaca.org/person/2284">Emperor          Justinian</persName> died in the year    <choice>      <reg>       <date notBefore="0565-10"        notAfter="0566-09calendar="Gregorian">565/6</date>      </reg>      <orig>       <date when-custom="0877"        datingMethod="Seleucid">A. Gr.              877</date>      </orig>     </choice>    </desc>   </event>  </listEvent>  <bibl type="primary">   <ptr target="http://syriaca.org/work/10510"/>   <citedRange unit="p">572</citedRange>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/PHMZMM3R"/>   <citedRange unit="p">226</citedRange>  </bibl> </ab>
Content model
<content>
 <alternate minOccurs="2"
  maxOccurs="unbounded">
  <classRef key="model.choicePart"/>
  <elementRef key="choice"/>
 </alternate>
</content>
    
Schema Declaration
element choice
{
   ( model.choicePart | choice ),
   ( model.choicePart | choice ),
   ( model.choicePart | choice )*
}

2.1.15. <citedRange>

<citedRange>
Modulecore — SPEAR Schema Customization
Attributes
unit
StatusRequired
Datatypeteidata.enumerated
Legal values are:
p
the element contains a page number or page range.
line
the element contains a line number or line range.
part
the element contains a part of a book or collection, i.e. chapter and verse of a biblical text.
column
the element identifies a column.
Contained by
core: bibl
May containCharacter data only
Note

SPEAR only allows text in a <citedRange> element and requires the use of a @unit attribute with a closed list. SPEAR prefers that encoders use the part value and cite ancient texts according to section numbers. However, page numbers are also allowed.

Example
<ab type="factoidsubtype="nameVariant"  xml:id="factoid-1resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/811-1</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/2153">Zacharias</persName>   </person>  </listPerson>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/2IBLUVC7"/>   <citedRange unit="p">266</citedRange>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/work/811"/>   <citedRange unit="p">266</citedRange>  </bibl> </ab>
Content model
<content>
 <textNode/>
</content>
    
Schema Declaration
element citedRange
{
   attribute unit { "p" | "line" | "part" | "column" },
   text
}

2.1.16. <classDecl>

<classDecl> (classification declarations) contains one or more taxonomies defining any classificatory codes used elsewhere in the text. [2.3.7. The Classification Declaration 2.3. The Encoding Description]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: encodingDesc
May contain
header: taxonomy
Note

SPEAR only uses <classDecl> to indicate a date that has been calculated by the editors based on a regnal year given in the text.

Example
<classDecl>  <taxonomy>   <category xml:id="calculated">    <catDesc> Used to denote a date calculated by the editor from a regnal year        given in the text. </catDesc>   </category>  </taxonomy> </classDecl>
Content model
<content>
 <elementRef key="taxonomy" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element classDecl { att.global.attributes, taxonomy }

2.1.17. <corr>

<corr> (correction) contains the correct form of a passage apparently erroneous in the copy text. [3.5.1. Apparent Errors]
Modulecore — SPEAR Schema Customization
Member of
Contained by
May contain
Note

SPEAR encodes when there is a mistake in the source text and uses the <corr> element to offer the correction. This customization also restricts <reg> to model.choicePart and model.pPart.transcriptional.

Example
<ab type="factoidsubtype="event"  xml:id="factoid-52resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/8559-52</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/emperors http://syriaca.org/taxonomy/accession"    when="-0044">    <desc> In    <choice>      <corr>       <date when="-0044"        calendar="Gregorian">44 B.C.</date>      </corr>      <sic>       <reg>        <date notBefore="-0046-10"         notAfter="-0045-09calendar="Gregorian">46/5 B.C.</date>       </reg>       <orig>        <date when-custom="0266"         datingMethod="Seleucid">A. Gr.                266</date>       </orig>      </sic>     </choice>     <persName ref="http://syriaca.org/person/2238">Augustus</persName> became King of    <placeName ref="http://syriaca.org/place/166"> Rome </placeName>.    </desc>   </event>  </listEvent>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/XQU5AW69"/>   <citedRange unit="p">3</citedRange>  </bibl>  <bibl type="urn">   <ptr target="urn:cts:syriacLit:nhsl8559.syriacCorpus57:3"/>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/IRKW44YC"/>   <citedRange unit="part">2</citedRange>  </bibl>  <note type="certaintysubtype="errata"> The author has apparently mistaken the date of Augustus'    accession. </note> </ab>
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
    
Schema Declaration
element corr { macro.paraContent }

2.1.18. <date>

<date> (date) contains a date in any format. [3.6.4. Dates and Times 2.2.4. Publication, Distribution, Licensing, etc. 2.6. The Revision Description 3.12.2.4. Imprint, Size of a Document, and Reprint Information 16.2.3. The Setting Description 14.4. Dates]
Modulecore — SPEAR Schema Customization
Attributes
datingMethodsupplies a pointer to a <calendar> element or other means of interpreting the values of the custom dating attributes.
Derived fromatt.datable.custom
StatusOptional
Datatypeteidata.pointer
Suggested values include:
Seleucid
the element contains a date (year) according to the Seleucid calendar.
Seleucid-SyriacMonths
the element contains a date (month and year) according to the Seleucid calendar.
regnalYear
the element contains a date according to the year of a king's reign.
calendar
StatusOptional
Datatypeteidata.pointer
Schematron
<sch:rule context="tei:date[parent::tei:reg]/@calendar"> <sch:assert test=". = 'Gregorian'">A <date> element child of <reg> must have a @calendar attribute with a value of "Gregorian".</sch:assert> </sch:rule>
Suggested values include:
Gregorian
The element contains a date according to the Gregorian calendar.
Seleucid
The element contains a date according to the Seleucid calendar.
Member of
Contained by
May contain
Note

SPEAR is able to capture a variety of calendars and dating methods. This customization seeks to ensure some consistency of date encoding.

Example
<ab> ... <death when="0560-10-22">   <choice>    <reg>     <date when="0560-10-22"      calendar="Gregorian"> 22 October 560 A.D. </date>    </reg>    <orig>     <date when-custom="0872-01-22"      datingMethod="Seleucid-SyriacMonths"> 22 Teshri I 872 A. G.</date>    </orig>   </choice>   <note type="desc">    <persName ref="http://syriaca.org/person/1533">Aaron</persName> died on 22      October 560.   </note>  </death> ... </ab>
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">
  <textNode/>
  <classRef key="model.gLike"/>
  <classRef key="model.phrase"/>
  <classRef key="model.global"/>
 </alternate>
</content>
    
Schema Declaration
element date
{
   att.datable.custom.attribute.when-custom,
   att.datable.custom.attribute.notBefore-custom,
   att.datable.custom.attribute.notAfter-custom,
   att.datable.custom.attribute.from-custom,
   att.datable.custom.attribute.to-custom,
   att.datable.custom.attribute.datingPoint,
   att.datable.w3c.attributes,
   attribute datingMethod
   {
      "Seleucid" | "Seleucid-SyriacMonths" | "regnalYear"
   }?,
   attribute calendar { "Gregorian" | "Seleucid" }?,
   ( text | model.gLike | model.phrase | model.global )*
}

2.1.19. <death>

<death> (death) contains information about a person's death, such as its date and place. [16.2.2. The Participant Description]
Modulenamesdates — SPEAR Schema Customization
Attributes
Contained by
namesdates: person
May contain
namesdates: placeName
Note

This customization restricts the attribute classes of the <death> element to att.datable.w3c but excludes the @to and @from attributes. If more precise dating is required for a SPEAR factoid, encoder should use the <date> element.

It also restricts the child elements to those dealing with dates (<date> or <choice>), <placeName>, and <note>.

Example
<ab type="factoidsubtype="death"  xml:id="factoid-123resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/8559-123</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/2202"/>    <death notBefore="0360-10"     notAfter="0361-09">     <choice>      <reg>       <date notBefore="0360-10"        notAfter="0361-09calendar="Gregorian">360/1</date>      </reg>      <orig>       <date when-custom="0672"        datingMethod="Seleucid">A. Gr. 672</date>      </orig>     </choice>     <note type="desc">      <persName ref="http://syriaca.org/person/2202">Abraham</persName> died in 360/1. </note>    </death>   </person>  </listPerson> ... </ab>
Content model
<content>
 <sequence minOccurs="1" maxOccurs="1"
  preserveOrder="true">
  <alternate minOccurs="0" maxOccurs="1">
   <elementRef key="date" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="choice" minOccurs="1"
    maxOccurs="1"/>
  </alternate>
  <elementRef key="placeName" minOccurs="0"
   maxOccurs="1"/>
  <elementRef key="note" minOccurs="1"
   maxOccurs="1"/>
 </sequence>
</content>
    
Schema Declaration
element death
{
   att.datable.w3c.attribute.when,
   att.datable.w3c.attribute.notBefore,
   att.datable.w3c.attribute.notAfter,
   ( ( date | choice )?, placeName?, note )
}

2.1.20. <desc>

<desc>
Modulecore — SPEAR Schema Customization
Contained by
namesdates: event relation
May contain
character data
Note

SPEAR facilitates modeling a combination of structured and semi-structured data. Much of the semi-structured data is contained in the <desc> element. This is the main version of the data displayed in the HTML view of SPEAR while the more structured data in the RDF triple store is used for search and browse. This customization does not allow attributes on the <desc> element. It also restricts child elements to <choice>, <date>, <persName>, and <placeName>.

Schematron
<sch:rule context="//tei:ab//tei:desc"> <sch:report test="not(*) and string-length(normalize-space(.)) eq 0">Element of type <desc> cannot be empty.</sch:report> </sch:rule> <sch:rule context="tei:ab/tei:listEvent/tei:event/tei:desc"  role="warning"> <sch:assert test="./tei:persName or tei:placeName">The <desc> element should generally contain either <persName> or <placeName>. SPEAR encourages a liberal use of <persName>, <placeName>, and <date> elements in the <desc> element of event factoids.</sch:assert> </sch:rule>
Schematron
<sch:rule context="//tei:body/tei:ab/tei:listRelation/tei:relation"> <sch:assert test="tei:desc"> This <relation> requires a <desc>. </sch:assert> </sch:rule> <sch:rule context="//tei:sourceDesc//tei:relation"> <sch:report test="tei:desc"> The <desc> element may not appear here. </sch:report> </sch:rule> <sch:rule context="//tei:ab/tei:listEvent/tei:listRelation/tei:relation/tei:desc"> <sch:let name="SameEventURIs"  value="tokenize(parent::tei:relation/@mutual, ' ')"/> <sch:assert test="count(child::tei:rs) = count($SameEventURIs)"> This <desc> must contain <sch:value-of select="count($SameEventURIs)"/> <rs> elements, one for each values in the @mutual attribute on <relation>. </sch:assert> <sch:assert test="count(distinct-values(tei:rs/@ref)) = count(tei:rs)"> This <desc> requires <rs> elements with unique @ref attribute values. </sch:assert> </sch:rule> <sch:rule context="//tei:ab/tei:listEvent/tei:listRelation/tei:relation[@ref='syriaca:SameEvent']/tei:desc"> <sch:let name="SameEventURIs"  value="tokenize(parent::tei:relation/@mutual, ' ')"/> <sch:assert test="starts-with(normalize-space(.), 'The following factoids deal with the same event: ')"> This <desc> must begin with "The following factoids deal with the same event: " </sch:assert> </sch:rule> <sch:rule context="//tei:ab/tei:listEvent/tei:listRelation/tei:relation[@ref='syriaca:ProxmiateEvent']/tei:desc"> <sch:let name="SameEventURIs"  value="tokenize(parent::tei:relation/@mutual, ' ')"/> <sch:assert test="starts-with(normalize-space(.), 'The following factoids deal with closely related events: ')"> This <desc> must begin with "The following factoids deal with related events: " </sch:assert> </sch:rule>
Content model
<content>
 <sequence minOccurs="0"
  maxOccurs="unbounded" preserveOrder="false">
  <textNode/>
  <elementRef key="choice" minOccurs="0"
   maxOccurs="unbounded"/>
  <elementRef key="date" minOccurs="0"
   maxOccurs="unbounded"/>
  <elementRef key="persName" minOccurs="0"
   maxOccurs="unbounded"/>
  <elementRef key="placeName" minOccurs="0"
   maxOccurs="unbounded"/>
  <elementRef key="orgName" minOccurs="0"
   maxOccurs="unbounded"/>
  <elementRef key="rs" minOccurs="0"
   maxOccurs="unbounded"/>
  <elementRef key="bibl" minOccurs="0"
   maxOccurs="unbounded"/>
  <elementRef key="listRelation"
   minOccurs="0" maxOccurs="1"/>
  <elementRef key="title" minOccurs="0"
   maxOccurs="unbounded"/>
 </sequence>
</content>
    
Schema Declaration
element desc
{
   (
      text
    & choice*
    & date*
    & persName*
    & placeName*
    & orgName*
    & rs*
    & bibl*
    & listRelation?
    & title*
   )*
}

2.1.21. <edition>

<edition> (edition) describes the particularities of one edition of a text. [2.2.2. The Edition Statement]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: editionStmt
May contain
Example
<edition>First edition <date>Oct 1990</date> </edition> <edition n="S2">Students' edition</edition>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
    
Schema Declaration
element edition { att.global.attributes, macro.phraseSeq }

2.1.22. <editionStmt>

<editionStmt> (edition statement) groups information relating to one edition of a text. [2.2.2. The Edition Statement 2.2. The File Description]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: fileDesc
May contain
header: edition
Note

The <editionStmt> allows the specification of an edition or version number. When a TEI file is first published online, that edition should be "1.0". Subsequent revisions may bump the revision number, either by a whole new version (i.e. to "2.0") or by a minor version (i.e. to "1.1").

Example
<editionStmt>  <edition n="1.0"/> </editionStmt>
Content model
<content>
 <elementRef key="edition" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element editionStmt { att.global.attributes, edition }

2.1.23. <editor>

<editor> contains a secondary statement of responsibility for a bibliographic item, for example the name of an individual, institution or organization, (or of several such) acting as editor, compiler, translator, etc. [3.12.2.2. Titles, Authors, and Editors]
Modulecore — SPEAR Schema Customization
Attributes
role
StatusOptional
Datatypeteidata.enumerated
Suggested values include:
creator
A person involved in the creation of this xml file
general
A person responsible for this xml file or collection of xml files
translator
ref
StatusOptional
Datatypeteidata.pointer
Contained by
May contain
Note

This customization makes the <editor> element part of model.respLike and limits the attributes to @role and @ref. It also suggests values for @role.

Example
<titleStmt>  <title level="atype="main">John of Ephesus, <title ref="http://syriaca.org/work/793">Habib</title>, in <title>The Lives of the Eastern Saints</title>  </title>  <title type="sub">A SPEAR Prosopography</title>  <sponsor>Syriaca.org: The Syriac Reference Portal</sponsor>  <funder>The National Endowment for the Humanities</funder>  <funder>Texas A&amp;M University</funder>  <editor role="general"   ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>  <editor role="creator"   ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>  <editor role="creator"   ref="http://syriaca.org/documentation/editors.xml#syoung">Samuel Young</editor>  <respStmt>   <resp>Data architecture, data entry, editing, proofreading, and revision      by</resp>   <name ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</name>  </respStmt>  <respStmt>   <resp>Text analysis and data encoding by</resp>   <name ref="http://syriaca.org/documentation/editors.xml#syoung">Samuel Young</name>  </respStmt> </titleStmt>
Schematron
<sch:rule context="//tei:titleStmt/tei:editor"> <sch:assert test="@role"> This <editor> must have a @role attribute. </sch:assert> <sch:assert test="@ref"> This <editor> must have a @ref attribute. </sch:assert> </sch:rule> <sch:rule context="//tei:titleStmt//tei:editor/@ref"> <sch:let name="edsDoc"  value="doc('https://raw.githubusercontent.com/srophe/srophe-eXist-app/master/documentation/editors.xml')"/> <sch:let name="eds"  value="$edsDoc//tei:text/tei:body/tei:listPerson/tei:person/@xml:id"/> <sch:let name="refValues"  value="for $i in $eds return concat('http://syriaca.org/documentation/editors.xml#', $i)"/> <sch:assert test=" every $i in . satisfies $i = $refValues"> Acceptable values for this @ref attribute include: <sch:value-of select="string-join($refValues, ' | ')"/>. </sch:assert> </sch:rule>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
    
Schema Declaration
element editor
{
   attribute role { "creator" | "general" | "translator" }?,
   attribute ref { text }?,
   macro.phraseSeq
}

2.1.24. <editorialDecl>

<editorialDecl> (editorial practice declaration) provides details of editorial principles and practices applied during the encoding of a text. [2.3.3. The Editorial Practices Declaration 2.3. The Encoding Description 16.3.2. Declarable Elements]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: encodingDesc
May contain
core: p
Note

The <editorialDecl> will be used to describe the data model of SPEAR in more detail.

Example
<encodingDesc> ... <editorialDecl>   <p>Link to standoff documentation of the SPEAR data model is forthcoming.</p>  </editorialDecl> ... </encodingDesc>
Content model
<content>
 <elementRef key="p" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element editorialDecl { att.global.attributes, att.declarable.attributes, p }

2.1.25. <education>

<education> (education) contains a description of the educational experience of a person. [16.2.2. The Participant Description]
Modulenamesdates — SPEAR Schema Customization
Attributes
ana
StatusRequired
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
Schematron
<sch:schema> <sch:ns uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  prefix="rdf"/> <sch:ns uri="http://www.w3.org/2004/02/skos/core#"  prefix="skos"/> <sch:pattern>  <sch:rule context="//tei:education/@ana">   <sch:let name="anaTokens"    value="tokenize(., ' ')"/>   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="disciplineURIs"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/fields-of-study-collection']/skos:member/@rdf:resource"/>   <sch:let name="errors"    value="for $i in $anaTokens return $i[not(. = $disciplineURIs)]"/>   <sch:assert test="every $i in $anaTokens satisfies $i = $disciplineURIs"    role="warning">    <sch:value-of select="string-join($errors, ', ')"/>: URI(s) not among the fields of study in the Taxonomy. If you find no appropriate concept on the following list,      please choose a keyword of your own for the editors to consider: <sch:value-of select="string-join($disciplineURIs, '; ')"/>.</sch:assert>  </sch:rule> </sch:pattern> </sch:schema>
Contained by
namesdates: person personGrp
May contain
core: note
Note

This customization restricts the attribute classes of <education> to att.datable.w3c and the @ana attribute. If more precise dating is required for a SPEAR factoid, the encoder should use the <date> element.

It also restricts the required @ana attribute to taxonomy URIs in the Syriac Taxonomy that pertain to fields of education.

Example
<ab type="factoidsubtype="education"  xml:id="factoid-5resp="#jwickes">  <idno type="URI">https://spear-prosop.org/842-5</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/2032"/>    <education ana="http://syriaca.org/taxonomy/bible http://syriaca.org/taxonomy/exegesis">     <note type="desc">      <persName ref="http://syriaca.org/person/2032">Kashish</persName> studied the reading of the Holy Scriptures          at the <placeName ref="http://syriaca.org/place/399"> Monastery of John Urtraya </placeName>          in the city of <placeName ref="http://syriaca.org/place/8"> Amida</placeName>.     </note>    </education>   </person>  </listPerson> ... </ab>
Content model
<content>
 <elementRef key="note" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element education
{
   att.datable.w3c.attributes,
   attribute ana { list { + } },
   note
}

2.1.26. <encodingDesc>

<encodingDesc> (encoding description) documents the relationship between an electronic text and the source or sources from which it was derived. [2.3. The Encoding Description 2.1.1. The TEI Header and Its Components]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: teiHeader
May contain
Note

The <endocingDesc> contains the editorial declaration and a taxonomy of entities that may be refered to in the encoding that follows.

Example
<teiHeader> ... <encodingDesc>   <editorialDecl>    <p>[Forthcoming]</p>   </editorialDecl>   <classDecl>    <taxonomy>     <category xml:id="calculated">      <catDesc> Used to denote a date calculated by the editor from a regnal year            given in the text. </catDesc>     </category>    </taxonomy>   </classDecl>  </encodingDesc> ... </teiHeader>
Content model
<content>
 <sequence minOccurs="1" maxOccurs="1"
  preserveOrder="true">
  <elementRef key="editorialDecl"
   minOccurs="1" maxOccurs="1"/>
  <elementRef key="classDecl" minOccurs="1"
   maxOccurs="1"/>
 </sequence>
</content>
    
Schema Declaration
element encodingDesc { att.global.attributes, ( editorialDecl, classDecl ) }

2.1.27. <event>

<event> (event) contains data relating to anything of significance that happens in time. [14.3.1. Basic Principles]
Modulenamesdates — SPEAR Schema Customization
Attributes
Contained by
namesdates: listEvent
May contain
core: desc
Note

This customization makes <desc> the only acceptable child of <event>. It also requires an @ana attribute and constrains the values of that attribute to the full list of Syriaca.org Taxonomy URIs. In the case of dates associated with an event, the customization also requires that date attributes (@when, @notBefore, @notAfter, @from, and @to) match on the <event> element and within the child <desc> element.

Example
<ab type="factoidsubtype="event"  xml:id="factoid-12resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/3050-12</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/letters http://syriaca.org/taxonomy/sin http://syriaca.org/taxonomy/greed http://syriaca.org/taxonomy/pride"    notBefore="0516notAfter="0517">    <desc>     <persName ref="http://syriaca.org/person/51">Severus of Antioch</persName> sent a letter to    <persName ref="http://syriaca.org/person/3726">Anonymi 3726</persName> on the subject of    <persName ref="http://syriaca.org/person/2460">Musonius</persName>, especially his greed, pride, and disruptive behavior.    <listRelation>      <relation type="person"       ref="http://syriaca.org/taxonomy/sender-of-letter-toactive="http://syriaca.org/person/51"       passive="http://syriaca.org/person/3726notBefore="0516notAfter="0517"/>     </listRelation>    </desc>   </event>  </listEvent>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/8GRCM47V"/>   <citedRange unit="p">75-80</citedRange>  </bibl> </ab>
Schematron
<sch:schema> <sch:ns prefix="rdf"  uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/> <sch:pattern>  <sch:rule context="tei:event/@ana">   <sch:let name="anaTokens"    value="tokenize(., ' ')"/>   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="taxonomySelectURIs"    value="$taxonomy//rdf:Description/@rdf:about[not(contains(., 'primary-sources'))]"/>   <sch:let name="errors"    value="for $i in $anaTokens return $i[not(. = $taxonomySelectURIs)]"/>   <sch:assert test="every $i in $anaTokens satisfies $i = $taxonomySelectURIs"    role="warning">    <sch:value-of select="string-join($errors, ', ')"/>: URI(s) not in the Taxonomy. Please ensure that an appropriate URI does      not appear in the Taxonomy before proceeding. If you find no appropriate concept in the Taxonomy, please choose a keyword of your own for the editors to consider.   </sch:assert>  </sch:rule> </sch:pattern> </sch:schema>
Schematron
<sch:rule context="tei:event[tei:desc/tei:date/@when] | tei:event[tei:desc/tei:choice/tei:corr/tei:date/@when] | tei:event[tei:desc/tei:choice/tei:reg/tei:date/@when]"> <sch:assert test="./@when = ./tei:desc/tei:date/@when | ./tei:desc/tei:choice/tei:corr/tei:date/@when | ./tei:desc/tei:choice/tei:reg/tei:date/@when"> This <event> must have a @when attribute with the value <sch:value-of select="./tei:desc/tei:date/@when | ./tei:desc/tei:choice/tei:corr/tei:date/@when | ./tei:desc/tei:choice/tei:reg/tei:date/@when"/>. </sch:assert> </sch:rule> <sch:rule context="tei:event[tei:desc/tei:date/@notBefore] | tei:event[tei:desc/tei:choice/tei:corr/tei:date/@notBefore] | tei:event[tei:desc/tei:choice/tei:reg/tei:date/@notBefore]"> <sch:assert test="./@notBefore = ./tei:desc/tei:date/@notBefore | ./tei:desc/tei:choice/tei:corr/tei:date/@notBefore | ./tei:desc/tei:choice/tei:reg/tei:date/@notBefore"> This <event> must have a @notBefore attribute with the value <sch:value-of select="./tei:desc/tei:date/@notBefore | ./tei:desc/tei:choice/tei:corr/tei:date/@notBefore | ./tei:desc/tei:choice/tei:reg/tei:date/@notBefore"/>. </sch:assert> </sch:rule> <sch:rule context="tei:event[tei:desc/tei:date/@notAfter] | tei:event[tei:desc/tei:choice/tei:corr/tei:date/@notAfter] | tei:event[tei:desc/tei:choice/tei:reg/tei:date/@notAfter]"> <sch:assert test="./@notAfter = ./tei:desc/tei:date/@notAfter | ./tei:desc/tei:choice/tei:corr/tei:date/@notAfter | ./tei:desc/tei:choice/tei:reg/tei:date/@notAfter"> This <event> must have a @notAfter attribute with the value <sch:value-of select="./tei:desc/tei:date/@notAfter | ./tei:desc/tei:choice/tei:corr/tei:date/@notAfter | ./tei:desc/tei:choice/tei:reg/tei:date/@notAfter"/>. </sch:assert> </sch:rule> <sch:rule context="tei:event[tei:desc/tei:date/@from] | tei:event[tei:desc/tei:choice/tei:corr/tei:date/@from] | tei:event[tei:desc/tei:choice/tei:reg/tei:date/@from]"> <sch:assert test="./@from = ./tei:desc/tei:date/@from | ./tei:desc/tei:choice/tei:corr/tei:date/@from | ./tei:desc/tei:choice/tei:reg/tei:date/@from"> This <event> must have a @from attribute with the value <sch:value-of select="./tei:desc/tei:date/@from | ./tei:desc/tei:choice/tei:corr/tei:date/@from | ./tei:desc/tei:choice/tei:reg/tei:date/@from"/>. </sch:assert> </sch:rule> <sch:rule context="tei:event[tei:desc/tei:date/@to] | tei:event[tei:desc/tei:choice/tei:corr/tei:date/@to] | tei:event[tei:desc/tei:choice/tei:reg/tei:date/@to]"> <sch:assert test="./@to = ./tei:desc/tei:date/@to | ./tei:desc/tei:choice/tei:corr/tei:date/@to | ./tei:desc/tei:choice/tei:reg/tei:date/@to"> This <event> must have a @to attribute with the value <sch:value-of select="./tei:desc/tei:date/@to | ./tei:desc/tei:choice/tei:corr/tei:date/@to | ./tei:desc/tei:choice/tei:reg/tei:date/@to"/>. </sch:assert> </sch:rule>
Schematron
<sch:rule context="//tei:ab//tei:event/tei:desc/tei:listRelation/tei:relation"> <sch:report test="tei:desc">A <relation> element inside of an <event> element cannot take a <desc> element.</sch:report> </sch:rule>
Content model
<content>
 <elementRef key="desc" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element event
{
   att.global.attributes,
   att.datable.attributes,
   att.editLike.attributes,
   att.locatable.attributes,
   att.naming.attributes,
   att.sortable.attributes,
   att.typed.attributes,
   desc
}

2.1.28. <fileDesc>

<fileDesc> (file description) contains a full bibliographic description of an electronic file. [2.2. The File Description 2.1.1. The TEI Header and Its Components]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: teiHeader
May contain
Note

Each <fileDesc> contains (in order) a <titleStmt>, an <editionStmt>, a <publicationStmt>, <seriesStmt> (optional), and a <sourceDesc>.

Example
<fileDesc>  <titleStmt>   <title level="atype="main">John of Ephesus, <title ref="http://syriaca.org/work/811">Zacharias</title>, in <title>The Lives of the Eastern Saints</title>   </title>   <title type="sub">A SPEAR Prosopography</title>   <sponsor>Syriaca.org: The Syriac Reference Portal</sponsor>   <funder>The National Endowment for the Humanities</funder>   <funder>Texas A&amp;M University</funder>   <editor role="general"    ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>   <editor role="creator"    ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>   <respStmt>    <resp>Data architecture, data entry, editing, proofreading, and revision        by</resp>    <name ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</name>   </respStmt>  </titleStmt>  <editionStmt>   <edition n="1.0"/>  </editionStmt>  <publicationStmt>   <authority>Syriaca.org: The Syriac Reference Portal</authority>   <idno type="URI">https://spear-prosop.org/811/tei</idno>   <availability>    <licence target="http://creativecommons.org/licenses/by/4.0/">     <p>Distributed under a Creative Commons Attribution 4.0 International License (CC BY 4.0)</p>    </licence>   </availability>   <date>2020-01-03-05:00</date>  </publicationStmt>  <seriesStmt>   <title level="s">SPEAR: Syriac Persons, Events, and Relations</title>   <editor role="general"    ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>   <idno type="URI">https://spear-prosop.org</idno>  </seriesStmt>  <seriesStmt>   <title level="mxml:lang="en">The Lives of the Eastern Saints</title>   <title type="sub">A SPEAR Prosopography</title>   <editor role="general"    ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>   <idno type="URI">https://spear-prosop.org/lives-eastern-saints</idno>   <biblScope unit="volume">    <title level="s">SPEAR: Syriac Persons, Events, and Relations</title>    <idno type="URI">https://spear-prosop.org</idno>   </biblScope>  </seriesStmt>  <sourceDesc>   <listBibl>    <head>Sources for the Data in this Born Digital Prosopography</head>    <bibl type="primary">     <title>Lives of the Eastern Saints I</title>     <title>Zacharias</title>     <author>      <persName ref="http://syriaca.org/person/74">John of            Ephesus</persName>     </author>     <editor>      <persName ref="http://syriaca.org/person/403">E. W.            Brooks</persName>     </editor>     <ptr target="http://syriaca.org/cbss/2IBLUVC7"/>    </bibl>    <bibl type="primary">     <title>Zacharias</title>     <author>      <persName ref="http://syriaca.org/person/74">John of            Ephesus</persName>     </author>     <ptr target="http://syriaca.org/work/811"/>    </bibl>   </listBibl>   <listRelation>    <relation type="part"     active="http://syriaca.org/work/811name="dcterms:isPartOf"     passive="http://syriaca.org/work/9501"/>   </listRelation>  </sourceDesc> </fileDesc>
Content model
<content>
 <sequence minOccurs="1" maxOccurs="1"
  preserveOrder="true">
  <elementRef key="titleStmt" minOccurs="1"
   maxOccurs="1"/>
  <elementRef key="editionStmt"
   minOccurs="1" maxOccurs="1"/>
  <elementRef key="publicationStmt"
   minOccurs="1" maxOccurs="1"/>
  <elementRef key="seriesStmt"
   minOccurs="1" maxOccurs="unbounded"/>
  <elementRef key="sourceDesc"
   minOccurs="1" maxOccurs="1"/>
 </sequence>
</content>
    
Schema Declaration
element fileDesc
{
   att.global.attributes,
   ( titleStmt, editionStmt, publicationStmt, seriesStmt+, sourceDesc )
}

2.1.29. <funder>

<funder> (funding body) specifies the name of an individual, institution, or organization responsible for the funding of a project or text. [2.2.1. The Title Statement]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: titleStmt
May containCharacter data only
Note

Within the <titleStmt>, funding bodies are identified with the <funder> element. If multiple funding bodies are relevant, then each one receives a separate <funder> element.

Example
<titleStmt> ... <funder>The National Endowment for the Humanities</funder>  <funder>Texas A&amp;M University</funder> ... </titleStmt>
Content model
<content>
 <textNode/>
</content>
    
Schema Declaration
element funder
{
   att.global.attributes,
   att.canonical.attributes,
   att.datable.attributes,
   text
}

2.1.30. <head>

<head> (heading) contains any type of heading, for example the title of a section, or the heading of a list, glossary, manuscript description, etc. [4.2.1. Headings and Trailers]
Modulecore — SPEAR Schema Customization
Attributes
Contained by
core: listBibl
May contain
Note

When the child of <sourceDesc>, <head> must contain "Sources for the Data in this Born Digital Prosopography". When the child of <back>, <head> must contain "Works Cited".

Example
<sourceDesc>  <listBibl>   <head>Sources for the Data in this Born Digital Prosopography</head>   <bibl type="primary"> ...   </bibl>  </listBibl> </sourceDesc> ... <back>  <listBibl>   <head>Works Cited</head>   <bibl type="primaryxml:id="bibl3182-1"> ...   </bibl>  </listBibl> </back>
Schematron
<sch:rule context="tei:sourceDesc//tei:head"> <sch:assert test="normalize-space(.) = 'Sources for the Data in this Born Digital Prosopography'"> A <head> element inside the <sourceDesc> must contain the text node: "Sources for the Data in this Born Digital Prosopography". </sch:assert> </sch:rule> <sch:rule context="tei:back//tei:head"> <sch:assert test="normalize-space(.) = 'Works Cited'"> A <head> element inside the <back> must contain the text node: "Works Cited". </sch:assert> </sch:rule>
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">
  <textNode/>
  <elementRef key="lg"/>
  <classRef key="model.gLike"/>
  <classRef key="model.phrase"/>
  <classRef key="model.inter"/>
  <classRef key="model.lLike"/>
  <classRef key="model.global"/>
 </alternate>
</content>
    
Schema Declaration
element head
{
   att.global.attributes,
   att.cmc.attributes,
   att.placement.attributes,
   att.typed.attributes,
   att.written.attributes,
   (
      text
    | lg
    | model.gLike
    | model.phrasemodel.inter
    | model.lLike
    | model.global
   )*
}

2.1.31. <idno>

<idno> (identifier) supplies any form of identifier used to identify some object, such as a bibliographic item, a person, a title, an organization, etc. in a standardized way. [14.3.1. Basic Principles 2.2.4. Publication, Distribution, Licensing, etc. 2.2.5. The Series Statement 3.12.2.4. Imprint, Size of a Document, and Reprint Information]
Moduleheader — SPEAR Schema Customization
Attributes
type
StatusOptional
Datatypeteidata.enumerated
Contained by
May contain
header: idno
character data
Note

This customization requires properly formatted identifiers for each TEI document and for each factoid. It ensures the alignment of the document cool-URI, the document name (always a number), and the factoid cool-URI. (A cool-URI is a unique identifier that when put into a web browser resolves to a page of information about the entity identified. All Syriaca.org identifiers are cool-URIs as are SPEAR factoid URIs.)

In the <teiHeader>, an <idno> requires a @type attribute indicating that it is a "URI". It must also have the text node "https://spear-prosop.org/{\d}/tei", where {\d} is a number that matches the number of the document name.

Each factoid also requires an <idno> with a @type attribute of "URI". It must contain the full cool-URI for that factoid. This URI is constructed using the <idno> from the <publicationStmt> and attaching to it the "-{\d}" from the @xml:id on the parent <ab>.

Example
<ab type="factoidsubtype="event"  xml:id="factoid-12resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/3050-12</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/letters http://syriaca.org/taxonomy/sin http://syriaca.org/taxonomy/greed http://syriaca.org/taxonomy/pride"    notBefore="0516notAfter="0517">    <desc>     <persName ref="http://syriaca.org/person/51">Severus of Antioch</persName> sent a letter to    <persName ref="http://syriaca.org/person/3726">Anonymi 3726</persName> on the subject of    <persName ref="http://syriaca.org/person/2460">Musonius</persName>, especially his greed, pride, and disruptive behavior.    <listRelation>      <relation type="person"       ref="http://syriaca.org/taxonomy/sender-of-letter-toactive="http://syriaca.org/person/51"       passive="http://syriaca.org/person/3726notBefore="0516notAfter="0517"/>     </listRelation>    </desc>   </event>  </listEvent>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/8GRCM47V"/>   <citedRange unit="p">75-80</citedRange>  </bibl> </ab>
Schematron
<sch:rule context="tei:ab[ancestor::tei:body]/tei:idno"> <sch:assert test="@type='URI'">An <idno> descendant of <ab> requires a @type attribute with the value "URI".</sch:assert> </sch:rule> <sch:rule context="//tei:publicationStmt/tei:idno"> <sch:assert test="@type='URI'">This <idno> requires a @type attribute with the value "URI".</sch:assert> </sch:rule> <sch:rule context="//tei:seriesStmt/tei:idno"> <sch:assert test="@type='URI'">This <idno> element requires a @type attribute with the value "URI".</sch:assert> </sch:rule>
Schematron
<sch:rule context="//tei:publicationStmt/tei:idno[@type='URI']"> <sch:let name="fileNo"  value="replace(document-uri(/), '[\D]', '')"/> <sch:assert test=". = concat('https://spear-prosop.org/', $fileNo, '/tei')"> The text node of this <idno> must be "https://spear-prosop.org/<sch:value-of select="$fileNo"/>/tei". </sch:assert> </sch:rule>
Schematron
<sch:rule context="tei:ab[ancestor::tei:body]/tei:idno"> <sch:let name="factoidNo"  value="parent::tei:ab/@xml:id/substring-after(., 'factoid')"/> <sch:assert test="contains(., concat(//tei:publicationStmt/tei:idno[@type]/substring-before(., '/tei'), $factoidNo))">This factoid URI must be: "<sch:value-of select="concat(//tei:publicationStmt/tei:idno[@type]/substring-before(., '/tei'), $factoidNo)"/>.</sch:assert> </sch:rule>
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">
  <textNode/>
  <classRef key="model.gLike"/>
  <elementRef key="idno"/>
 </alternate>
</content>
    
Schema Declaration
element idno { attribute type { text }?, ( text | model.gLike | idno )* }

2.1.32. <langKnowledge>

<langKnowledge>
Modulenamesdates — SPEAR Schema Customization
Contained by
namesdates: person personGrp
May contain
core: note
namesdates: langKnown
Note

This customization constrains the child elements under <langKnowledge> to include only <langKnown> and <note>.

Example
<ab type="factoidsubtype="langKnown"  xml:id="factoid-9resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/835-9</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3155"/>    <langKnowledge>     <langKnown ana="http://syriaca.org/taxonomy/armenian"/>     <note type="desc">      <persName ref="http://syriaca.org/person/3155">Tribunus</persName>          was a native speaker of Armenian.     </note>    </langKnowledge>   </person>  </listPerson> ... </ab>
Content model
<content>
 <sequence minOccurs="1" maxOccurs="1"
  preserveOrder="true">
  <elementRef key="langKnown" minOccurs="1"
   maxOccurs="1"/>
  <elementRef key="note" minOccurs="1"
   maxOccurs="1"/>
 </sequence>
</content>
    
Schema Declaration
element langKnowledge { langKnown, note }

2.1.33. <langKnown>

<langKnown> (language known) summarizes the state of a person's linguistic competence, i.e., knowledge of a single language. [16.2.2. The Participant Description]
Modulenamesdates — SPEAR Schema Customization
Attributes
level
StatusOptional
Datatypeteidata.enumerated
Legal values are:
low
medium
high
Contained by
namesdates: langKnowledge
May contain
character data
Note

This customization allows a closed list of values on the @level attribute ("low", "medium", and "high"). It also restricts the required @ana attribute to keyword URIs in the Syriac Taxonomy that pertain to languages.

Example
<ab type="factoidsubtype="langKnown"  xml:id="factoid-8resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/835-8</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3155"/>    <langKnowledge>     <langKnown ana="http://syriaca.org/taxonomy/greek-language-ancient"/>     <note type="desc">      <persName ref="http://syriaca.org/person/3155">Tribunus</persName>          could read and write Greek     </note>    </langKnowledge>   </person>  </listPerson> ... </ab>
Schematron
<sch:schema> <sch:ns uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  prefix="rdf"/> <sch:ns uri="http://www.w3.org/2004/02/skos/core#"  prefix="skos"/> <sch:pattern>  <sch:rule context="//tei:langKnown/@ana">   <sch:let name="anaTokens"    value="tokenize(., ' ')"/>   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="languageURIs"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/languages']/skos:narrower/@rdf:resource"/>   <sch:let name="errors"    value="for $i in $anaTokens return $i[not(. = $languageURIs)]"/>   <sch:assert test="every $i in $anaTokens satisfies $i = $languageURIs"    role="warning">    <sch:value-of select="string-join($errors, ', ')"/>: URI(s) not among the languages in the Taxonomy. If you find no appropriate concept on the following list,      please choose a keyword of your own for the editors to consider: <sch:value-of select="string-join($languageURIs, '; ')"/>.   </sch:assert>  </sch:rule> </sch:pattern> </sch:schema>
Content model
<content>
 <macroRef key="macro.phraseSeq.limited"/>
</content>
    
Schema Declaration
element langKnown
{
   att.global.attributes,
   att.datable.attributes,
   att.editLike.attributes,
   attribute level { "low" | "medium" | "high" }?,
   macro.phraseSeq.limited
}

2.1.34. <licence>

<licence> contains information about a licence or other legal agreement applicable to the text. [2.2.4. Publication, Distribution, Licensing, etc.]
Moduleheader — SPEAR Schema Customization
Attributes
Member of
Contained by
header: availability
May contain
core: p
Note

The <license> element, child of <availability>, is used to specify the Creative Commons CC-BY license under which this record is made available. Some records may incorporate information from works under copyright (with permission), a fact which is also indicated with <license>.

Example
<publicationStmt>  <authority>Syriaca.org: The Syriac Reference Portal</authority>  <idno type="URI">https://spear-prosop.org/10510/tei</idno>  <availability>   <licence target="http://creativecommons.org/licenses/by/4.0/">    <p>Distributed under a Creative Commons Attribution 4.0 International License (CC BY 4.0)</p>   </licence>  </availability>  <date>2020-01-03-05:00</date> </publicationStmt>
Schematron
<sch:rule context="//tei:licence/tei:p"> <sch:assert test="normalize-space(.) = 'Distributed under a Creative Commons Attribution 4.0 International License (CC BY 4.0)'"> The <licence> element must contain <p> with the text: "Distributed under a Creative Commons Attribution 4.0 International License (CC BY 4.0)." </sch:assert> </sch:rule>
Content model
<content>
 <elementRef key="p" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element licence
{
   att.global.attributes,
   att.datable.attributes,
   att.pointing.attributes,
   p
}

2.1.35. <listBibl>

<listBibl> (citation list) contains a list of bibliographic citations of any kind. [3.12.1. Methods of Encoding Bibliographic References and Lists of References 2.2.7. The Source Description 16.3.2. Declarable Elements]
Modulecore — SPEAR Schema Customization
Attributes
Member of
Contained by
textstructure: back
May contain
core: bibl head
Note

The <listBibl> element must contain a <head> and at least one <bibl>. This element is used only in the <teiHeader> and in the <back>.

Example
<back>  <listBibl>   <head>Works Cited</head>   <bibl type="primaryxml:id="bibl798-1">    <title>Lives of the Eastern Saints I</title>    <title>Paul the Mourner</title>    <author>     <persName ref="http://syriaca.org/person/74">John of          Ephesus</persName>    </author>    <editor>     <persName ref="http://syriaca.org/person/403">E. W.          Brooks</persName>    </editor>    <ptr target="http://syriaca.org/cbss/2IBLUVC7"/>   </bibl>   <bibl type="primaryxml:id="bibl798-2">    <title>Paul the Mourner</title>    <author>     <persName ref="http://syriaca.org/person/74">John of          Ephesus</persName>    </author>    <ptr target="http://syriaca.org/work/798"/>   </bibl>  </listBibl> </back>
Content model
<content>
 <sequence minOccurs="1" maxOccurs="1"
  preserveOrder="true">
  <elementRef key="head" minOccurs="1"
   maxOccurs="1"/>
  <elementRef key="bibl" minOccurs="1"
   maxOccurs="unbounded"/>
 </sequence>
</content>
    
Schema Declaration
element listBibl
{
   att.global.attributes,
   att.cmc.attributes,
   att.declarable.attributes,
   att.sortable.attributes,
   att.typed.attributes,
   ( head, bibl+ )
}

2.1.36. <listEvent>

<listEvent>
Modulenamesdates — SPEAR Schema Customization
Contained by
linking: ab
May contain
namesdates: event
Note

SPEAR has three basic types of factoid data that are encoded using <listPerson>, <listEvent>, and <listRelation> elements. The <listEvent> element is used to encode prosopographical data related to events.

Example
<ab type="factoidsubtype="event"  xml:id="factoid-18resp="#syoung">  <idno type="URI">https://spear-prosop.org/816-18</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/prophecy http://syriaca.org/taxonomy/ordination http://syriaca.org/taxonomy/persecution"    notBefore="0529">    <desc>     <persName ref="http://syriaca.org/person/50">John</persName> prophesied        that Christians would not be able to find ordaining bishops throughout        the empire.<date notBefore="0529"      calendar="Gregorian">After 529</date>,    <persName ref="http://syriaca.org/person/74">John</persName> observed        that potential priests could go to <placeName ref="http://syriaca.org/place/579">Alexandria</placeName>,<placeName ref="http://syriaca.org/place/586">Constantinople</placeName> without        gaining ordination. </desc>   </event>  </listEvent>  <bibl type="primary">   <ptr target="http://syriaca.org/work/816"/>   <citedRange unit="p">320</citedRange>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/U78B4C66"/>   <citedRange unit="p">522</citedRange>  </bibl> </ab>
Content model
<content>
 <elementRef key="event" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element listEvent { event }

2.1.37. <listPerson>

<listPerson>
Modulenamesdates — SPEAR Schema Customization
Contained by
linking: ab
May contain
namesdates: person personGrp
Note

SPEAR has three basic types of factoid data that are encoded using <listPerson>, <listEvent>, and <listRelation> elements. The <listPerson> element is used to encode prosopographical data related to personal traits like birth, death, occupation, etc..

Example
<ab type="factoidsubtype="socecStatus"  xml:id="factoid-201resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-201</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3256"/>    <socecStatus ana="http://syriaca.org/taxonomy/patricians">     <note type="desc">      <persName ref="http://syriaca.org/person/3256">Sergius</persName> belonged to a distinguished family called the          house of Bar Deba.</note>    </socecStatus>   </person>  </listPerson>  <bibl type="primary">   <ptr target="http://syriaca.org/work/10510"/>   <citedRange unit="p">571-572</citedRange>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/PHMZMM3R"/>   <citedRange unit="p">225-226</citedRange>  </bibl> </ab>
Content model
<content>
 <alternate minOccurs="1" maxOccurs="1">
  <elementRef key="person" minOccurs="1"
   maxOccurs="1"/>
  <elementRef key="personGrp" minOccurs="1"
   maxOccurs="1"/>
 </alternate>
</content>
    
Schema Declaration
element listPerson { person | personGrp }

2.1.38. <listRelation>

<listRelation> provides information about relationships identified amongst people, places, and organizations, either informally as prose or as formally expressed relation links. [14.3.2.3. Personal Relationships]
Modulenamesdates — SPEAR Schema Customization
Attributes
Member of
Contained by
May contain
namesdates: relation
Note

SPEAR has three basic types of factoid data that are encoded using <listPerson>, <listEvent>, and <listRelation> elements. SPEAR removes all attributes from the <listRelation> element and restricts the child elements to <relation>.

Example
<ab type="factoidsubtype="relation"  xml:id="factoid-4resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/811-4</idno>  <listRelation>   <relation type="person"    ref="http://syriaca.org/taxonomy/friendship-for"    mutual="http://syriaca.org/person/2153 http://syriaca.org/person/74">    <desc>     <persName ref="http://syriaca.org/person/2153">Zacharias</persName> and <persName ref="http://syriaca.org/person/74">John of Ephesus</persName>        had a close friendship.    </desc>   </relation>  </listRelation>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/2IBLUVC7"/>   <citedRange unit="p">266</citedRange>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/work/811"/>   <citedRange unit="p">266</citedRange>  </bibl> </ab>
Content model
<content>
 <elementRef key="relation" minOccurs="1"
  maxOccurs="unbounded"/>
</content>
    
Schema Declaration
element listRelation
{
   att.global.attributes,
   att.cmc.attributes,
   att.sortable.attributes,
   att.typed.attributes,
   relation+
}

2.1.39. <name>

<name> (name, proper noun) contains a proper noun or noun phrase. [3.6.1. Referring Strings]
Modulecore — SPEAR Schema Customization
Attributes
Member of
Contained by
May contain
Note

SPEAR uses the <name> element only in the <teiHeader>. This customization limits the vaules of @ref attributes on <name> as child of <titleStmt> to a Syriaca.org URI for project contributors.

Example
<titleStmt> ... <respStmt>   <resp>Data architecture, data entry, editing, proofreading, and revision      by</resp>   <name ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L.      Schwartz</name>  </respStmt>  <respStmt>   <resp>Text analysis and data encoding by</resp>   <name ref="http://syriaca.org/documentation/editors.xml#ktorabi">Katayoun Torabi</name>  </respStmt> ... </titleStmt>
Schematron
<sch:rule context="//tei:titleStmt/tei:respStmt/tei:name"> <sch:assert test="@ref"> A @ref attribute is required. </sch:assert> </sch:rule> <sch:rule context="//tei:titleStmt/tei:respStmt/tei:name/@ref"> <sch:let name="edsDoc"  value="doc('https://raw.githubusercontent.com/srophe/srophe-eXist-app/master/documentation/editors.xml')"/> <sch:let name="eds"  value="$edsDoc//tei:text/tei:body/tei:listPerson/tei:person/@xml:id"/> <sch:let name="refValues"  value="for $i in $eds return concat('http://syriaca.org/documentation/editors.xml#', $i)"/> <sch:assert test=" every $i in . satisfies $i = $refValues"> Acceptable values for this @ref attribute include: <sch:value-of select="string-join($refValues, ' | ')"/>. </sch:assert> </sch:rule>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
    
Schema Declaration
element name
{
   att.global.attributes,
   att.cmc.attributes,
   att.datable.attributes,
   att.editLike.attributes,
   att.personal.attributes,
   att.typed.attributes,
   macro.phraseSeq
}

2.1.40. <note>

<note> (note) contains a note or annotation. [3.9.1. Notes and Simple Annotation 2.2.6. The Notes Statement 3.12.2.8. Notes and Statement of Language 10.3.5.4. Notes within Entries]
Modulecore — SPEAR Schema Customization
Attributes
ana
StatusOptional
Datatypeteidata.pointer
Legal values are:
#calculated
type
StatusOptional
Datatypeteidata.enumerated
Schematron
<sch:rule context="tei:note[parent::tei:birth or parent::tei:death or parent::tei:education or parent::tei:langKnowledge or parent::tei:nationality or parent::tei:occupation or parent::tei:residence or parent::tei:socecStatus or parent::tei:state or parent::tei:trait]"> <sch:assert test="@type = 'desc'">This <note> must contain the attribute @type="desc" and other <note> types are not allowed in this context. Other types of notes (those dealing with "certainty") may appear as children of the <ab> element as needed.</sch:assert> </sch:rule>
Schematron
<sch:rule context="tei:note[parent::tei:education | parent::tei:langKnowledge | parent::tei:nationality | parent::tei:occupation | parent::tei:residence | parent::tei:socecStatus | parent::tei:state | parent::tei:trait]"> <sch:report test="./tei:date"> If you wish to apply a date to this factoid, you must use date attributes (@when, @notBefore, @notAfter, @to, and/or @from) on the parent of the <note> element. </sch:report> </sch:rule>
Legal values are:
desc
certainty
relatedEvent
subtype
StatusOptional
Datatypeteidata.enumerated
Schematron
<sch:rule context="//tei:note[@type='certainty']"> <sch:assert test="@subtype"> A <note> element with @type="certainty" requires a @subtype. </sch:assert> </sch:rule>
Legal values are:
incerta
dubia
errata
Member of
Contained by
May contain
Note

SPEAR factoids contain <note> elements that allow the encoder to offer a semi-structured, prose-oriented description of the data that they have derived from the source they are analyzing. The content of the <note> (and in some instances <desc>) is what human users encounter when using the HTML serialization of the data. This customization constrains the use of this element to ensure that the data marked up inside the <note> agrees with the more data-oriented encoding found elsewhere in the factoid.

Example
<ab type="factoidsubtype="birth"  xml:id="factoid-3resp="#syoung">  <idno type="URI">https://spear-prosop.org/793-3</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3763"/>    <birth>     <placeName ref="http://syriaca.org/place/493">Sophanene</placeName>     <note type="desc">      <persName ref="http://syriaca.org/person/3763">Habib</persName> came from the district of     <placeName ref="http://syriaca.org/place/493">Sophanene</placeName>.     </note>    </birth>   </person>  </listPerson> ... </ab>
Schematron
<sch:rule context="tei:note[parent::tei:birth and preceding-sibling::tei:placeName]"> <sch:assert test="tei:persName">The <note> element in a birth place factoid must contain a <persName>.</sch:assert> <sch:assert test="tei:placeName">The <note> element in a birth place factoid must contain a <placeName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:birth and preceding-sibling::tei:date]"> <sch:assert test="tei:persName">The <note> element in a birth date factoid must contain a <persName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:nationality and preceding-sibling::tei:placeName]"> <sch:assert test="tei:persName">The <note> element in a citizenship factoid must contain a <persName>.</sch:assert> <sch:assert test="tei:placeName">The <note> element in a citizenship factoid must contain a <placeName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:death and preceding-sibling::tei:placeName]"> <sch:assert test="tei:persName">The <note> element in a death place factoid must contain a <persName>.</sch:assert> <sch:assert test="tei:placeName">The <note> element in a birth place factoid must contain a <placeName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:education]"> <sch:assert test="tei:persName">The <note> element in an education factoid must contain a <persName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:death and preceding-sibling::tei:date]"> <sch:assert test="tei:persName">The <note> element in a death date factoid must contain a <persName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:occupation]"> <sch:assert test="tei:persName">The <note> element in an occupation factoid must contain a <persName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:residence and preceding-sibling::tei:placeName]"> <sch:assert test="tei:persName">The <note> element in a residence factoid must contain a <persName>.</sch:assert> <sch:assert test="tei:placeName">The <note> element in a residence factoid must contain a <placeName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:socecStatus]"> <sch:assert test="tei:persName">The <note> element in a socioeconomic status factoid must contain a <persName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:langKnowledge and preceding-sibling::tei:langKnown]"> <sch:assert test="tei:persName">The <note> element in a language-known factoid must contain a <persName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:trait]"> <sch:assert test="tei:persName">The <note> element inside the <trait> element must contain a <persName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:state]"> <sch:assert test="tei:persName">The <note> element inside the <state> element must contain a <persName>.</sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:reg and preceding-sibling::tei:date]"> <sch:assert test="@ana">This <note> element requires an @ana attribute.</sch:assert> </sch:rule>
Schematron
<sch:rule context="tei:note[parent::tei:birth | parent::tei:death | parent::tei:education | parent::tei:langKnowledge | parent::tei:nationality | parent::tei:occupation | parent::tei:residence | parent::tei:socecStatus | parent::tei:state | parent::tei:trait]/tei:persName[1]/@ref"> <sch:assert test=". = ancestor::tei:person/tei:persName/@ref | ancestor::tei:personGrp/tei:persName/@ref"> The URI in this @ref attribute and the URI in the @ref attribute on the <persName> that is the child of <person> must match. </sch:assert> </sch:rule> <sch:rule context="tei:note[parent::tei:birth | parent::tei:death | parent::tei:nationality | parent::tei:residence]/tei:placeName[1]/@ref"> <sch:report test=". = ancestor::tei:person/tei:placeName/@ref | ancestor::tei:personGrp/tei:placeName/@ref"> The URI in this @ref attribute and the URI in the @ref attribute on the <placeName> that is the child of <person> must match. </sch:report> </sch:rule>
Schematron
<sch:rule context="tei:note[parent::tei:reg and preceding-sibling::tei:date]"> <sch:assert test="normalize-space(.) = 'This regularized date was calculated by the SPEAR editor from a non-calendrical dating system such as regnal years, etc.'"> The only note allowed in this context must contain the following text: "This regularized date was calculated by the SPEAR editor from a non-calendrical dating system such as regnal years, etc." </sch:assert> </sch:rule>
Content model
<content>
 <macroRef key="macro.specialPara"/>
</content>
    
Schema Declaration
element note
{
   att.global.attribute.xmlid,
   att.global.attribute.n,
   att.global.attribute.xmllang,
   att.global.attribute.xmlbase,
   att.global.attribute.xmlspace,
   att.global.linking.attribute.corresp,
   att.global.linking.attribute.synch,
   att.global.linking.attribute.sameAs,
   att.global.linking.attribute.copyOf,
   att.global.linking.attribute.next,
   att.global.linking.attribute.prev,
   att.global.linking.attribute.exclude,
   att.global.linking.attribute.select,
   att.global.rendition.attribute.rend,
   att.global.rendition.attribute.style,
   att.global.rendition.attribute.rendition,
   att.global.responsibility.attribute.cert,
   att.global.responsibility.attribute.resp,
   att.global.source.attribute.source,
   att.cmc.attributes,
   att.placement.attributes,
   att.pointing.attributes,
   att.written.attributes,
   attribute ana { "#calculated" }?,
   attribute type { "desc" | "certainty" | "relatedEvent" }?,
   attribute subtype { "incerta" | "dubia" | "errata" }?,
   macro.specialPara
}

2.1.41. <num>

<num> (number) contains a number, written in any form. [3.6.3. Numbers and Measures]
Modulecore — SPEAR Schema Customization
Attributes
typeindicates the type of numeric value.
Derived fromatt.typed
StatusOptional
Datatypeteidata.enumerated
Suggested values include:
cardinal
absolute number, e.g. 21, 21.5
ordinal
ordinal number, e.g. 21st
fraction
fraction, e.g. one half or three-quarters
percentage
a percentage
Note

If a different typology is desired, other values can be used for this attribute.

valuesupplies the value of the number in standard form.
StatusOptional
Datatypeteidata.numeric
Valuesa numeric value.
Note

The standard form used is defined by the TEI datatype teidata.numeric.

Member of
Contained by
May contain
Note

Detailed analyses of quantities and units of measure in historical documents may also use the feature structure mechanism described in chapter 19. Feature Structures. The <num> element is intended for use in simple applications.

Example
<p>I reached <num type="cardinalvalue="21">twenty-one</num> on my <num type="ordinalvalue="21">twenty-first</num> birthday</p> <p>Light travels at <num value="3E10">3×10<hi rend="sup">10</hi>  </num> cm per second.</p>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
    
Schema Declaration
element num
{
   att.global.attributes,
   att.cmc.attributes,
   att.ranging.attributes,
   att.typed.attribute.subtype,
   attribute type { "cardinal" | "ordinal" | "fraction" | "percentage" }?,
   attribute value { text }?,
   macro.phraseSeq
}

2.1.42. <occupation>

<occupation> (occupation) contains an informal description of a person's trade, profession or occupation. [16.2.2. The Participant Description]
Modulenamesdates — SPEAR Schema Customization
Attributes
ana
Derived fromatt.global.analytic
StatusRequired
Schematron
<sch:schema> <sch:ns uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  prefix="rdf"/> <sch:ns uri="http://www.w3.org/2004/02/skos/core#"  prefix="skos"/> <sch:pattern>  <sch:rule context="//tei:occupation/@ana">   <sch:let name="anaTokens"    value="tokenize(., ' ')"/>   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="occupationURIs"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/occupations-collection']/skos:member/@rdf:resource"/>   <sch:let name="errors"    value="for $i in $anaTokens return $i[not(. = $occupationURIs)]"/>   <sch:assert test="every $i in $anaTokens satisfies $i = $occupationURIs"    role="warning">    <sch:value-of select="string-join($errors, ', ')"/>: URI(s) not among the occupations in the Taxonomy. If you find no appropriate concept on the following list,      please choose a keyword of your own for the editors to consider: <sch:value-of select="string-join($occupationURIs, '; ')"/>.</sch:assert>  </sch:rule> </sch:pattern> </sch:schema>
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
schemeindicates the classification system or taxonomy in use, for example by supplying the identifier of a <taxonomy> element, or pointing to some other resource.
StatusOptional
Datatypeteidata.pointer
codeidentifies an occupation code defined within the classification system or taxonomy defined by the scheme attribute.
StatusOptional
Datatypeteidata.pointer
Contained by
namesdates: person personGrp
May contain
core: note
Note

This customization restricts the attribute classes of <occupation> to att.datable.w3c and att.global.analytic. If more precise dating is required for a SPEAR factoid, the encoder should use the <date> element.

It only allows <note> as a child element and it restricts the required @ana attribute to keyword URIs in the Syriac Taxonomy that pertain to occupations.

Example
<ab type="factoidsubtype="occupation"  xml:id="factoid-5resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/802-5</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/53"/>    <occupation ana="http://syriaca.org/taxonomy/bishops">     <note type="desc">      <persName ref="http://syriaca.org/person/53">Simeon</persName> was a bishop.     </note>    </occupation>   </person>  </listPerson> ... </ab>
Content model
<content>
 <elementRef key="note" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element occupation
{
   att.datable.w3c.attributes,
   attribute ana { list { + } },
   attribute scheme { text }?,
   attribute code { text }?,
   note
}

2.1.43. <orgName>

<orgName> (organization name) contains an organizational name. [14.2.2. Organizational Names]
Modulenamesdates — SPEAR Schema Customization
Attributes
Member of
Contained by
May contain
Example
About a year back, a question of considerable interest was agitated in the <orgName key="PAS1type="voluntary">  <placeName key="PEN">Pennsyla.</placeName> Abolition Society </orgName> [...]
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
    
Schema Declaration
element orgName
{
   att.global.attributes,
   att.cmc.attributes,
   att.datable.attributes,
   att.editLike.attributes,
   att.personal.attributes,
   att.typed.attributes,
   macro.phraseSeq
}

2.1.44. <orig>

<orig> (original form) contains a reading which is marked as following the original, rather than being normalized or corrected. [3.5.2. Regularization and Normalization 13. Critical Apparatus]
Modulecore — SPEAR Schema Customization
Member of
Contained by
May contain
Note

This customization restricts <orig> to model.choicePart and model.pPart.transcriptional.

Example
<ab type="factoidsubtype="birth"  xml:id="factoid-77resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/8559-77</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/608"/>    <birth notBefore="0239-10"     notAfter="0240-09">     <choice>      <reg>       <date notBefore="0239-10"        notAfter="0240-09calendar="Gregorian">A.D. 239/40</date>      </reg>      <orig>       <date when-custom="0551"        calendar="Seleucid">A. Gr. 551</date>      </orig>     </choice>     <note type="desc">      <persName ref="http://syriaca.org/person/608">Mani</persName> was born in 239.</note>    </birth>   </person>  </listPerson> ... </ab>
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
    
Schema Declaration
element orig { macro.paraContent }

2.1.45. <p>

<p> (paragraph) marks paragraphs in prose. [3.1. Paragraphs 7.2.5. Speech Contents]
Modulecore — SPEAR Schema Customization
Attributes
Member of
Contained by
May contain
Example
<p>Hallgerd was outside. <q>There is blood on your axe,</q> she said. <q>What have you    done?</q> </p> <p>  <q>I have now arranged that you can be married a second time,</q> replied Thjostolf. </p> <p>  <q>Then you must mean that Thorvald is dead,</q> she said. </p> <p>  <q>Yes,</q> said Thjostolf. <q>And now you must think up some plan for me.</q> </p>
Schematron
<sch:rule context="tei:p"> <sch:report test="(ancestor::tei:ab or ancestor::tei:p) and not( ancestor::tei:floatingText | parent::tei:exemplum | parent::tei:item | parent::tei:note | parent::tei:q | parent::tei:quote | parent::tei:remarks | parent::tei:said | parent::tei:sp | parent::tei:stage | parent::tei:cell | parent::tei:figure )"> Abstract model violation: Paragraphs may not occur inside other paragraphs or ab elements. </sch:report> </sch:rule>
Schematron
<sch:rule context="tei:l//tei:p"> <sch:assert test="ancestor::tei:floatingText | parent::tei:figure | parent::tei:note"> Abstract model violation: Metrical lines may not contain higher-level structural elements such as div, p, or ab, unless p is a child of figure or note, or is a descendant of floatingText. </sch:assert> </sch:rule>
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
    
Schema Declaration
element p
{
   att.global.attributes,
   att.cmc.attributes,
   att.declaring.attributes,
   att.fragmentable.attributes,
   att.written.attributes,
   macro.paraContent
}

2.1.46. <persName>

<persName> (personal name) contains a proper noun or proper-noun phrase referring to a person, possibly including one or more of the person's forenames, surnames, honorifics, added names, etc. [14.2.1. Personal Names]
Modulenamesdates — SPEAR Schema Customization
Attributes
ref
StatusRequired
Datatypeteidata.pointer
Schematron
<sch:rule context="//tei:text//tei:persName/@ref"> <sch:let name="personIndex"  value="doc('https://raw.githubusercontent.com/srophe/syriaca/master/documentation/indexes/persons.xml')"/> <sch:let name="personURIs"  value="$personIndex//tei:person/@ref"/> <sch:let name="error" value="."/> <sch:report test="contains(., ' ')"  role="error">This @ref may contain only one URI.</sch:report> <sch:assert test="matches(., concat('http://syriaca.org/person/', '\d+'))"  role="error"> The @ref attribute must take a Syriaca.org person URI which reqires the form 'http://syriaca.org/person/{\d+}' (where {\d+} is a number). </sch:assert> <sch:assert test=" every $i in . satisfies $i = $personURIs"  role="warning">  <sch:value-of select="$error"/> is not currently in use. Note that all person URIs take the form 'http://syriaca.org/person/{\d+}' (where {\d+} is a number). If a URI is not current available, replace the number portion of the URI with "#" followed without a space by a number that you use consistently when encoding information about that person. </sch:assert> </sch:rule>
Member of
Contained by
May contain
Note

This customization requires <persName> to have a @ref attribute that points to a Syriaca.org authority file for a person.

Example
<ab type="factoidsubtype="death"  xml:id="factoid-22resp="#syoung #dschwartz">  <idno type="URI">https://spear-prosop.org/816-22</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/50"/>    <death notBefore="0529">     <date notBefore="0529">529</date>     <placeName ref="http://syriaca.org/place/10">Antioch</placeName>     <note type="desc">      <persName ref="http://syriaca.org/person/50">John</persName> was martyred in     <placeName ref="http://syriaca.org/place/10">Antioch</placeName>          by <persName ref="http://syriaca.org/person/2274">Ephraim</persName> in 529.     </note>    </death>   </person>  </listPerson> ... </ab>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
    
Schema Declaration
element persName
{
   att.datable.w3c.attributes,
   attribute ref { text },
   macro.phraseSeq
}

2.1.47. <person>

<person> (person) provides information about an identifiable individual, for example a participant in a language interaction, or a person referred to in a historical source. [14.3.2. The Person Element 16.2.2. The Participant Description]
Modulenamesdates — SPEAR Schema Customization
Contained by
namesdates: listPerson
May contain
Note

The <person> element contains person factoid data. This customization requires the proper structure for that data. The first child of <person> must be a self-closing <persName> element with a @ref attribute containing a URIs pointing to Syriaca.org authority file for a person. The next child element must be one of the following: <birth>, <death>, <education>, <langKnown>, <nationality>, <occupation>, <residence>, <socecStatus>, <state>, or <trait>.

Example
<ab type="factoidsubtype="nameVariant"  xml:id="factoid-4resp="#ayousif #ekowalik">  <idno type="URI">https://spear-prosop.org/829-4</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/1875"> The blessed Mare </persName>   </person>  </listPerson> ... </ab> <ab type="factoidsubtype="birth"  xml:id="factoid-5resp="#ayousif #ekowalik">  <idno type="URI">https://spear-prosop.org/829-5</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/1533"/>    <birth>     <placeName ref="http://syriaca.org/place/2743">Armenia</placeName>     <note type="desc">      <persName ref="http://syriaca.org/person/1533">Aaron</persName>          was born in the country of <placeName ref="http://syriaca.org/place/2743">Armenia</placeName>.     </note>    </birth>   </person>  </listPerson> ... </ab>
Content model
<content>
 <alternate minOccurs="1" maxOccurs="1">
  <elementRef key="persName" minOccurs="1"
   maxOccurs="1"/>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="birth" minOccurs="1"
    maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="death" minOccurs="1"
    maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="education"
    minOccurs="1" maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="langKnowledge"
    minOccurs="1" maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="nationality"
    minOccurs="0" maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="occupation"
    minOccurs="1" maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="residence"
    minOccurs="1" maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="socecStatus"
    minOccurs="0" maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="state" minOccurs="1"
    maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1"
   preserveOrder="true">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="trait" minOccurs="0"
    maxOccurs="1"/>
  </sequence>
 </alternate>
</content>
    
Schema Declaration
element person
{
   persName
 | ( persName, birth )
 | ( persName, death )
 | ( persName, education )
 | ( persName, langKnowledge )
 | ( persName, nationality? )
 | ( persName, occupation )
 | ( persName, residence )
 | ( persName, socecStatus? )
 | ( persName, state )
 | ( persName, trait? )
}

2.1.48. <personGrp>

<personGrp> (personal group) describes a group of individuals treated as a single person for analytic purposes. [16.2.2. The Participant Description]
Modulenamesdates — SPEAR Schema Customization
Contained by
namesdates: listPerson
May contain
Note

In addition to collecting prosopographical data on individual persons, SPEAR also collects data on groups. This customization requires the children and attributes of the <personGrp> to follow the expectations of the SPEAR data model.

Example
<ab type="factoidsubtype="residence"  xml:id="factoid-42resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-42</idno>  <listPerson>   <personGrp>    <persName ref="http://syriaca.org/person/3669"/>    <residence>     <placeName ref="http://syriaca.org/place/399"/>     <note type="desc">      <persName ref="http://syriaca.org/person/3669">Anonymi            3669</persName> resided in the <placeName ref="http://syriaca.org/place/399">Convent of John            Urtaya</placeName> in <placeName ref="http://syriaca.org/place/8">Amida</placeName>. </note>    </residence>   </personGrp>  </listPerson>  <bibl type="primary">   <ptr target="http://syriaca.org/work/10510"/>   <citedRange unit="p">555</citedRange>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/PHMZMM3R"/>   <citedRange unit="p">209</citedRange>  </bibl> </ab>
Content model
<content>
 <alternate minOccurs="1" maxOccurs="1">
  <sequence minOccurs="1" maxOccurs="1">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="ptr" minOccurs="1"
    maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="education"
    minOccurs="1" maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="nationality"
    minOccurs="0" maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="residence"
    minOccurs="1" maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="occupation"
    minOccurs="1" maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="langKnowledge"
    minOccurs="1" maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="state" minOccurs="1"
    maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="trait" minOccurs="0"
    maxOccurs="1"/>
  </sequence>
  <sequence minOccurs="1" maxOccurs="1">
   <elementRef key="persName" minOccurs="1"
    maxOccurs="1"/>
   <elementRef key="socecStatus"
    minOccurs="0" maxOccurs="1"/>
  </sequence>
 </alternate>
</content>
    
Schema Declaration
element personGrp
{
   ( persName, ptr )
 | ( persName, education )
 | ( persName, nationality? )
 | ( persName, residence )
 | ( persName, occupation )
 | ( persName, langKnowledge )
 | ( persName, state )
 | ( persName, trait? )
 | ( persName, socecStatus? )
}

2.1.49. <placeName>

<placeName> (place name) contains an absolute or relative place name. [14.2.3. Place Names]
Modulenamesdates — SPEAR Schema Customization
Attributes
ref
StatusRequired
Datatypeteidata.pointer
Schematron
<sch:rule context="//tei:text//tei:placeName/@ref"> <sch:let name="placeIndex"  value="doc('https://raw.githubusercontent.com/srophe/syriaca/master/documentation/indexes/places.xml')"/> <sch:let name="placeURIs"  value="$placeIndex//tei:place/@ref"/> <sch:let name="error" value="."/> <sch:report test="contains(., ' ')"  role="error">This @ref may contain only one URI.</sch:report> <sch:assert test="matches(., concat('http://syriaca.org/place/', '\d+'))"  role="error"> The @ref attribute must take a Syriaca.org place URI which reqires the form 'http://syriaca.org/place/{\d+}' (where {\d+} is a number). </sch:assert> <sch:assert test=" every $i in . satisfies $i = $placeURIs"  role="warning">  <sch:value-of select="$error"/> is not currently in use. Note that all properly formatted place URIs take the form 'http://syriaca.org/place/{\d+}' (where {\d+} is a number). If a URI is not current available, replace the number portion of the URI with "#" followed without a space by a number that you use consistently when encoding information referring to that place. </sch:assert> </sch:rule>
Member of
Contained by
May contain
Note

This customization requires <placeName> to have a @ref attribute that points to a Syriaca.org authority file for a place.

Example
<ab type="factoidsubtype="birth"  xml:id="factoid-8resp="#syoung">  <idno type="URI">https://spear-prosop.org/793-8</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3203"/>    <birth>     <placeName ref="http://syriaca.org/place/2779">Fytr</placeName>     <note type="desc">      <persName ref="http://syriaca.org/person/3203">Mara Dada</persName> came from a village called     <placeName ref="http://syriaca.org/place/2779">Fytr</placeName>. </note>    </birth>   </person>  </listPerson> ... </ab>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
    
Schema Declaration
element placeName { attribute ref { text }, macro.phraseSeq }

2.1.50. <profileDesc>

<profileDesc> (text-profile description) provides a detailed description of non-bibliographic aspects of a text, specifically the languages and sublanguages used, the situation in which it was produced, the participants and their setting. [2.4. The Profile Description 2.1.1. The TEI Header and Its Components]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: teiHeader
May containEmpty element
Note

Although the content model permits it, it is rarely meaningful to supply multiple occurrences for any of the child elements of <profileDesc> unless these are documenting multiple texts.

Example
<profileDesc>  <langUsage>   <language ident="fr">French</language>  </langUsage>  <textDesc n="novel">   <channel mode="w">print; part issues</channel>   <constitution type="single"/>   <derivation type="original"/>   <domain type="art"/>   <factuality type="fiction"/>   <interaction type="none"/>   <preparedness type="prepared"/>   <purpose type="entertaindegree="high"/>   <purpose type="informdegree="medium"/>  </textDesc>  <settingDesc>   <setting>    <name>Paris, France</name>    <time>Late 19th century</time>   </setting>  </settingDesc> </profileDesc>
Content model
<content>
 <classRef key="model.profileDescPart"
  minOccurs="0" maxOccurs="unbounded"/>
</content>
    
Schema Declaration
element profileDesc { att.global.attributes, model.profileDescPart* }

2.1.51. <ptr>

<ptr> (pointer) defines a pointer to another location. [3.7. Simple Links and Cross-References 17.1. Links]
Modulecore — SPEAR Schema Customization
Attributes
target
StatusRequired
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
Schematron
<sch:rule context="tei:sourceDesc//tei:bibl[@type = 'primary']/tei:ptr/@target"> <sch:let name="docURIno"  value="//tei:publicationStmt/tei:idno[@type]/substring-after(substring-before(., '/tei'), 'spear-prosop.org/')"/> <sch:assert test=". = concat('http://syriaca.org/work/', $docURIno) or starts-with(., 'http://syriaca.org/cbss/')"> The @target attribute on a <ptr> element inside a <bibl> element with @type="primary" takes limited values. It either must be "http://syriaca.org/work/<sch:value-of select="$docURIno"/>" or "http://syriaca.org/cbss/" followed by the corresponding Syriaca.org bibl URI number. </sch:assert> </sch:rule> <sch:rule context="tei:sourceDesc//tei:bibl[@type = 'urn']/tei:ptr/@target"> <sch:let name="docURIno"  value="//tei:publicationStmt/tei:idno[@type]/substring-after(substring-before(., '/tei'), 'spear-prosop.org/')"/> <sch:assert test="starts-with(., concat('urn:cts:syriacLit:nhsl', $docURIno, '.syriacCorpus'))"> The @target attribute on a <ptr> element inside a <bibl> element with @type="urn" must begin either with "urn:cts:syriacLit:nhsl<sch:value-of select="$docURIno"/>.syriacCorpus" followed by the corresponding Syriac Corpus URI number. </sch:assert> </sch:rule> <sch:rule context="//tei:body/tei:ab/tei:bibl[@type = 'urn']/tei:ptr/@target"> <sch:let name="urnBase"  value="//tei:sourceDesc//tei:bibl[@type = 'urn']/tei:ptr/@target"/> <sch:assert test="starts-with(., concat($urnBase, ':'))">URN in a <bibl> element inside a SPEAR factoid must begin with URN in the <sourceDesc> element of the <teiHeader>: "<sch:value-of select="$urnBase"/>:".</sch:assert> </sch:rule> <sch:rule context="//tei:body//tei:bibl[@type = 'primary']/tei:ptr/@target"> <sch:assert test=". = //tei:sourceDesc//tei:bibl[@type = 'primary']/tei:ptr/@target"> The @target attribute on the <ptr> element, "<sch:value-of select="."/>," is not among the valid options contained in the <sourceDesc> element of the <teiHeader>: (<sch:value-of select="string-join(//tei:sourceDesc//tei:bibl[@type = 'primary']/tei:ptr/@target, '; ')"/>) </sch:assert> </sch:rule>
Member of
Contained by
May containEmpty element
Note

This customization requires a <ptr> to have a @type attribute (indicating "primary", "secondary", or "URN") and a @target attribute. It also ensures that the @target attribute with primary and secondary sources indicates a Syriaca.org authority file for a work or a bibliographic item.

Example
<ab type="factoidsubtype="nameVariant"  xml:id="factoid-1resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/811-1</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/2153">Zacharias</persName>   </person>  </listPerson>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/2IBLUVC7"/>   <citedRange unit="p">266</citedRange>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/work/811"/>   <citedRange unit="p">266</citedRange>  </bibl> </ab>
Schematron
<sch:rule context="tei:ptr"> <sch:report test="@target and @cRef">Only one of the attributes @target and @cRef may be supplied on <sch:name/>.</sch:report> </sch:rule>
Content model
<content>
 <empty/>
</content>
    
Schema Declaration
element ptr { attribute target { list { + } }, empty }

2.1.52. <pubPlace>

<pubPlace> (publication place) contains the name of the place where a bibliographic item was published. [3.12.2.4. Imprint, Size of a Document, and Reprint Information]
Modulecore — SPEAR Schema Customization
Attributes
Contained by
core: bibl
May contain
Example
<publicationStmt>  <publisher>Oxford University Press</publisher>  <pubPlace>Oxford</pubPlace>  <date>1989</date> </publicationStmt>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
    
Schema Declaration
element pubPlace
{
   att.global.attributes,
   att.naming.attributes,
   macro.phraseSeq
}

2.1.53. <publicationStmt>

<publicationStmt> (publication statement) groups information concerning the publication or distribution of an electronic or other text. [2.2.4. Publication, Distribution, Licensing, etc. 2.2. The File Description]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: fileDesc
May contain
Note

The <publicationStmt> is where we identify Syriaca.org as the entity responsible for publishing this information, indicate the date of the most recent edit, and identify the use license (Creative Commons CC-BY).

Example
<publicationStmt>  <authority>Syriaca.org: The Syriac Reference Portal</authority>  <idno type="URI">https://spear-prosop.org/10510/tei</idno>  <availability>   <licence target="http://creativecommons.org/licenses/by/4.0/">    <p>Distributed under a Creative Commons Attribution 4.0 International License (CC BY 4.0)</p>   </licence>  </availability>  <date>2020-01-03-05:00</date> </publicationStmt>
Content model
<content>
 <sequence minOccurs="1" maxOccurs="1"
  preserveOrder="true">
  <elementRef key="authority" minOccurs="1"/>
  <elementRef key="idno" minOccurs="1"/>
  <elementRef key="availability"
   minOccurs="1"/>
  <elementRef key="date" minOccurs="1"/>
 </sequence>
</content>
    
Schema Declaration
element publicationStmt
{
   att.global.attributes,
   ( authority, idno, availability, date )
}

2.1.54. <publisher>

<publisher> (publisher) provides the name of the organization responsible for the publication or distribution of a bibliographic item. [3.12.2.4. Imprint, Size of a Document, and Reprint Information 2.2.4. Publication, Distribution, Licensing, etc.]
Modulecore — SPEAR Schema Customization
Attributes
Contained by
core: bibl
May contain
Note

Use the full form of the name by which a company is usually referred to, rather than any abbreviation of it which may appear on a title page

Example
<imprint>  <pubPlace>Oxford</pubPlace>  <publisher>Clarendon Press</publisher>  <date>1987</date> </imprint>
Content model
<content>
 <macroRef key="macro.phraseSeq"/>
</content>
    
Schema Declaration
element publisher
{
   att.global.attributes,
   att.canonical.attributes,
   macro.phraseSeq
}

2.1.55. <ref>

<ref> (reference) defines a reference to another location, possibly modified by additional text or comment. [3.7. Simple Links and Cross-References 17.1. Links]
Modulecore — SPEAR Schema Customization
Attributes
Member of
Contained by
May contain
Note

The target and cRef attributes are mutually exclusive.

Example
See especially <ref target="http://www.natcorp.ox.ac.uk/Texts/A02.xml#s2">the second sentence</ref>
Example
See also <ref target="#locution">s.v. <term>locution</term> </ref>.
Schematron
<sch:rule context="tei:ref"> <sch:report test="@target and @cRef">Only one of the attributes @target and @cRef may be supplied on <sch:name/>.</sch:report> </sch:rule>
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
    
Schema Declaration
element ref
{
   att.global.attributes,
   att.cReferencing.attributes,
   att.cmc.attributes,
   att.declaring.attributes,
   att.internetMedia.attributes,
   att.pointing.attributes,
   att.typed.attributes,
   macro.paraContent
}

2.1.56. <reg>

<reg> (regularization) contains a reading which has been regularized or normalized in some sense. [3.5.2. Regularization and Normalization 13. Critical Apparatus]
Modulecore — SPEAR Schema Customization
Member of
Contained by
May contain
Note

This customization restricts <reg> to model.choicePart and model.pPart.transcriptional.

Example
<ab type="factoidsubtype="birth"  xml:id="factoid-77resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/8559-77</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/608"/>    <birth notBefore="0239-10"     notAfter="0240-09">     <choice>      <reg>       <date notBefore="0239-10"        notAfter="0240-09calendar="Gregorian">A.D. 239/40</date>      </reg>      <orig>       <date when-custom="0551"        calendar="Seleucid">A. Gr. 551</date>      </orig>     </choice>     <note type="desc">      <persName ref="http://syriaca.org/person/608">Mani</persName> was born in 239.</note>    </birth>   </person>  </listPerson> ... </ab>
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
    
Schema Declaration
element reg { macro.paraContent }

2.1.57. <relation>

<relation> (relationship) describes any kind of relationship or linkage amongst a specified group of places, events, persons, objects or other items. [14.3.2.3. Personal Relationships]
Modulenamesdates — SPEAR Schema Customization
Attributes
ana
Derived fromatt.global.analytic
StatusRecommended
Schematron
<sch:schema> <sch:ns uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  prefix="rdf"/> <sch:ns uri="http://www.w3.org/2004/02/skos/core#"  prefix="skos"/> <sch:pattern>  <sch:rule context="tei:ab/tei:listRelation/tei:relation/@ana">   <sch:let name="anaTokens"    value="tokenize(., ' ')"/>   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="qrURIs"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/qualifier-relationship']/skos:narrower/@rdf:resource"/>   <sch:let name="errors"    value="for $i in $anaTokens return $i[not(. = $qrURIs)]"/>   <sch:assert test="every $i in $anaTokens satisfies $i = $qrURIs">    <sch:value-of select="string-join($errors, ', ')"/>: URI(s) not among the qualifier relationships in the Taxonomy. The acceptable values are: <sch:value-of select="string-join($qrURIs, '; ')"/>.</sch:assert>  </sch:rule> </sch:pattern> </sch:schema> <sch:rule context="tei:ab/tei:listEvent/tei:listRelation/tei:relation"> <sch:report test="@ana">A <relation> element inside an event factoid cannot have an @ana attribute.</sch:report> </sch:rule>
Datatype0–∞ occurrences of teidata.enumerated separated by whitespace
ref(reference) provides an explicit means of locating a full definition or identity for the entity being named by means of one or more URIs.
Derived fromatt.canonical
StatusOptional
Schematron
<sch:schema> <sch:ns uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  prefix="rdf"/> <sch:ns uri="http://www.w3.org/2004/02/skos/core#"  prefix="skos"/> <sch:pattern>  <sch:rule context="tei:ab[@subtype='relation']/tei:listRelation/tei:relation">   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="mutual"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/mutual-relations-collection']/skos:member/@rdf:resource"/>   <sch:let name="directed"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/directed-relations-collection']/skos:member/@rdf:resource"/>   <sch:let name="allRelationships"    value="string-join($directed, $mutual)"/>   <sch:assert test="@ref = $mutual | $directed">    <sch:value-of select="@ref"/> is not a relationship in the Syriaca.org Taxonomy.   </sch:assert>  </sch:rule>  <sch:rule context="tei:ab[@subtype='event']/tei:listRelation/tei:relation">   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="eventRelations"    value="$taxonomy/rdf:Description[@rdf:about='http://syriaca.org/taxonomy/related-event']/skos:narrower/@rdf:resource"/>   <sch:assert test="@ref = $eventRelations">This value must be one of the following from the Syriaca.org taxonomy:   <sch:value-of select="string-join($eventRelations, '; ')"/>.   </sch:assert>  </sch:rule> </sch:pattern> </sch:schema>
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
typecharacterizes the element in some sense, using any convenient classification scheme or typology.
Derived fromatt.typed
StatusRequired
Schematron
<sch:rule context="tei:ab/tei:listEvent/tei:listRelation/tei:relation"> <sch:assert test="@type = 'event'">A <relation> element inside an event factoid must take a @type attribute with the value "event".</sch:assert> </sch:rule> <sch:rule context="tei:sourceDesc/tei:listRelation/tei:relation"> <sch:assert test="@type = 'part'">A @type attribute with the value "part" is required.</sch:assert> </sch:rule>
Datatypeteidata.enumerated
Sample values include
person
Used to denote relationships involving persons
event
Used to denote relationships between event factoids
part
activeidentifies the ‘active’ participants in a non-mutual relationship, or all the participants in a mutual one.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
mutualsupplies a list of participants amongst all of whom the relationship holds equally.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
namesupplies a name for the kind of relationship of which this is an instance.
StatusOptional
Datatypeteidata.enumerated
Schematron
<sch:rule context="tei:sourceDesc/tei:listRelation/tei:relation/@name"> <sch:assert test=". = 'dcterms:isPartOf'"> This <relation> element must have a @name attribute with a value of "dcterms:isPartOf". </sch:assert> </sch:rule> <sch:rule context="tei:text//tei:relation"> <sch:report test="/@name">A @name attribute cannot appear here.</sch:report> </sch:rule>
passiveidentifies the ‘passive’ participants in a non-mutual relationship.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
Contained by
namesdates: listRelation
May contain
core: desc
Note

The <relation> element is used for personal relationships and constitutes one of the three main data types in SPEAR. When SPEAR encodes straight relationships, they appear in a relationship factoid (tei:ab[@subtype="relation"]/tei:listRelation/tei:relation). Relationships can also appear inside an event factoid in cases where an event creates a relationship, i.e. a wedding is an event that created a spousal relationship. In such cases, SPEAR encodes this relationship inside the event factoid. In addition to these personal relationships, the <relation> element is also used to encode relationships between closely related events. The <relation> element is also used in the <teiHeader>.

In the context of personal relationships, this customization constrains the @ref, @ana, @active, @passive, and @mutual attributes. A @ref attribute is required and must contain a URI pointing to a personal relationship in the Syriac Taxonomy. An @ana attribute is optional but when used must contain a URI pointing to a qualifier relationship in the Syriac Taxonomy, i.e. a sibling relationship might be qualified as a step-sibling relationship using @ana. For mutual relationships where each participant has the same relationship to the other (i.e. spousal), a @mutual attribute is used with all of the participants in that relationship listed. In the case of a directed relationship (i.e. where person X is the parent of person Y) both the @active and @passive attributes are used. The values allowed on the @active, @passive, and @mutual attributes are URIs pointing to Syriaca.org authority files for persons.

In the context of relationships between events, this customization only allows appropriate values on @ref while excluding @ana, @active, and @passive attributes.

Example
... <ab type="factoidsubtype="relation"  xml:id="factoid-10resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/8559-10</idno>  <listRelation>   <relation type="person"    ref="http://syriaca.org/taxonomy/child-ofactive="http://syriaca.org/person/2201"    passive="http://syriaca.org/person/2291">    <desc>     <persName ref="http://syriaca.org/person/2201">Abgar VIII</persName> was the child of    <persName ref="http://syriaca.org/person/2291">Maʿnu</persName>.    </desc>   </relation>  </listRelation> ... </ab> ... <ab type="factoidsubtype="relation"  xml:id="factoid-232resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/8559-232</idno>  <listRelation>   <relation type="person"    ref="http://syriaca.org/taxonomy/sibling-of"    mutual="http://syriaca.org/person/2234 http://syriaca.org/person/13">    <desc>     <persName ref="http://syriaca.org/person/2234">Anonmyous 2234</persName> and    <persName ref="http://syriaca.org/person/13">Ephrem</persName> were siblings.    </desc>   </relation>  </listRelation> ... </ab> ...
Schematron
<sch:schema> <sch:ns prefix="rdf"  uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/> <sch:ns uri="http://www.w3.org/2004/02/skos/core#"  prefix="skos"/> <sch:pattern>  <sch:rule context="tei:ab[@subtype='relation']/tei:listRelation/tei:relation | tei:ab[@subtype='event']/tei:listEvent/tei:event/tei:desc/tei:listRelation/tei:relation">   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="mutual"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/mutual-relations-collection']/skos:member/@rdf:resource"/>   <sch:let name="directed"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/directed-relations-collection']/skos:member/@rdf:resource"/>   <sch:report test=".[@ref = $mutual]/@active | .[@ref = $mutual]/@passive">    <sch:value-of select="@ref"/> is a relationship that requires a single @mutual attribute. The use of @active and @passive is not allowed.</sch:report>   <sch:report test=".[@ref = $directed]/@mutual">    <sch:value-of select="@ref"/> is a relationship that requires a the use of @active and @passive attributes, @mutual is not allowed.</sch:report>  </sch:rule> </sch:pattern> </sch:schema> <sch:rule context="tei:ab[@subtype='event']/tei:listRelation/tei:relation"> <sch:assert test="@mutual">A @mutual attribute is required on <relation> in event factoids.</sch:assert> <sch:report test="@active">@active attributes are not allowed on <relation> in event factoids.</sch:report> <sch:report test="@passive">@passive attributes are not allowed on <relation> in event factoids.</sch:report> </sch:rule> <sch:rule context="tei:ab[@subtype='relation']/tei:listRelation/tei:relation/@mutual | tei:ab[@subtype='relation']/tei:listRelation/tei:relation/@active | tei:ab[@subtype='relation']/tei:listRelation/tei:relation/@passive | tei:ab[@subtype='event']/tei:listEvent/tei:event/tei:desc/tei:listRelation/tei:relation/@mutual | tei:ab[@subtype='event']/tei:listEvent/tei:event/tei:desc/tei:listRelation/tei:relation/@active | tei:ab[@subtype='event']/tei:listEvent/tei:event/tei:desc/tei:listRelation/tei:relation/@passive"> <sch:let name="personIndex"  value="doc('https://raw.githubusercontent.com/srophe/syriaca/master/documentation/indexes/persons.xml')"/> <sch:let name="personURIs"  value="$personIndex//tei:person/@ref"/> <sch:let name="error" value="."/> <sch:assert test=" every $i in (tokenize(., ' ')) satisfies $i = $personURIs"  role="warning">  <sch:value-of select="$error"/> is not currently in use. Note that all person URIs take the form 'http://syriaca.org/person/{\d+}' (where {\d+} is a number). If a URI is not current available, replace the number portion of the URI with "#" followed without a space by a number that you use consistently when encoding information about that person. </sch:assert> </sch:rule>
Schematron
<sch:rule context="tei:event[@when]//tei:relation"> <sch:assert test="./@when = ./ancestor::tei:event/@when"> This <relation> must have a @when attribute with the value <sch:value-of select="./ancestor::tei:event/@when"/>. </sch:assert> </sch:rule> <sch:rule context="tei:event[@notBefore]//tei:relation"> <sch:assert test="./@notBefore = ./ancestor::tei:event/@notBefore"> This <relation> must have a @notBefore attribute with the value <sch:value-of select="./ancestor::tei:event/@notBefore"/>. </sch:assert> </sch:rule> <sch:rule context="tei:event[@notAfter]//tei:relation"> <sch:assert test="./@notAfter = ./ancestor::tei:event/@notAfter"> This <relation> must have a @notAfter attribute with the value <sch:value-of select="./ancestor::tei:event/@notAfter"/>. </sch:assert> </sch:rule> <sch:rule context="tei:event[@from]//tei:relation"> <sch:assert test="./@from = ./ancestor::tei:event/@from"> This <relation> must have a @from attribute with the value <sch:value-of select="./ancestor::tei:event/@from"/>. </sch:assert> </sch:rule> <sch:rule context="tei:event[@to]//tei:relation"> <sch:assert test="./@to = ./ancestor::tei:event/@to"> This <relation> must have a @to attribute with the value <sch:value-of select="./ancestor::tei:event/@to"/>. </sch:assert> </sch:rule>
Schematron
<sch:rule context="tei:relation"> <sch:assert test="@ref or @key or @name">One of the attributes @name, @ref or @key must be supplied</sch:assert> </sch:rule>
Schematron
<sch:rule context="tei:relation"> <sch:report test="@active and @mutual">Only one of the attributes @active and @mutual may be supplied</sch:report> </sch:rule>
Schematron
<sch:rule context="tei:relation"> <sch:report test="@passive and not(@active)">the attribute @passive may be supplied only if the attribute @active is supplied</sch:report> </sch:rule>
Content model
<content>
 <elementRef key="desc" minOccurs="0"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element relation
{
   att.global.attribute.xmlid,
   att.global.attribute.n,
   att.global.attribute.xmllang,
   att.global.attribute.xmlbase,
   att.global.attribute.xmlspace,
   att.global.linking.attribute.corresp,
   att.global.linking.attribute.synch,
   att.global.linking.attribute.sameAs,
   att.global.linking.attribute.copyOf,
   att.global.linking.attribute.next,
   att.global.linking.attribute.prev,
   att.global.linking.attribute.exclude,
   att.global.linking.attribute.select,
   att.global.rendition.attribute.rend,
   att.global.rendition.attribute.style,
   att.global.rendition.attribute.rendition,
   att.global.responsibility.attribute.cert,
   att.global.responsibility.attribute.resp,
   att.global.source.attribute.source,
   att.canonical.attribute.key,
   att.datable.attributes,
   att.editLike.attributes,
   att.sortable.attributes,
   att.typed.attribute.subtype,
   attribute ana { list { * } }?,
   attribute ref { list { + } }?,
   attribute type { text },
   ( attribute active { list { + } }? | attribute mutual { list { + } }? ),
   attribute name { text }?,
   attribute passive { list { + } }?,
   desc?
}

2.1.58. <residence>

<residence>
Modulenamesdates — SPEAR Schema Customization
Attributes
Contained by
namesdates: person personGrp
May contain
core: date note
namesdates: placeName
Note

This customization limits the attribute classes of the <residence> element to att.datable.custom and att.datable.w3c and removes the <residence> element from all model classes. It also requires exactly one <placeName> child and one <note> child and allows an optional <date> child.

Example
<ab type="factoidsubtype="residence"  xml:id="factoid-3resp="#jwalters">  <idno type="URI">https://spear-prosop.org/798-3</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/1980"/>    <residence>     <placeName ref="http://syriaca.org/place/493"/>     <note type="desc">      <persName ref="http://syriaca.org/person/1980">Paul</persName> resided in     <placeName ref="http://syriaca.org/place/493">Sophanene</placeName>.     </note>    </residence>   </person>  </listPerson> ... </ab>
Content model
<content>
 <sequence minOccurs="1" maxOccurs="1"
  preserveOrder="true">
  <elementRef key="placeName" minOccurs="1"
   maxOccurs="1"/>
  <elementRef key="date" minOccurs="0"
   maxOccurs="1"/>
  <elementRef key="note" minOccurs="1"
   maxOccurs="1"/>
 </sequence>
</content>
    
Schema Declaration
element residence
{
   att.datable.custom.attributes,
   att.datable.w3c.attributes,
   ( placeName, date?, note )
}

2.1.59. <resp>

<resp> (responsibility) contains a phrase describing the nature of a person's intellectual responsibility, or an organization's role in the production or distribution of a work. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.2. The Edition Statement 2.2.5. The Series Statement]
Modulecore — SPEAR Schema Customization
Attributes
Contained by
core: respStmt
May contain
character data
Note

The attribute ref, inherited from the class att.canonical may be used to indicate the kind of responsibility in a normalized form by referring directly to a standardized list of responsibility types, such as that maintained by a naming authority, for example the list maintained at http://www.loc.gov/marc/relators/relacode.html for bibliographic usage.

Example
<respStmt>  <resp ref="http://id.loc.gov/vocabulary/relators/com.html">compiler</resp>  <name>Edward Child</name> </respStmt>
Content model
<content>
 <macroRef key="macro.phraseSeq.limited"/>
</content>
    
Schema Declaration
element resp
{
   att.global.attributes,
   att.canonical.attributes,
   att.datable.attributes,
   macro.phraseSeq.limited
}

2.1.60. <respStmt>

<respStmt> (statement of responsibility) supplies a statement of responsibility for the intellectual content of a text, edition, recording, or series, where the specialized elements for authors, editors, etc. do not suffice or do not apply. May also be used to encode information about individuals or organizations which have played a role in the production or distribution of a bibliographic work. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.2. The Edition Statement 2.2.5. The Series Statement]
Modulecore — SPEAR Schema Customization
Attributes
Contained by
May contain
core: name note resp
namesdates: orgName persName
Example
<respStmt>  <resp>transcribed from original ms</resp>  <persName>Claus Huitfeldt</persName> </respStmt>
Example
<respStmt>  <resp>converted to XML encoding</resp>  <name>Alan Morrison</name> </respStmt>
Content model
<content>
 <sequence>
  <alternate>
   <sequence>
    <elementRef key="resp" minOccurs="1"
     maxOccurs="unbounded"/>
    <classRef key="model.nameLike.agent"
     minOccurs="1" maxOccurs="unbounded"/>
   </sequence>
   <sequence>
    <classRef key="model.nameLike.agent"
     minOccurs="1" maxOccurs="unbounded"/>
    <elementRef key="resp" minOccurs="1"
     maxOccurs="unbounded"/>
   </sequence>
  </alternate>
  <elementRef key="note" minOccurs="0"
   maxOccurs="unbounded"/>
 </sequence>
</content>
    
Schema Declaration
element respStmt
{
   att.global.attributes,
   att.canonical.attributes,
   (
      ( ( resp+, model.nameLike.agent+ ) | ( model.nameLike.agent+, resp+ ) ),
      note*
   )
}

2.1.61. <revisionDesc>

<revisionDesc> (revision description) summarizes the revision history for a file. [2.6. The Revision Description 2.1.1. The TEI Header and Its Components]
Moduleheader — SPEAR Schema Customization
Attributes
statusdescribes the status of a document either currently or, when associated with a dated element, at the time indicated.
Derived fromatt.docStatus
StatusOptional
Datatypeteidata.enumerated
Legal values are:
draft
[Default]
published
Contained by
header: teiHeader
May contain
header: change
Note

SPEAR uses the <revisionDesc> element to indicate the status of the record and to indicate major data changes and the person responsible.

Example
<revisionDesc status="draft">  <change who="http://syriaca.org/documentation/editors.xml#srophe-util"   when="2020-01-03-05:00status="draft">CHANGED: Add a human readable version or the    tei:relation element in a tei:desc.</change>  <change who="http://syriaca.org/documentation/editors.xml#syoung"   status="draft">Initial    data collected by Sam Young, Summer 2018. </change> </revisionDesc>
Content model
<content>
 <elementRef key="change" minOccurs="0"
  maxOccurs="unbounded"/>
</content>
    
Schema Declaration
element revisionDesc
{
   att.global.attributes,
   attribute status { "draft" | "published" }?,
   change*
}

2.1.62. <rs>

<rs> (referencing string) contains a general purpose name or referring string. [14.2.1. Personal Names 3.6.1. Referring Strings]
Modulecore — SPEAR Schema Customization
Attributes
Member of
Contained by
May containCharacter data only
Note

Neither SPEAR nor Syriaca.org establish authority control for events. Events are simply too varied and open to interpretation to make this feasable. SPEAR instead relates two or more events that deal with similar or identical event by referencing a corresponding factoid or factoids. The <rs> element is used to do this.

Example
<ab type="factoidsubtype="event"  xml:id="factoid-11resp="#ktorabi #dschwartz">  <idno type="URI">https://spear-prosop.org/3050-11</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/letters http://syriaca.org/taxonomy/wealth http://syriaca.org/taxonomy/property">    <desc>     <persName ref="http://syriaca.org/person/2460">Musonius</persName> sent a letter to    <persName ref="http://syriaca.org/person/2511">Longinus</persName>        seeking illicit gain.    <listRelation>      <relation type="person"       ref="http://syriaca.org/taxonomy/sender-of-letter-toactive="http://syriaca.org/person/2460"       passive="http://syriaca.org/person/2511"/>     </listRelation>    </desc>   </event>  </listEvent>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/8GRCM47V"/>   <citedRange unit="p">79</citedRange>  </bibl>  <note type="relatedEvent">   <listRelation>    <relation type="event"     ref="http://syriaca.org/taxonomy/same-event"     mutual="https://spear-prosop.org/3026-11 https://spear-prosop.org/3050-11">     <desc> The following factoids deal with the same event: <rs ref="https://spear-prosop.org/3026-11">3026-11</rs>,     <rs ref="https://spear-prosop.org/3050-11">3050-11</rs>.     </desc>    </relation>   </listRelation>  </note> </ab>
Schematron
<sch:rule context="//tei:ab/tei:listEvent/tei:listRelation/tei:relation/tei:desc/tei:rs/@ref"> <sch:let name="SameEventURIs"  value="tokenize(ancestor::tei:relation/@mutual, ' ')"/> <sch:let name="countMutual"  value="for $i in $SameEventURIs return count($i)"/> <sch:assert test=". = $SameEventURIs"> Acceptable values: <sch:value-of select="string-join($SameEventURIs, '; ')"/> </sch:assert> </sch:rule> <sch:rule context="//tei:ab//tei:rs"> <sch:let name="URIno"  value="substring-after(@ref, 'spear-prosop.org/')"/> <sch:assert test=". = $URIno"> The text node of this <rs> element must be <sch:value-of select="$URIno"/>. </sch:assert> </sch:rule>
Content model
<content>
 <textNode/>
</content>
    
Schema Declaration
element rs
{
   att.global.attributes,
   att.cmc.attributes,
   att.naming.attributes,
   att.typed.attributes,
   text
}

2.1.63. <seriesStmt>

<seriesStmt> (series statement) groups information about the series, if any, to which a publication belongs. [2.2.5. The Series Statement 2.2. The File Description]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: fileDesc
May contain
Note

Individual SPEAR records are part of one or more series. Every record is part of SPEAR itself. A series can be designated according to a collection of works; for example a letter collection or a collection of saints' lives. This allows the data to be querried according to series as well as according to the entire dataset.

Example
<fileDesc> ... <seriesStmt>   <title level="s">SPEAR: Syriac Persons, Events, and Relations</title>   <editor role="general"    ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>   <idno type="URI">https://spear-prosop.org</idno>  </seriesStmt>  <seriesStmt>   <title level="mxml:lang="en">The Letters of Severus of Antioch</title>   <title type="sub">A SPEAR Prosopography</title>   <editor role="general"    ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>   <idno type="URI">https://spear-prosop.org/letters-severus</idno>   <biblScope unit="volume">    <title level="s">SPEAR: Syriac Persons, Events, and Relations</title>    <idno type="URI">https://spear-prosop.org</idno>   </biblScope>  </seriesStmt> ... </fileDesc>
Schematron
<sch:rule context="tei:seriesStmt[1]/tei:title[1]"> <sch:assert test="@level='s'"> The <title> requires a @level attribute with a value of "s". </sch:assert> <sch:assert test=". = 'SPEAR: Syriac Persons, Events, and Relations'"> This <title> must be "SPEAR: Syriac Persons, Events, and Relations". </sch:assert> </sch:rule> <sch:rule context="tei:seriesStmt[2]/tei:title[1]"> <sch:assert test="@level='m'"> The <title> requires a @level attribute with a value of "m". </sch:assert> <sch:assert test=" . = 'The Chronicle of Edessa' or . = 'The Letters of Severus of Antioch' or . = 'The Lives of the Eastern Saints' "> This <title> must be one of the following: "The Chronicle of Edessa", "The Lives of the Eastern Saints", or "The Letters of Severus of Antioch". </sch:assert> </sch:rule> <sch:rule context="tei:seriesStmt[2]/tei:title[2]"> <sch:assert test="@type='sub'"> This <title> requires a @type attribute with a value of "sub". </sch:assert> <sch:assert test=". = 'A SPEAR Prosopography'"> This <title> must be "A SPEAR Prosopography". </sch:assert> </sch:rule>
Schematron
<sch:rule context="tei:seriesStmt/tei:editor"> <sch:assert test="@role='general'"> This <editor> must have a @role attribute with a value of "general". </sch:assert> </sch:rule> <sch:rule context="tei:seriesStmt/tei:editor"> <sch:report test="@role='creator'"> This <editor> cannot have a @role attribute with a value of "creator". </sch:report> </sch:rule> <sch:rule context="tei:seriesStmt[1]/tei:editor"> <sch:assert test="@ref='http://syriaca.org/documentation/editors.xml#dschwartz'"> This <editor> must have a @ref attribute with a value of "http://syriaca.org/documentation/editors.xml#dschwartz". </sch:assert> <sch:assert test=". = 'Daniel L. Schwartz'"> This <editor> must be "Daniel L. Schwartz". </sch:assert> </sch:rule>
Schematron
<sch:rule context="tei:seriesStmt[1]/tei:idno"> <sch:assert test=". = 'https://spear-prosop.org'"> This <idno> must be "https://spear-prosop.org". </sch:assert> </sch:rule> <sch:rule context="tei:seriesStmt[2]/tei:idno[preceding-sibling::tei:title = 'The Lives of the Eastern Saints']"> <sch:assert test=". = 'https://spear-prosop.org/lives-eastern-saints'"> This <idno> must be "https://spear-prosop.org/lives-eastern-saints". </sch:assert> </sch:rule> <sch:rule context="tei:seriesStmt[2]/tei:idno[preceding-sibling::tei:title = 'The Letters of Severus of Antioch']"> <sch:assert test=". = 'https://spear-prosop.org/letters-severus'"> This <idno> must be "https://spear-prosop.org/letters-severus". </sch:assert> </sch:rule>
Schematron
<sch:rule context="tei:seriesStmt[1]"> <sch:report test="tei:biblScope"> This <seriesStmt> cannot contain a <biblScope>. </sch:report> </sch:rule> <sch:rule context="tei:seriesStmt[2]"> <sch:assert test="tei:biblScope"> This <seriesStmt> requires a <biblScope>. </sch:assert> </sch:rule> <sch:rule context="tei:seriesStmt[2]/tei:biblScope"> <sch:assert test="@unit='volume'"> This <biblScope> element requires a a @unit attribute having a value of "volume". </sch:assert> <sch:assert test="tei:title"> This <biblScope> element requires a child <title> element. </sch:assert> </sch:rule> <sch:rule context="tei:seriesStmt[2]/tei:biblScope/tei:title"> <sch:assert test="@level='s'"> This <title> element requires a @level attribute with a value of "s". </sch:assert> <sch:assert test=". = 'SPEAR: Syriac Persons, Events, and Relations'"> This <title> element must contain "SPEAR: Syriac Persons, Events, and Relations". </sch:assert> </sch:rule>
Content model
<content>
 <sequence minOccurs="1"
  maxOccurs="unbounded">
  <elementRef key="title" minOccurs="1"
   maxOccurs="2"/>
  <elementRef key="editor" minOccurs="1"
   maxOccurs="unbounded"/>
  <elementRef key="respStmt" minOccurs="0"
   maxOccurs="unbounded"/>
  <elementRef key="idno" minOccurs="1"
   maxOccurs="1"/>
  <elementRef key="biblScope" minOccurs="0"
   maxOccurs="1"/>
 </sequence>
</content>
    
Schema Declaration
element seriesStmt
{
   att.global.attributes,
   att.declarable.attributes,
   ( ( ( title, title? ), editor+, respStmt*, idno, biblScope? )+ )
}

2.1.64. <sic>

<sic> (Latin for thus or so) contains text reproduced although apparently incorrect or inaccurate. [3.5.1. Apparent Errors]
Modulecore — SPEAR Schema Customization
Member of
Contained by
May contain
Note

SPEAR encodes when there is a mistake in the source text and uses the <sic> element to indicate the incorrect information. This customization also restricts <reg> to model.choicePart and model.pPart.transcriptional.

Example
<ab type="factoidsubtype="event"  xml:id="factoid-52resp="#dschwartz">  <idno type="URI">https://spear-prosop.org/8559-52</idno>  <listEvent>   <event ana="http://syriaca.org/taxonomy/emperors http://syriaca.org/taxonomy/accession"    when="-0044">    <desc> In    <choice>      <corr>       <date when="-0044"        calendar="Gregorian">44 B.C.</date>      </corr>      <sic>       <reg>        <date notBefore="-0046-10"         notAfter="-0045-09calendar="Gregorian">46/5 B.C.</date>       </reg>       <orig>        <date when-custom="0266"         datingMethod="Seleucid">A. Gr.                266</date>       </orig>      </sic>     </choice>     <persName ref="http://syriaca.org/person/2238">Augustus</persName> became King of    <placeName ref="http://syriaca.org/place/166"> Rome </placeName>.    </desc>   </event>  </listEvent>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/XQU5AW69"/>   <citedRange unit="p">3</citedRange>  </bibl>  <bibl type="urn">   <ptr target="urn:cts:syriacLit:nhsl8559.syriacCorpus57:3"/>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/IRKW44YC"/>   <citedRange unit="part">2</citedRange>  </bibl>  <note type="certaintysubtype="errata"> The author has apparently mistaken the date of Augustus'    accession. </note> </ab>
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
    
Schema Declaration
element sic { macro.paraContent }

2.1.65. <socecStatus>

<socecStatus> (socio-economic status) contains an informal description of a person's perceived social or economic status. [16.2.2. The Participant Description]
Modulenamesdates — SPEAR Schema Customization
Attributes
ana
Derived fromatt.global.analytic
StatusRequired
Schematron
<sch:schema> <sch:ns uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  prefix="rdf"/> <sch:ns uri="http://www.w3.org/2004/02/skos/core#"  prefix="skos"/> <sch:pattern>  <sch:rule context="tei:socecStatus/@ana">   <sch:let name="anaTokens"    value="tokenize(., ' ')"/>   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="socioeconomicStatusURIs"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/socio-economic-status']/skos:narrower/@rdf:resource"/>   <sch:let name="errors"    value="for $i in $anaTokens return $i[not(. = $socioeconomicStatusURIs)]"/>   <sch:assert test="every $i in $anaTokens satisfies $i = $socioeconomicStatusURIs"    role="warning">    <sch:value-of select="string-join($errors, ', ')"/>: URI(s) not among the socio-economic statuses in the Taxonomy. If you find no appropriate concept on the following list,      please choose a keyword of your own for the editors to consider: <sch:value-of select="string-join($socioeconomicStatusURIs, '; ')"/>.</sch:assert>  </sch:rule> </sch:pattern> </sch:schema>
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
schemeidentifies the classification system or taxonomy in use, for example by pointing to a locally-defined <taxonomy> element or by supplying a URI for an externally-defined system.
StatusOptional
Datatypeteidata.pointer
codeidentifies a status code defined within the classification system or taxonomy defined by the scheme attribute.
StatusOptional
Datatypeteidata.pointer
Contained by
namesdates: person personGrp
May contain
core: note
Note

This customization restricts the attribute classes of <socecStatus> to att.datable.w3c and att.global.analytic. If more precise dating is required for a SPEAR factoid, the encoder should use the <date> element.

It only allows <note> as a child element and it restricts the required @ana attribute to keyword URIs in the Syriac Taxonomy that pertain to socioeconomic status.

Example
<ab type="factoidsubtype="socecStatus"  xml:id="factoid-6resp="#upossekel #mdebie #egarret">  <idno type="URI">https://spear-prosop.org/847-6</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3014"/>    <socecStatus ana="http://syriaca.org/taxonomy/patricians">     <note type="desc">      <persName ref="http://syriaca.org/person/3014">Photius</persName> was a patrician.     </note>    </socecStatus>   </person>  </listPerson> ... </ab>
Content model
<content>
 <elementRef key="note" minOccurs="1"
  maxOccurs="unbounded"/>
</content>
    
Schema Declaration
element socecStatus
{
   att.datable.w3c.attributes,
   attribute ana { list { + } },
   attribute scheme { text }?,
   attribute code { text }?,
   note+
}

2.1.66. <sourceDesc>

<sourceDesc> (source description) describes the source(s) from which an electronic text was derived or generated, typically a bibliographic description in the case of a digitized text, or a phrase such as ‘born digital’ for a text which has no previous existence. [2.2.7. The Source Description]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: fileDesc
May contain
core: listBibl
namesdates: listRelation
Note

Although SPEAR produces born-digital prosographical material, all of the data in SPEAR is derived from print editions or manuscripts of Syriac works. SPEAR uses the <sourceDesc> element to describe that source material and to connect the data in this file to the Syriaca.org knowledge graph.

Example
<fileDesc> ... <sourceDesc>   <listBibl>    <head>Sources for the Data in this Born Digital Prosopography</head>    <bibl type="primary">     <title>Lives of the Eastern Saints II</title>     <title>Four          Deacons</title>     <author>      <persName ref="http://syriaca.org/person/74">John            of Ephesus</persName>     </author>     <editor>      <persName ref="http://syriaca.org/person/403">E. W.            Brooks</persName>     </editor>     <ptr target="http://syriaca.org/cbss/U78B4C66"/>    </bibl>    <bibl type="primary">     <title>Four Deacons</title>     <author>      <persName ref="http://syriaca.org/person/74">John of            Ephesus</persName>     </author>     <ptr target="http://syriaca.org/work/834"/>    </bibl>   </listBibl>   <listRelation>    <relation type="part"     active="http://syriaca.org/work/834name="dcterms:isPartOf"     passive="http://syriaca.org/work/9501"/>   </listRelation>  </sourceDesc> ... </fileDesc>
Content model
<content>
 <sequence minOccurs="0"
  maxOccurs="unbounded">
  <elementRef key="listBibl" minOccurs="1"
   maxOccurs="1"/>
  <elementRef key="listRelation"
   minOccurs="0" maxOccurs="unbounded"/>
 </sequence>
</content>
    
Schema Declaration
element sourceDesc
{
   att.global.attributes,
   att.declarable.attributes,
   ( ( listBibl, listRelation* )* )
}

2.1.67. <sponsor>

<sponsor> (sponsor) specifies the name of a sponsoring organization or institution. [2.2.1. The Title Statement]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: titleStmt
May containCharacter data only
Note

The TEI guidelines recommend that the <titleStmt> element also indicate who is responsible for this TEI file. Since <author> is typically used for the author of a print or manuscript text which was then encoded in TEI, we avoid the use of the <author> element. Instead, we identify Syriaca.org as the sponsoring institution.

Example
<titleStmt>  <title level="atype="main">Severus of Antioch, Letter, <title ref="http://syriaca.org/work/3218">To Philexonus the Bishop</title>  </title>  <title type="sub">A SPEAR Prosopography</title>  <sponsor>Syriaca.org: The Syriac Reference Portal</sponsor>  <funder>The National Endowment for the Humanities</funder>  <funder>Texas A&amp;M University</funder>  <editor role="general"   ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>  <editor role="creator"   ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>  <respStmt>   <resp>>Data architecture, data entry, editing, proofreading, and revision      by</resp>   <name ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</name>  </respStmt> </titleStmt>
Content model
<content>
 <textNode/>
</content>
    
Schema Declaration
element sponsor
{
   att.global.attributes,
   att.canonical.attributes,
   att.datable.attributes,
   text
}

2.1.68. <state>

<state> (state) contains a description of some status or quality attributed to a person, place, or organization often at some specific time or for a specific date range. [14.3.1. Basic Principles 14.3.2.1. Personal Characteristics]
Modulenamesdates — SPEAR Schema Customization
Attributes
ana
Derived fromatt.global.analytic
StatusOptional
Schematron
<sch:schema> <sch:ns uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  prefix="rdf"/> <sch:ns uri="http://www.w3.org/2004/02/skos/core#"  prefix="skos"/> <sch:pattern>  <sch:rule context="tei:state[@type='mental']">   <sch:assert test="@ana"> A <state> with @type="mental" requires an @ana attribute.   </sch:assert>  </sch:rule>  <sch:rule context="tei:state[@type='sanctity']">   <sch:assert test="@ana"> A <state> with @type="sanctity" requires an @ana attribute.   </sch:assert>  </sch:rule>  <sch:rule context="tei:state[@type='religiousAffiliation']">   <sch:assert test="@ana"> A <state> with @type="religiousAffiliation" requires an @ana attribute.   </sch:assert>  </sch:rule>  <sch:rule context="tei:state[@type='mental']/@ana">   <sch:let name="anaTokens"    value="tokenize(., ' ')"/>   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="mentalStateURIs"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/mental-and-emotional-states']/skos:narrower/@rdf:resource"/>   <sch:let name="errors"    value="for $i in $anaTokens return $i[not(. = $mentalStateURIs)]"/>   <sch:assert test="every $i in $anaTokens satisfies $i = $mentalStateURIs"    role="warning">    <sch:value-of select="string-join($errors, ', ')"/>: URI(s) not among the mental states in the Taxonomy. If you find no appropriate concept on the following list,      please choose a keyword of your own for the editors to consider: <sch:value-of select="string-join($mentalStateURIs, '; ')"/>.</sch:assert>  </sch:rule>  <sch:rule context="tei:state[@type='sanctity']/@ana">   <sch:let name="anaTokens"    value="tokenize(., ' ')"/>   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="sanctityURIs"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/sanctity-collection']/skos:member/@rdf:resource"/>   <sch:let name="errors"    value="for $i in $anaTokens return $i[not(. = $sanctityURIs)]"/>   <sch:assert test="every $i in $anaTokens satisfies $i = $sanctityURIs"    role="warning">    <sch:value-of select="string-join($errors, ', ')"/>: URI(s) not among the sanctity collection in the Taxonomy. If you find no appropriate concept on the following list,      please choose a keyword of your own for the editors to consider: <sch:value-of select="string-join($sanctityURIs, '; ')"/>.</sch:assert>  </sch:rule>  <sch:rule context="tei:state[@type='religiousAffiliation']/@ana">   <sch:let name="anaTokens"    value="tokenize(., ' ')"/>   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="religionURIs"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/religious-communities-collection']/skos:member/@rdf:resource"/>   <sch:let name="errors"    value="for $i in $anaTokens return $i[not(. = $religionURIs)]"/>   <sch:assert test="every $i in $anaTokens satisfies $i = $religionURIs"    role="warning">    <sch:value-of select="string-join($errors, ', ')"/>: URI(s) not the religious communities in the Taxonomy. If you find no appropriate concept on the following list,      please choose a keyword of your own for the editors to consider: <sch:value-of select="string-join($religionURIs, '; ')"/>.</sch:assert>  </sch:rule> </sch:pattern> </sch:schema>
Datatypeteidata.text
type
StatusRequired
Datatypeteidata.enumerated
Legal values are:
citizenship
used for references to a place where someone held the position of citizen.
mental
used for references to a person's mental traits; such as intelligence, mental disability, wisdom, etc.
religiousAffiliation
used for references to a person's religious affiliation; including but not limited to membership in an organization, adhering to a set of beliefs, or identifying with a religious community in some way.
sanctity
used for references to a person's sanctity.
Contained by
namesdates: person personGrp
May contain
core: note
namesdates: placeName
Note

This customization restricts the attribute classes of <state> to att.datable.w3c and att.global.analytic. If more precise dating is required for a SPEAR factoid, the encoder should use the <date> element.

It only allows <note> as a child element. It restricts the required @type attribute to the values "citizenship", "mental", "religiousAffiliation", and "sanctity". It restricts the required @ana attribute to keyword URIs in the Syriac Taxonomy that pertain to each of these three types.

Example
<ab type="factoidsubtype="sanctity"  xml:id="factoid-4resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-4</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3218"/>    <state type="sanctity"     ana="http://syriaca.org/taxonomy/saints">     <note type="desc">      <persName ref="http://syriaca.org/person/3218">John</persName> was a saint.</note>    </state>   </person>  </listPerson> ... </ab> ... <ab type="factoidsubtype="citizenship"  xml:id="factoid-65resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-65</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3185"/>    <state type="citizenship">     <placeName ref="http://syriaca.org/place/8"/>     <note type="desc">      <persName ref="http://syriaca.org/person/3185">Abraham</persName> was from     <placeName ref="http://syriaca.org/place/8">Amida</placeName>.</note>    </state>   </person>  </listPerson> ... </ab>
Content model
<content>
 <sequence minOccurs="1" maxOccurs="1">
  <elementRef key="placeName" minOccurs="0"
   maxOccurs="1"/>
  <elementRef key="note" minOccurs="1"
   maxOccurs="1"/>
 </sequence>
</content>
    
Schema Declaration
element state
{
   att.datable.w3c.attributes,
   attribute ana { text }?,
   attribute type
   {
      "citizenship" | "mental" | "religiousAffiliation" | "sanctity"
   },
   ( placeName?, note )
}

2.1.69. <taxonomy>

<taxonomy> (taxonomy) defines a typology either implicitly, by means of a bibliographic citation, or explicitly by a structured taxonomy. [2.3.7. The Classification Declaration]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: classDecl
May contain
header: category
Note

SPEAR only uses <taxonomy> to indicate a date that has been calculated by the editors based on a regnal year given in the text.

Example
<classDecl>  <taxonomy>   <category xml:id="calculated">    <catDesc> Used to denote a date calculated by the editor from a regnal year        given in the text. </catDesc>   </category>  </taxonomy> </classDecl>
Content model
<content>
 <elementRef key="category" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element taxonomy { att.global.attributes, att.datcat.attributes, category }

2.1.70. <teiHeader>

<teiHeader> (TEI header) supplies descriptive and declarative metadata associated with a digital resource or set of resources. [2.1.1. The TEI Header and Its Components 16.1. Varieties of Composite Text]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
textstructure: TEI
May contain
Note

Every <teiHeader> contains a <fileDesc> (information about the creation of a file), an <encodingDesc> (editorial rules), a <profileDesc>> (non-bibliographic aspects of a text), and a <revisionDesc> (history of revisions).

Example
<teiHeader>  <fileDesc>   <titleStmt>    <title level="atype="main">Severus of Antioch, Letter, <title ref="http://syriaca.org/work/3182">To Charisius the Monk</title>    </title>    <title type="sub">A SPEAR Prosopography</title>    <sponsor>Syriaca.org: The Syriac Reference Portal</sponsor>    <funder>The National Endowment for the Humanities</funder>    <funder>Texas A&amp;M University</funder>    <editor role="general"     ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>    <editor role="creator"     ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>    <respStmt>     <resp>>Data architecture, data entry, editing, proofreading, and revision          by</resp>     <name ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</name>    </respStmt>   </titleStmt>   <editionStmt>    <edition n="1.0"/>   </editionStmt>   <publicationStmt>    <authority>Syriaca.org: The Syriac Reference Portal</authority>    <idno type="URI">https://spear-prosop.org/3182/tei</idno>    <availability>     <licence target="http://creativecommons.org/licenses/by/4.0/">      <p>Distributed under a Creative Commons Attribution 4.0 International License (CC BY 4.0)</p>     </licence>    </availability>    <date>2020-01-03-05:00</date>   </publicationStmt>   <seriesStmt>    <title level="s">SPEAR: Syriac Persons, Events, and Relations</title>    <editor role="general"     ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>    <idno type="URI">https://spear-prosop.org</idno>   </seriesStmt>   <seriesStmt>    <title level="mxml:lang="en">The Letters of Severus of Antioch</title>    <title type="sub">A SPEAR Prosopography</title>    <editor role="general"     ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>    <idno type="URI">https://spear-prosop.org/letters-severus</idno>    <biblScope unit="volume">     <title level="s">SPEAR: Syriac Persons, Events, and Relations</title>     <idno type="URI">https://spear-prosop.org</idno>    </biblScope>   </seriesStmt>   <sourceDesc>    <listBibl>     <head>Sources for the Data in this Born Digital Prosopography</head>     <bibl type="primary">      <title xml:lang="en">A Collection of Letters of Severus of Antioch</title>      <title xml:lang="lalevel="s">Patrologia Orientalis</title>      <author>       <persName ref="http://syriaca.org/person/51">Severus of              Antioch</persName>      </author>      <editor>       <persName ref="http://syriaca.org/person/403">E. W.              Brooks</persName>      </editor>      <biblScope unit="tomus">12</biblScope>      <ptr target="http://syriaca.org/cbss/X6ZICMNL"/>      <citedRange unit="p">292-93</citedRange>      <citedRange unit="part">37</citedRange>     </bibl>     <bibl type="primary">      <title xml:lang="en">To Charisius the Monk</title>      <author>       <persName ref="http://syriaca.org/person/51"/>Severus of            Antioch</author>      <ptr target="http://syriaca.org/work/3182"/>     </bibl>    </listBibl>   </sourceDesc>  </fileDesc>  <encodingDesc>   <classDecl>    <taxonomy>     <category xml:id="calculated">      <catDesc> Used to denote a date calculated by the editor from a regnal year            or some other dating method given in the text. </catDesc>     </category>    </taxonomy>   </classDecl>  </encodingDesc>  <profileDesc/>  <revisionDesc status="draft">   <change who="http://syriaca.org/documentation/editors.xml#dschwartz"    when="2021-10status="draft">CREATED</change>  </revisionDesc> </teiHeader>
Content model
<content>
 <sequence minOccurs="1" maxOccurs="1"
  preserveOrder="true">
  <elementRef key="fileDesc" minOccurs="1"
   maxOccurs="1"/>
  <elementRef key="encodingDesc"
   minOccurs="1" maxOccurs="1"/>
  <elementRef key="profileDesc"
   minOccurs="1" maxOccurs="1"/>
  <elementRef key="revisionDesc"
   minOccurs="1" maxOccurs="1"/>
 </sequence>
</content>
    
Schema Declaration
element teiHeader
{
   att.global.attributes,
   ( fileDesc, encodingDesc, profileDesc, revisionDesc )
}

2.1.71. <text>

<text> (text) contains a single text of any kind, whether unitary or composite, for example a poem or drama, a collection of essays, a novel, a dictionary, or a corpus sample. [4. Default Text Structure 16.1. Varieties of Composite Text]
Moduletextstructure — SPEAR Schema Customization
Attributes
Member of
Contained by
textstructure: TEI
May contain
core: note
textstructure: back body
Note

This element should not be used to represent a text which is inserted at an arbitrary point within the structure of another, for example as in an embedded or quoted narrative; the <floatingText> is provided for this purpose.

Example
<text>  <front>   <docTitle>    <titlePart>Autumn Haze</titlePart>   </docTitle>  </front>  <body>   <l>Is it a dragonfly or a maple leaf</l>   <l>That settles softly down upon the water?</l>  </body> </text>
ExampleThe body of a text may be replaced by a group of nested texts, as in the following schematic:
<text>  <front> <!-- front matter for the whole group -->  </front>  <group>   <text> <!-- first text -->   </text>   <text> <!-- second text -->   </text>  </group> </text>
Content model
<content>
 <sequence>
  <classRef key="model.global"
   minOccurs="0" maxOccurs="unbounded"/>
  <sequence minOccurs="0">
   <elementRef key="front"/>
   <classRef key="model.global"
    minOccurs="0" maxOccurs="unbounded"/>
  </sequence>
  <alternate>
   <elementRef key="body"/>
   <elementRef key="group"/>
  </alternate>
  <classRef key="model.global"
   minOccurs="0" maxOccurs="unbounded"/>
  <sequence minOccurs="0">
   <elementRef key="back"/>
   <classRef key="model.global"
    minOccurs="0" maxOccurs="unbounded"/>
  </sequence>
 </sequence>
</content>
    
Schema Declaration
element text
{
   att.global.attributes,
   att.declaring.attributes,
   att.typed.attributes,
   att.written.attributes,
   (
      model.global*,
      ( ( front, model.global* )? ),
      ( body | group ),
      model.global*,
      ( ( back, model.global* )? )
   )
}

2.1.72. <title>

<title> (title) contains a title for any kind of work. [3.12.2.2. Titles, Authors, and Editors 2.2.1. The Title Statement 2.2.5. The Series Statement]
Modulecore — SPEAR Schema Customization
Attributes
typeclassifies the title according to some convenient typology.
Derived fromatt.typed
StatusOptional
Datatypeteidata.enumerated
Sample values include:
main
main title
sub
(subordinate) subtitle, title of part
alt
(alternate) alternate title, often in another language, by which the work is also known
short
abbreviated form of title
desc
(descriptive) descriptive paraphrase of the work functioning as a title
Note

This attribute is provided for convenience in analysing titles and processing them according to their type; where such specialized processing is not necessary, there is no need for such analysis, and the entire title, including subtitles and any parallel titles, may be enclosed within a single <title> element.

levelindicates the bibliographic level for a title, that is, whether it identifies an article, book, journal, series, or unpublished material.
StatusOptional
Datatypeteidata.enumerated
Legal values are:
a
(analytic) the title applies to an analytic item, such as an article, poem, or other work published as part of a larger item.
m
(monographic) the title applies to a monograph such as a book or other item considered to be a distinct publication, including single volumes of multi-volume works
j
(journal) the title applies to any serial or periodical publication such as a journal, magazine, or newspaper
s
(series) the title applies to a series of otherwise distinct publications such as a collection
u
(unpublished) the title applies to any unpublished material (including theses and dissertations unless published by a commercial press)
Note

The level of a title is sometimes implied by its context: for example, a title appearing directly within an <analytic> element is ipso facto of level ‘a’, and one appearing within a <series> element of level ‘s’. For this reason, the level attribute is not required in contexts where its value can be unambiguously inferred. Where it is supplied in such contexts, its value should not contradict the value implied by its parent element.

Member of
Contained by
May contain
Note

SPEAR uses the <title> element both to offer a title for the current document and to connect each SPEAR file to the Syriaca.org knowledge graph using a work URI. The subtitle for a SPEAR work is always "A SPEAR Prosopography."

Example
<titleStmt>  <title level="atype="main">John of Ephesus, <title ref="http://syriaca.org/work/816">John of Tella</title>, in <title>The Lives of the Eastern      Saints</title>  </title>  <title type="sub">A SPEAR Prosopography</title> ... </titleStmt>
Schematron
<sch:rule context="tei:title/@ref"> <sch:assert test="matches(., concat('http://syriaca.org/work/', '\d+'))"> The @ref attribute must take a Syriaca.org work URI which reqires the form 'http://syriaca.org/work/{\d+}' (where {\d+} is a number). </sch:assert> </sch:rule>
Content model
<content>
 <macroRef key="macro.paraContent"/>
</content>
    
Schema Declaration
element title
{
   att.global.attributes,
   att.canonical.attributes,
   att.cmc.attributes,
   att.datable.attributes,
   att.typed.attribute.subtype,
   attribute type { text }?,
   attribute level { "a" | "m" | "j" | "s" | "u" }?,
   macro.paraContent
}

2.1.73. <titleStmt>

<titleStmt> (title statement) groups information about the title of a work and those responsible for its content. [2.2.1. The Title Statement 2.2. The File Description]
Moduleheader — SPEAR Schema Customization
Attributes
Contained by
header: fileDesc
May contain
Note

Each <titleStmt> contains (in order) a <title>, an <sponsor>, a <funder> (optional), <editor>, and a <respStmt>.

Example
<titleStmt>  <title level="atype="main">John of Ephesus, <title ref="http://syriaca.org/work/793">Habib</title>, in <title>The Lives of the Eastern Saints</title>  </title>  <title type="sub">A SPEAR Prosopography</title>  <sponsor>Syriaca.org: The Syriac Reference Portal</sponsor>  <funder>The National Endowment for the Humanities</funder>  <funder>Texas A&amp;M University</funder>  <editor role="general"   ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>  <editor role="creator"   ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</editor>  <editor role="creator"   ref="http://syriaca.org/documentation/editors.xml#syoung">Samuel Young</editor>  <respStmt>   <resp>Data architecture, data entry, editing, proofreading, and revision      by</resp>   <name ref="http://syriaca.org/documentation/editors.xml#dschwartz">Daniel L. Schwartz</name>  </respStmt>  <respStmt>   <resp>Text analysis and data encoding by</resp>   <name ref="http://syriaca.org/documentation/editors.xml#syoung">Samuel Young</name>  </respStmt> </titleStmt>
Schematron
<sch:rule context="//tei:titleStmt/tei:title[1]"> <sch:assert test="@level='m' or @level='a'"> The first <title> element child of <titleStmt> must have @level attribute with a value of "m" indicating "monographic" or "a" indicating analytic. </sch:assert> <sch:assert test="@type='main'"> The first <title> element child of <titleStmt> must have @type attribute with a value of "main". </sch:assert> </sch:rule> <sch:rule context="//tei:titleStmt/tei:title[2]"> <sch:assert test="@type='sub'"> The second <title> element child of <titleStmt> must have @type attribute with a value of "sub". </sch:assert> <sch:assert test="normalize-space(.) = 'A SPEAR Prosopography'"> The text node of this subtitle must be "A SPEAR Prosopography". </sch:assert> </sch:rule>
Content model
<content>
 <sequence minOccurs="1" maxOccurs="1"
  preserveOrder="true">
  <elementRef key="title" minOccurs="2"
   maxOccurs="2"/>
  <elementRef key="sponsor" minOccurs="1"
   maxOccurs="unbounded"/>
  <elementRef key="funder" minOccurs="0"
   maxOccurs="unbounded"/>
  <elementRef key="editor" minOccurs="1"
   maxOccurs="unbounded"/>
  <elementRef key="respStmt" minOccurs="1"
   maxOccurs="unbounded"/>
 </sequence>
</content>
    
Schema Declaration
element titleStmt
{
   att.global.attributes,
   ( ( title, title ), sponsor+, funder*, editor+, respStmt+ )
}

2.1.74. <trait>

<trait> (trait) contains a description of some status or quality attributed to a person, place, or organization typically, but not necessarily, independent of the volition or action of the holder and usually not at some specific time or for a specific date range. [14.3.1. Basic Principles 14.3.2.1. Personal Characteristics]
Modulenamesdates — SPEAR Schema Customization
Attributes
ana
Derived fromatt.global.analytic
StatusRequired
Schematron
<sch:schema> <sch:ns uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  prefix="rdf"/> <sch:ns uri="http://www.w3.org/2004/02/skos/core#"  prefix="skos"/> <sch:pattern>  <sch:rule context="tei:trait[@type='gender']/@ana">   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="genders"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/gender']/skos:narrower/@rdf:resource"/>   <sch:assert test="every $i in (tokenize(., ' ')) satisfies $i = $genders"    role="warning"> Availabe values for gender are <sch:value-of select="string-join($genders, '; ')"/>. If one of      these does not apply, please use a descriptive term of your choosing.</sch:assert>  </sch:rule>  <sch:rule context="tei:trait[@type='ethnicLabel']/@ana">   <sch:let name="anaTokens"    value="tokenize(., ' ')"/>   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="ethnicLabels"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/ethnicities']/skos:narrower/@rdf:resource"/>   <sch:let name="errors"    value="for $i in $anaTokens return $i[not(. = $ethnicLabels)]"/>   <sch:assert test="every $i in $anaTokens satisfies $i = $ethnicLabels"    role="warning">    <sch:value-of select="string-join($errors, ', ')"/>: URI(s) not among the ethnic labels in the Taxonomy. If you find no appropriate concept on the following list,      please choose a keyword of your own for the editors to consider: <sch:value-of select="string-join($ethnicLabels, '; ')"/>.</sch:assert>  </sch:rule>  <sch:rule context="tei:trait[@type='physical']/@ana">   <sch:let name="anaTokens"    value="tokenize(., ' ')"/>   <sch:let name="taxonomy"    value="doc('https://raw.githubusercontent.com/srophe/syriaca-data/refs/heads/gaddel_development/data/taxonomy/taxonomy.rdf')"/>   <sch:let name="physicalTraits"    value="$taxonomy//rdf:Description[@rdf:about='http://syriaca.org/taxonomy/physical-traits']/skos:narrower/@rdf:resource"/>   <sch:let name="errors"    value="for $i in $anaTokens return $i[not(. = $physicalTraits)]"/>   <sch:assert test="every $i in $anaTokens satisfies $i = $physicalTraits"    role="warning">    <sch:value-of select="string-join($errors, '; ')"/>: URI(s) not among the physical descriptions in the Taxonomy. If you find no appropriate concept on the following list,      please choose a keyword of your own for the editors to consider: <sch:value-of select="string-join($physicalTraits, '; ')"/>.   </sch:assert>  </sch:rule> </sch:pattern> </sch:schema>
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
type
StatusRequired
Datatypeteidata.enumerated
Legal values are:
physical
used for references to a person's physical characteristics, such as hair color, height, weight, physical disabilities, etc.
gender
used for references to a person's gender identity (as opposed to their biological sex which SPEAR does not presume to capture).
ethnicLabel
used for references to an ethnic label claimed by a person or ascribed to a person; such as "Goth," "Saracen," etc.
Contained by
namesdates: person personGrp
May contain
core: note
Note

This customization restricts the attribute classes of <trait> to att.datable.w3c and att.global.analytic. If more precise dating is required for a SPEAR factoid, the encoder should use the <date> element.

It only allows <note> as a child element. It restricts the required @type attribute to the values "physical", "gender", and "ethnicLabel". It restricts the required @ana attribute to keyword URIs in the Syriac Taxonomy that pertain to each of these three types.

Example
<ab type="factoidsubtype="gender"  xml:id="factoid-18resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-18</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3192"/>    <trait type="gender"     ana="http://syriaca.org/taxonomy/men">     <note type="desc">      <persName ref="http://syriaca.org/person/3192">Mar Afwrsm</persName> was male.     </note>    </trait>   </person>  </listPerson> ... </ab> ... <ab type="factoidsubtype="ethnicLabel"  xml:id="factoid-23resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-23</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3218"/>    <trait type="ethnicLabel"     ana="http://syriaca.org/taxonomy/syriacs">     <note type="desc">      <persName ref="http://syriaca.org/person/3218">John Urtaya</persName> was Syrian.     </note>    </trait>   </person>  </listPerson> ... </ab>
Content model
<content>
 <elementRef key="note" minOccurs="1"
  maxOccurs="1"/>
</content>
    
Schema Declaration
element trait
{
   att.datable.w3c.attributes,
   attribute ana { list { + } },
   attribute type { "physical" | "gender" | "ethnicLabel" },
   note
}

2.2. Model classes

2.2.1. model.attributable

model.attributable groups elements that contain a word or phrase that can be attributed to a source. [3.3.3. Quotation 4.3.2. Floating Texts]
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.quoteLike

2.2.2. model.availabilityPart

model.availabilityPart groups elements such as licences and paragraphs of text which may appear as part of an availability statement. [2.2.4. Publication, Distribution, Licensing, etc.]
Moduletei — SPEAR Schema Customization
Used by
Memberslicence

2.2.3. model.biblLike

model.biblLike groups elements containing a bibliographic description. [3.12. Bibliographic Citations and References]
Moduletei — SPEAR Schema Customization
Used by
Membersbibl listBibl

2.2.4. model.choicePart

model.choicePart groups elements (other than <choice> itself) which can be used within a <choice> alternation. [3.5. Simple Editorial Changes]
Moduletei — SPEAR Schema Customization
Used by
Memberscorr orig reg sic

2.2.5. model.dateLike

model.dateLike groups elements containing temporal expressions. [3.6.4. Dates and Times 14.4. Dates]
Moduletei — SPEAR Schema Customization
Used by
Membersdate

2.2.6. model.divPart

model.divPart groups paragraph-level elements appearing directly within divisions. [1.3. The TEI Class System]
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.lLike model.pLike[p]
Note

Note that this element class does not include members of the model.inter class, which can appear either within or between paragraph-level items.

2.2.7. model.emphLike

model.emphLike groups phrase-level elements which are typographically distinct and to which a specific function can be attributed. [3.3. Highlighting and Quotation]
Moduletei — SPEAR Schema Customization
Used by
Memberstitle

2.2.8. model.global

model.global groups elements which may appear at any point within a TEI text. [1.3. The TEI Class System]
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.global.edit model.global.meta model.milestoneLike model.noteLike[note]

2.2.9. model.highlighted

model.highlighted groups phrase-level elements which are typographically distinct. [3.3. Highlighting and Quotation]
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.emphLike[title] model.hiLike

2.2.10. model.inter

model.inter groups elements which can appear either within or between paragraph-like elements. [1.3. The TEI Class System]
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.attributable[model.quoteLike] model.biblLike[bibl listBibl] model.egLike model.labelLike model.listLike[listRelation] model.oddDecl model.stageLike

2.2.11. model.limitedPhrase

model.limitedPhrase groups phrase-level elements excluding those elements primarily intended for transcription of existing sources. [1.3. The TEI Class System]
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.emphLike[title] model.hiLike model.pPart.data[model.addressLike model.dateLike[date] model.measureLike[num] model.nameLike[model.nameLike.agent[name orgName persName] model.offsetLike model.persNamePart model.placeStateLike[model.placeNamePart[placeName]] rs]] model.pPart.editorial[choice] model.pPart.msdesc model.phrase.xml model.ptrLike[ptr ref]

2.2.12. model.listLike

model.listLike groups list-like elements. [3.8. Lists]
Moduletei — SPEAR Schema Customization
Used by
MemberslistRelation

2.2.13. model.measureLike

model.measureLike groups elements which denote a number, a quantity, a measurement, or similar piece of text that conveys some numerical meaning. [3.6.3. Numbers and Measures]
Moduletei — SPEAR Schema Customization
Used by
Membersnum

2.2.14. model.nameLike

model.nameLike groups elements which name or refer to a person, place, or organization.
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.nameLike.agent[name orgName persName] model.offsetLike model.persNamePart model.placeStateLike[model.placeNamePart[placeName]] rs
Note

A superset of the naming elements that may appear in datelines, addresses, statements of responsibility, etc.

2.2.15. model.nameLike.agent

model.nameLike.agent groups elements which contain names of individuals or corporate bodies. [3.6. Names, Numbers, Dates, Abbreviations, and Addresses]
Moduletei — SPEAR Schema Customization
Used by
Membersname orgName persName
Note

This class is used in the content model of elements which reference names of people or organizations.

2.2.16. model.noteLike

model.noteLike groups globally-available note-like elements. [3.9. Notes, Annotation, and Indexing]
Moduletei — SPEAR Schema Customization
Used by
Membersnote

2.2.17. model.pLike

model.pLike groups paragraph-like elements.
Moduletei — SPEAR Schema Customization
Used by
Membersp

2.2.18. model.pPart.data

model.pPart.data groups phrase-level elements containing names, dates, numbers, measures, and similar data. [3.6. Names, Numbers, Dates, Abbreviations, and Addresses]
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.addressLike model.dateLike[date] model.measureLike[num] model.nameLike[model.nameLike.agent[name orgName persName] model.offsetLike model.persNamePart model.placeStateLike[model.placeNamePart[placeName]] rs]

2.2.19. model.pPart.edit

model.pPart.edit groups phrase-level elements for simple editorial correction and transcription. [3.5. Simple Editorial Changes]
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.pPart.editorial[choice] model.pPart.transcriptional[corr orig reg sic]

2.2.20. model.pPart.editorial

model.pPart.editorial groups phrase-level elements for simple editorial interventions that may be useful both in transcribing and in authoring. [3.5. Simple Editorial Changes]
Moduletei — SPEAR Schema Customization
Used by
Memberschoice

2.2.21. model.pPart.transcriptional

model.pPart.transcriptional groups phrase-level elements used for editorial transcription of pre-existing source materials. [3.5. Simple Editorial Changes]
Moduletei — SPEAR Schema Customization
Used by
Memberscorr orig reg sic

2.2.22. model.paraPart

model.paraPart groups elements that may appear in paragraphs and similar elements. [3.1. Paragraphs]
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.gLike model.global[model.global.edit model.global.meta model.milestoneLike model.noteLike[note]] model.inter[model.attributable[model.quoteLike] model.biblLike[bibl listBibl] model.egLike model.labelLike model.listLike[listRelation] model.oddDecl model.stageLike] model.lLike model.phrase[model.graphicLike model.highlighted[model.emphLike[title] model.hiLike] model.lPart model.pPart.data[model.addressLike model.dateLike[date] model.measureLike[num] model.nameLike[model.nameLike.agent[name orgName persName] model.offsetLike model.persNamePart model.placeStateLike[model.placeNamePart[placeName]] rs]] model.pPart.edit[model.pPart.editorial[choice] model.pPart.transcriptional[corr orig reg sic]] model.pPart.msdesc model.phrase.xml model.ptrLike[ptr ref] model.segLike model.specDescLike]

2.2.23. model.phrase

model.phrase groups elements which can occur at the level of individual words or phrases. [1.3. The TEI Class System]
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.graphicLike model.highlighted[model.emphLike[title] model.hiLike] model.lPart model.pPart.data[model.addressLike model.dateLike[date] model.measureLike[num] model.nameLike[model.nameLike.agent[name orgName persName] model.offsetLike model.persNamePart model.placeStateLike[model.placeNamePart[placeName]] rs]] model.pPart.edit[model.pPart.editorial[choice] model.pPart.transcriptional[corr orig reg sic]] model.pPart.msdesc model.phrase.xml model.ptrLike[ptr ref] model.segLike model.specDescLike
Note

This class of elements can occur within paragraphs, list items, lines of verse, etc.

2.2.24. model.placeNamePart

model.placeNamePart groups elements which form part of a place name. [14.2.3. Place Names]
Moduletei — SPEAR Schema Customization
Used by
MembersplaceName

2.2.25. model.placeStateLike

model.placeStateLike groups elements which describe changing states of a place.
Moduletei — SPEAR Schema Customization
Used by
Membersmodel.placeNamePart[placeName]

2.2.26. model.ptrLike

model.ptrLike groups elements used for purposes of location and reference. [3.7. Simple Links and Cross-References]
Moduletei — SPEAR Schema Customization
Used by
Membersptr ref

2.2.27. model.resource

model.resource groups separate elements which constitute the content of a digital resource, as opposed to its metadata. [1.3. The TEI Class System]
Moduletei — SPEAR Schema Customization
Used by
Memberstext

2.3. Attribute classes

2.3.1. att.ascribed

att.ascribed provides attributes for elements representing speech or action that can be ascribed to a specific individual. [3.3.3. Quotation 8.3. Elements Unique to Spoken Texts]
Moduletei — SPEAR Schema Customization
Memberschange
Attributes
whoindicates the person, or group of people, to whom the element content is ascribed.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
In the following example from Hamlet, speeches (<sp>) in the body of the play are linked to <role> elements in the <castList> using the who attribute.
<castItem type="role">  <role xml:id="Barnardo">Bernardo</role> </castItem> <castItem type="role">  <role xml:id="Francisco">Francisco</role>  <roleDesc>a soldier</roleDesc> </castItem> <!-- ... --> <sp who="#Barnardo">  <speaker>Bernardo</speaker>  <l n="1">Who's there?</l> </sp> <sp who="#Francisco">  <speaker>Francisco</speaker>  <l n="2">Nay, answer me: stand, and unfold yourself.</l> </sp>
Note

For transcribed speech, this will typically identify a participant or participant group; in other contexts, it will point to any identified <person> element.

2.3.2. att.cReferencing

att.cReferencing provides attributes that may be used to supply a canonical reference as a means of identifying the target of a pointer.
Moduletei — SPEAR Schema Customization
Membersref
Attributes
cRef(canonical reference) specifies the destination of the pointer by supplying a canonical reference expressed using the scheme defined in a <refsDecl> element in the TEI header.
StatusOptional
Datatypeteidata.text
Note

The value of cRef should be constructed so that when the algorithm for the resolution of canonical references (described in section 17.2.5. Canonical References) is applied to it the result is a valid URI reference to the intended target.

The <refsDecl> to use may be indicated with the decls attribute.

Currently these Guidelines only provide for a single canonical reference to be encoded on any given <ptr> element.

2.3.3. att.canonical

att.canonical provides attributes that can be used to associate a representation such as a name or title with canonical information about the object being named or referenced. [14.1.1. Linking Names and Their Referents]
Moduletei — SPEAR Schema Customization
Membersatt.naming[att.personal[name orgName] author event pubPlace rs] authority bibl catDesc funder publisher relation resp respStmt sponsor title
Attributes
keyprovides an externally-defined means of identifying the entity (or entities) being named, using a coded value of some kind.
StatusOptional
Datatypeteidata.text
<author>  <name key="Hugo, Victor (1802-1885)"   ref="http://www.idref.fr/026927608">Victor Hugo</name> </author>
Note

The value may be a unique identifier from a database, or any other externally-defined string identifying the referent. No particular syntax is proposed for the values of the key attribute, since its form will depend entirely on practice within a given project.

ref(reference) provides an explicit means of locating a full definition or identity for the entity being named by means of one or more URIs.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
<name ref="http://viaf.org/viaf/109557338"  type="person">Seamus Heaney</name>
Note

The value must point directly to one or more XML elements or other resources by means of one or more URIs, separated by whitespace. If more than one is supplied the implication is that the name identifies several distinct entities.

ExampleIn this contrived example, a canonical reference to the same organisation is provided in four different ways.
<author n="1">  <name ref="http://nzetc.victoria.ac.nz/tm/scholarly/name-427308.html"   type="organisation">New Zealand Parliament, Legislative Council</name> </author>   <author n="2">  <name ref="nzvn:427308"   type="organisation">New Zealand Parliament, Legislative Council</name> </author>   <author n="3">  <name ref="./named_entities.xml#o427308"   type="organisation">New Zealand Parliament, Legislative Council</name> </author>   <author n="4">  <name key="name-427308"   type="organisation">New Zealand Parliament, Legislative Council</name> </author>
The first presumes the availability of an internet connection and a processor that can resolve a URI (most can). The second requires, in addition, a <prefixDef> that declares how the nzvm prefix should be interpreted. The third does not require an internet connection, but does require that a file named named_entities.xml be in the same directory as the TEI document. The fourth requires that an entire external system for key resolution be available.
Note

The key attribute is more flexible and general-purpose, but its use in interchange requires that documentation about how the key is to be resolved be sent to the recipient of the TEI document. In contrast values of the ref attribute are resolved using the widely accepted protocols for a URI, and thus less documentation, if any, is likely required by the recipient in data interchange.

These guidelines provide no semantic basis or suggested precedence when both key and ref are provided. For this reason simultaneous use of both is not recommended unless documentation explaining the use is provided, probably in an ODD customizaiton, for interchange.

2.3.4. att.cmc

att.cmc (computer-mediated communication) provides attributes categorizing how the element content was created in a CMC environment.
Moduletei — SPEAR Schema Customization
Membersbibl head listBibl listRelation name note num orgName p ref rs title
Attributes
generatedBy(generated by) categorizes how the content of an element was generated in a CMC environment.
StatusOptional
Datatypeteidata.enumerated
Schematron
<sch:rule context="tei:*[@generatedBy]"> <sch:assert test="ancestor-or-self::tei:post">The @generatedBy attribute is for use within a <post> element.</sch:assert> </sch:rule>
Suggested values include:
human
the content was ‘naturally’ typed or spoken by a human user
template
the content was generated after a human user activated a template for its insertion
system
the content was generated by the system, i.e. the CMC environment
bot
the content was generated by a bot, i.e. a non-human agent, typically one that is not part of the CMC environment itself
unspecified
the content was generated by an unknown or unspecified process
automatic system message in chat: user moves on to another chatroom
<post type="event"  generatedBy="system"  who="#system"  rend="color:blue">  <p>   <name type="nickname"    corresp="#A02">McMike</name> geht    in einen anderen Raum: <name type="roomname">Kreuzfahrt</name>  </p> </post>
automatic system message in chat: user enters a chatroom
<post type="event"  generatedBy="system">  <p>   <name type="nickname"    corresp="#A08">c_bo</name> betritt    den Raum. </p> </post>
automatic system message in chat: user changes his font color
<post type="event"  generatedBy="system"  rend="color:red">  <p>   <name type="nickname"    corresp="#A08">c_bo</name> hat die    Farbe gewechselt.  </p> </post>
An automatic signature of user including an automatic timestamp (Wikipedia discussion, anonymized). The specification of generatedBy at the inner element <signed> is meant to override the specification at the outer element <post>. This is generally possible when the outer generatedBy value is "human".
<post type="standard"  generatedBy="human"  indentLevel="2"  synch="#t00394407"  who="#WU00005582">  <p> Kurze Nachfrage: Die Hieros für den Goldnamen stammen    auch von Beckerath gem. Literatur ? Grüße —</p>  <signed generatedBy="template"   rend="inline">   <gap reason="signatureContent"/>   <time generatedBy="template">18:50, 22. Okt. 2008 (CEST)</time>  </signed> </post>
Wikipedia talk page: user signature
<post type="written"  generatedBy="human"> <!-- ... main content of posting ... -->  <signed generatedBy="template">   <gap reason="signatureContent"/>   <time generatedBy="template">12:01, 12. Jun. 2009 (CEST)</time>  </signed> </post>

2.3.5. att.datable

att.datable provides attributes for normalization of elements that contain dates, times, or datable events. [3.6.4. Dates and Times 14.4. Dates]
Moduletei — SPEAR Schema Customization
Membersauthor change event funder langKnown licence name orgName relation resp sponsor title
Attributes
periodsupplies pointers to one or more definitions of named periods of time (typically <category>s, <date>s, or <event>s) within which the datable item is understood to have occurred.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
Note

This ‘superclass’ provides attributes that can be used to provide normalized values of temporal information. By default, the attributes from the att.datable.w3c class are provided. If the module for names & dates is loaded, this class also provides attributes from the att.datable.iso and att.datable.custom classes. In general, the possible values of attributes restricted to the W3C datatypes form a subset of those values available via the ISO 8601 standard. However, the greater expressiveness of the ISO datatypes may not be needed, and there exists much greater software support for the W3C datatypes.

2.3.6. att.datable.custom

att.datable.custom provides attributes for normalization of elements that contain datable events to a custom dating system (i.e. other than the Gregorian used by W3 and ISO). [14.4. Dates]
Modulenamesdates — SPEAR Schema Customization
Membersatt.datable[author change event funder langKnown licence name orgName relation resp sponsor title] date residence
Attributes
when-customsupplies the value of a date or time in some custom standard form.
StatusOptional
Datatype1–∞ occurrences of teidata.word separated by whitespace
The following are examples of custom date or time formats that are not valid ISO or W3C format normalizations, normalized to a different dating system
<p>Alhazen died in Cairo on the <date when="1040-03-06"   when-custom="431-06-12"> 12th day of Jumada t-Tania, 430 AH  </date>.</p> <p>The current world will end at the <date when="2012-12-21"   when-custom="13.0.0.0.0">end of B'ak'tun 13</date>.</p> <p>The Battle of Meggidu (<date when-custom="Thutmose_III:23">23rd year of reign of Thutmose III</date>).</p> <p>Esidorus bixit in pace annos LXX plus minus sub <date when-custom="Ind:4-10-11">die XI mensis Octobris indictione IIII</date> </p>
Not all custom date formulations will have Gregorian equivalents.The when-custom attribute and other custom dating are not constrained to a datatype by the TEI, but individual projects are recommended to regularize and document their dating formats.
notBefore-customspecifies the earliest possible date for the event in some custom standard form.
StatusOptional
Datatype1–∞ occurrences of teidata.word separated by whitespace
notAfter-customspecifies the latest possible date for the event in some custom standard form.
StatusOptional
Datatype1–∞ occurrences of teidata.word separated by whitespace
from-customindicates the starting point of the period in some custom standard form.
StatusOptional
Datatype1–∞ occurrences of teidata.word separated by whitespace
<event xml:id="FIRE1"  datingMethod="#julian"  from-custom="1666-09-02"  to-custom="1666-09-05">  <head>The Great Fire of London</head>  <p>The Great Fire of London burned through a large part    of the city of London.</p> </event>
to-customindicates the ending point of the period in some custom standard form.
StatusOptional
Datatype1–∞ occurrences of teidata.word separated by whitespace
datingPointsupplies a pointer to some location defining a named point in time with reference to which the datable item is understood to have occurred.
StatusOptional
Datatypeteidata.pointer
datingMethodsupplies a pointer to a <calendar> element or other means of interpreting the values of the custom dating attributes.
StatusOptional
Datatypeteidata.pointer
Contayning the Originall, Antiquity, Increaſe, Moderne eſtate, and deſcription of that Citie, written in the yeare <date when-custom="1598"  calendar="#julian"  datingMethod="#julian">1598</date>. by Iohn Stow Citizen of London.
In this example, the calendar attribute points to a <calendar> element for the Julian calendar, specifying that the text content of the <date> element is a Julian date, and the datingMethod attribute also points to the Julian calendar to indicate that the content of the when-custom attribute value is Julian too.
<date when="1382-06-28"  when-custom="6890-06-20"  datingMethod="#creationOfWorld"> μηνὶ Ἰουνίου εἰς <num>κ</num> ἔτους <num>ςωϞ</num> </date>
In this example, a date is given in a Mediaeval text measured ‘from the creation of the world’, which is normalized (in when) to the Gregorian date, but is also normalized (in when-custom) to a machine-actionable, numeric version of the date from the Creation.
Note

Note that the datingMethod attribute (unlike calendar defined in att.datable) defines the calendar or dating system to which the date described by the parent element is normalized (i.e. in the when-custom or other X-custom attributes), not the calendar of the original date in the element.

2.3.7. att.datable.iso

att.datable.iso provides attributes for normalization of elements that contain datable events using the ISO 8601:2004 standard. [3.6.4. Dates and Times 14.4. Dates]
Modulenamesdates — SPEAR Schema Customization
Membersatt.datable[author change event funder langKnown licence name orgName relation resp sponsor title]
Attributes
when-isosupplies the value of a date or time in a standard form.
StatusOptional
Datatypeteidata.temporal.iso
The following are examples of ISO date, time, and date & time formats that are not valid W3C format normalizations.
<date when-iso="1996-09-24T07:25+00">Sept. 24th, 1996 at 3:25 in the morning</date> <date when-iso="1996-09-24T03:25-04">Sept. 24th, 1996 at 3:25 in the morning</date> <time when-iso="1999-01-04T20:42-05">4 Jan 1999 at 8:42 pm</time> <time when-iso="1999-W01-1T20,70-05">4 Jan 1999 at 8:42 pm</time> <date when-iso="2006-05-18T10:03">a few minutes after ten in the morning on Thu 18 May</date> <time when-iso="03:00">3 A.M.</time> <time when-iso="14">around two</time> <time when-iso="15,5">half past three</time>
All of the examples of the when attribute in the att.datable.w3c class are also valid with respect to this attribute.
He likes to be punctual. I said <q>  <time when-iso="12">around noon</time> </q>, and he showed up at <time when-iso="12:00:00">12 O'clock</time> on the dot.
The second occurence of <time> could have been encoded with the when attribute, as 12:00:00 is a valid time with respect to the W3C XML Schema Part 2: Datatypes Second Edition specification. The first occurence could not.
notBefore-isospecifies the earliest possible date for the event in standard form, e.g. yyyy-mm-dd.
StatusOptional
Datatypeteidata.temporal.iso
notAfter-isospecifies the latest possible date for the event in standard form, e.g. yyyy-mm-dd.
StatusOptional
Datatypeteidata.temporal.iso
from-isoindicates the starting point of the period in standard form.
StatusOptional
Datatypeteidata.temporal.iso
to-isoindicates the ending point of the period in standard form.
StatusOptional
Datatypeteidata.temporal.iso
Note

The value of these attributes should be a normalized representation of the date, time, or combined date & time intended, in any of the standard formats specified by ISO 8601:2004, using the Gregorian calendar.

If both when-iso and dur-iso are specified, the values should be interpreted as indicating a span of time by its starting time (or date) and duration. That is,
<date when-iso="2007-06-01dur-iso="P8D"/>
indicates the same time period as
<date when-iso="2007-06-01/P8D"/>

In providing a ‘regularized’ form, no claim is made that the form in the source text is incorrect; the regularized form is simply that chosen as the main form for purposes of unifying variant forms under a single heading.

2.3.8. att.datable.w3c

att.datable.w3c provides attributes for normalization of elements that contain datable events conforming to the W3C XML Schema Part 2: Datatypes Second Edition. [3.6.4. Dates and Times 14.4. Dates]
Moduletei — SPEAR Schema Customization
Membersatt.datable[author change event funder langKnown licence name orgName relation resp sponsor title] birth date death education occupation persName residence socecStatus state trait
Attributes
whensupplies the value of the date or time in a standard form, e.g. yyyy-mm-dd.
StatusOptional
Datatypeteidata.temporal.w3c
Examples of W3C date, time, and date & time formats.
<p>  <date when="1945-10-24">24 Oct 45</date>  <date when="1996-09-24T07:25:00Z">September 24th, 1996 at 3:25 in the morning</date>  <time when="1999-01-04T20:42:00-05:00">Jan 4 1999 at 8 pm</time>  <time when="14:12:38">fourteen twelve and 38 seconds</time>  <date when="1962-10">October of 1962</date>  <date when="--06-12">June 12th</date>  <date when="---01">the first of the month</date>  <date when="--08">August</date>  <date when="2006">MMVI</date>  <date when="0056">AD 56</date>  <date when="-0056">56 BC</date> </p>
This list begins in the year 1632, more precisely on Trinity Sunday, i.e. the Sunday after Pentecost, in that year the <date calendar="#julian"  when="1632-06-06">27th of May (old style)</date>.
<opener>  <dateline>   <placeName>Dorchester, Village,</placeName>   <date when="1828-03-02">March 2d. 1828.</date>  </dateline>  <salute>To    Mrs. Cornell,</salute> Sunday <time when="12:00:00">noon.</time> </opener>
notBeforespecifies the earliest possible date for the event in standard form, e.g. yyyy-mm-dd.
StatusOptional
Datatypeteidata.temporal.w3c
notAfterspecifies the latest possible date for the event in standard form, e.g. yyyy-mm-dd.
StatusOptional
Datatypeteidata.temporal.w3c
fromindicates the starting point of the period in standard form, e.g. yyyy-mm-dd.
StatusOptional
Datatypeteidata.temporal.w3c
toindicates the ending point of the period in standard form, e.g. yyyy-mm-dd.
StatusOptional
Datatypeteidata.temporal.w3c
Schematron
<sch:rule context="tei:*[@when]"> <sch:report test="@notBefore|@notAfter|@from|@to"  role="nonfatal">The @when attribute cannot be used with any other att.datable.w3c attributes.</sch:report> </sch:rule>
Schematron
<sch:rule context="tei:*[@from]"> <sch:report test="@notBefore"  role="nonfatal">The @from and @notBefore attributes cannot be used together.</sch:report> </sch:rule>
Schematron
<sch:rule context="tei:*[@to]"> <sch:report test="@notAfter"  role="nonfatal">The @to and @notAfter attributes cannot be used together.</sch:report> </sch:rule>
Example
<date from="1863-05-28to="1863-06-01">28 May through 1 June 1863</date>
Note

The value of these attributes should be a normalized representation of the date, time, or combined date & time intended, in any of the standard formats specified by XML Schema Part 2: Datatypes Second Edition, using the Gregorian calendar.

The most commonly-encountered format for the date portion of a temporal attribute is yyyy-mm-dd, but yyyy, --mm, ---dd, yyyy-mm, or --mm-dd may also be used. For the time part, the form hh:mm:ss is used.

Note that this format does not currently permit use of the value 0000 to represent the year 1 BCE; instead the value -0001 should be used.

2.3.9. att.datcat

att.datcat provides attributes that are used to align XML elements or attributes with the appropriate Data Categories (DCs) defined by an external taxonomy, in this way establishing the identity of information containers and values, and providing means of interpreting them. [10.5.2. Lexical View 19.3. Other Atomic Feature Values]
Moduletei — SPEAR Schema Customization
Memberscategory taxonomy
Attributes
datcatprovides a pointer to a definition of, and/or general information about, (a) an information container (element or attribute) or (b) a value of an information container (element content or attribute value), by referencing an external taxonomy or ontology. If valueDatcat is present in the immediate context, this attribute takes on role (a), while valueDatcat performs role (b).
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
valueDatcatprovides a definition of, and/or general information about a value of an information container (element content or attribute value), by reference to an external taxonomy or ontology. Used especially where a contrast with datcat is needed.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
targetDatcatprovides a definition of, and/or general information about, information structure of an object referenced or modeled by the containing element, by reference to an external taxonomy or ontology. This attribute has the characteristics of the datcat attribute, except that it addresses not its containing element, but an object that is being referenced or modeled by its containing element.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
ExampleThe example below presents the TEI encoding of the name-value pair <part of speech, common noun>, where the name (key) ‘part of speech’ is abbreviated as ‘POS’, and the value, ‘common noun’ is symbolized by ‘NN’. The entire name-value pair is encoded by means of the element <f>. In TEI XML, that element acts as the container, labeled with the name attribute. Its contents may be complex or simple. In the case at hand, the content is the symbol ‘NN’.The datcat attribute relates the feature name (i.e., the key) to the data category ‘part of speech’, while the attribute valueDatcat relates the feature value to the data category common noun. Both these data categories should be defined in an external and preferably open reference taxonomy or ontology.
<fs>  <f name="POS"   datcat="http://hdl.handle.net/11459/CCR_C-396_5a972b93-2294-ab5c-a541-7c344c5f26c3">   <symbol valueDatcat="http://hdl.handle.net/11459/CCR_C-1256_7ec6083c-23d4-224d-6f94-eecbe6861545"    value="NN"/>  </f> <!-- ... --> </fs>
‘NN’ is the symbol for common noun used e.g. in the CLAWS-7 tagset defined by the University Centre for Computer Corpus Research on Language at the University of Lancaster. The very same data category used for tagging an early version of the British National Corpus, and coming from the BNC Basic (C5) tagset, uses the symbol ‘NN0’ (rather than ‘NN’). Making these values semantically interoperable would be extremely difficult without a human expert if they were not anchored in a single point of an established reference taxonomy of morphosyntactic data categories. In the case at hand, the string http://hdl.handle.net/11459/CCR_C-1256_7ec6083c-23d4-224d-6f94-eecbe6861545 is both a persistent identifier of the data category in question, as well as a pointer to a shared definition of common noun.While the symbols ‘NN’, ‘NN0’, and many others (often coming from languages other than English) are implicitly members of the container category ‘part of speech’, it is sometimes useful not to rely on such an implicit relationship but rather use an explicit identifier for that data category, to distinguish it from other morphosyntactic data categories, such as gender, tense, etc. For that purpose, the above example uses the datcat attribute to reference a definition of part of speech. The reference taxonomy in this example is the CLARIN Concept Registry.If the feature structure markup exemplified above is to be repeated many times in a single document, it is much more efficient to gather the persistent identifiers in a single place and to only reference them, implicitly or directly, from feature structure markup. The following example is much more concise than the one above and relies on the concepts of feature structure declaration and feature value library, discussed in chapter [[undefined FS]].
<fs>  <f name="POSfVal="#commonNoun"/> <!-- ... --> </fs>
The assumption here is that the relevant feature values are collected in a place that the annotation document in question has access to — preferably, a single document per linguistic resource, for example an <fsdDecl> that is XIncluded as a sibling of <text> or a child of <encodingDesc>; a <taxonomy> available resource-wide (e.g., in a shared header) is also an option.The example below presents an <fvLib> element that collects the relevant feature values (most of them omitted). At the same time, this example shows one way of encoding a tagset, i.e., an established inventory of values of (in the case at hand) morphosyntactic categories.
<fvLib n="POS values">  <symbol xml:id="commonNounvalue="NN"   datcat="http://hdl.handle.net/11459/CCR_C-396_5a972b93-2294-ab5c-a541-7c344c5f26c3"/>  <symbol xml:id="properNounvalue="NP"   datcat="http://hdl.handle.net/11459/CCR_C-1371_fbebd9ec-a7f4-9a36-d6e9-88ee16b944ae"/> <!-- ... --> </fvLib>
Note that these Guidelines do not prescribe a specific choice between datcat and valueDatcat in such cases. The former is the generic way of referencing a data category, whereas the latter is more specific, in that it references a data category that represents a value. The choice between them comes into play where a single element — or a tight element complex, such as the <f>/<symbol> complex illustrated above — make it necessary or useful to distinguish between the container data category and its value.
ExampleIn the context of dictionaries designed with semantic interoperability in mind, the following example ensures that the <pos> element is interpreted as the same information container as in the case of the example of <f name="POS"> above.
<gramGrp>  <pos datcat="http://hdl.handle.net/11459/CCR_C-396_5a972b93-2294-ab5c-a541-7c344c5f26c3"   valueDatcat="http://hdl.handle.net/11459/CCR_C-1256_7ec6083c-23d4-224d-6f94-eecbe6861545">NN</pos> </gramGrp>
Efficiency of this type of interoperable markup demands that the references to the particular data categories should best be provided in a single place within the dictionary (or a single place within the project), rather than being repeated inside every entry. For the container elements, this can be achieved at the level of <tagUsage>, although here, the valueDatcat attribute should be used, because it is not the <tagUsage> element that is associated with the relevant data category, but rather the element <pos> (or <case>, etc.) that is described by <tagUsage>:
<tagsDecl partial="true"> <!-- ... -->  <namespace name="http://www.tei-c.org/ns/1.0">   <tagUsage gi="pos"    targetDatcat="http://hdl.handle.net/11459/CCR_C-396_5a972b93-2294-ab5c-a541-7c344c5f26c3">Contains the part of speech.</tagUsage>   <tagUsage gi="case"    targetDatcat="http://hdl.handle.net/11459/CCR_C-1840_9f4e319c-f233-6c90-9117-7270e215f039">Contains information about the grammatical case that the described form is inflected for.</tagUsage> <!-- ... -->  </namespace> </tagsDecl>
Another possibility is to shorten the URIs by means of the <prefixDef> mechanism, as illustrated below:
<listPrefixDef>  <prefixDef ident="ccrmatchPattern="pos"   replacementPattern="http://hdl.handle.net/11459/CCR_C-396_5a972b93-2294-ab5c-a541-7c344c5f26c3"/>  <prefixDef ident="ccrmatchPattern="adj"   replacementPattern="http://hdl.handle.net/11459/CCR_C-1230_23653c21-fca1-edf8-fd7c-3df2d6499157"/> </listPrefixDef> <!-- ... --> <entry> <!--...-->  <form>   <orth>isotope</orth>  </form>  <gramGrp>   <pos datcat="ccr:pos"    valueDatcat="ccr:adj">adj</pos>  </gramGrp> <!--...--> </entry>
This mechanism creates implications that are not always wanted, among others, in the case at hand, suggesting that the identifiers ‘pos’ and ‘adj’ belong to a namespace associated with the CLARIN Concept Repository (CCR), whereas that is solely a shorthand mechanism whose scope is the current resource. Documenting this clearly in the header of the dictionary is therefore advised.Yet another possibility is to associate the information about the relationship between a TEI markup element and the data category that it is intended to model already at the level of modeling the dictionary resource, that is, at the level of the ODD, in the <equiv> element that is a child of <elementSpec> or <attDef>.
ExampleThe <taxonomy> element is a handy tool for encoding taxonomies that are later referenced by att.datcat attributes, but it can also act as an intermediary device, for example holding a fragment of an external taxonomy (or ‘flattening’ an external ontology) that is relevant to the project or document at hand. (It is also imaginable that, for the purpose of the project at hand, the local <taxonomy> element combines vocabularies that originate from more than one external taxonomy or ontology.) In such cases, the <taxonomy> creates a local layer of indirection: the att.datcat attributes internal to the resource may reference the <category> elements stored in the header (as well as the <taxonomy> element itself), whereas these same <category> and <taxonomy> elements use att.datcat attributes to reference the original taxonomy or ontology.
<encodingDesc> <!-- ... -->  <classDecl> <!-- ... -->   <taxonomy xml:id="UD-SYN"    datcat="https://universaldependencies.org/u/dep/index.html">    <desc>     <term>UD syntactic relations</term>    </desc>    <category xml:id="acl"     valueDatcat="https://universaldependencies.org/u/dep/acl.html">     <catDesc>      <term>acl</term>: Clausal modifier of noun (adjectival clause)</catDesc>    </category>    <category xml:id="acl_relcl"     valueDatcat="https://universaldependencies.org/u/dep/acl-relcl.html">     <catDesc>      <term>acl:relcl</term>: relative clause modifier</catDesc>    </category>    <category xml:id="advcl"     valueDatcat="https://universaldependencies.org/u/dep/advcl.html">     <catDesc>      <term>advcl</term>: Adverbial clause modifier</catDesc>    </category> <!-- ... -->   </taxonomy>  </classDecl> </encodingDesc>
The above fragment was excerpted from the GB subset of the ParlaMint project in April 2023, and enriched with att.datcat attributes for the purpose of illustrating the mechanism described here.Note that, in the ideal case, the values of att.datcat attributes should be persistent identifiers, and that the addressing scheme of Universal Dependencies is treated here as persistent for the sake of illustration. Note also that the contrast between datcat used on <taxonomy> on the one hand, and the valueDatcat used on <category> on the other, is not mandatory: both kinds of relations could be encoded by means of the generic datcat attribute, but using the former for the container and the latter for the content is more user-friendly.
ExampleThe targetDatcat attribute is designed to be used in, e.g., feature structure declarations, and is analogous to the targetLang attribute of the att.pointing class, in that it describes the object that is being referenced, rather than the referencing object.
<fDecl name="POS"  targetDatcat="http://hdl.handle.net/11459/CCR_C-396_5a972b93-2294-ab5c-a541-7c344c5f26c3">  <fDescr>part of speech (morphosyntactic category)</fDescr>  <vRange>   <vAlt>    <symbol value="NN"     datcat="http://hdl.handle.net/11459/CCR_C-1256_7ec6083c-23d4-224d-6f94-eecbe6861545"/>    <symbol value="NP"     datcat="http://hdl.handle.net/11459/CCR_C-1371_fbebd9ec-a7f4-9a36-d6e9-88ee16b944ae"/> <!-- ... -->   </vAlt>  </vRange> </fDecl>
Above, the <fDecl> uses targetDatcat, because if it were to use datcat, it would be asserting that it is an instance of the container data category part of speech, whereas it is not — it models a container (<f>) that encodes a part of speech. Note also that it is the <f> that is modeled above, not its values, which are used as direct references to data categories; hence the use of datcat in the <symbol> element.
ExampleThe att.datcat attributes can be used for any sort of taxonomies. The example below illustrates their usefulness for describing usage domain labels in dictionaries on the example of the Diccionario da Lingua Portugueza by António de Morais Silva, retro-digitised in the MORDigital project.
<!-- in the dictionary header --><encodingDesc>  <classDecl>   <taxonomy xml:id="domains"> <!--...-->    <category xml:id="domain.medical_and_health_sciences">     <catDesc xml:lang="en">Medical and Health Sciences</catDesc>     <catDesc xml:lang="pt">Ciências Médicas e da Saúde</catDesc>     <category xml:id="domain.medical_and_health_sciences.medicine"      valueDatcat="https://vocabs.rossio.fcsh.unl.pt/pub/morais_domains/pt/page/0025">      <catDesc xml:lang="en">       <term>Medicine</term>       <gloss> <!--...-->       </gloss>      </catDesc>      <catDesc xml:lang="pt">       <term>Medicina</term>       <gloss> <!--...-->       </gloss>      </catDesc>     </category>    </category> <!--...-->   </taxonomy>  </classDecl> </encodingDesc> <!-- inside an <entry> element: --> <usg type="domain"  valueDatcat="#domain.medical_and_health_sciences.medicine">Med.</usg>
In the Morais dictionary, the relevant domain labels are in the header, getting referenced inside the dictionary, from <usg> elements. The vocabulary used for dictionary-internal labelling is in turn anchored in the MorDigital controlled vocabulary service of the NOVA University of Lisbon – School of Social Sciences and Humanities (NOVA FCSH).
Note

The TEI Abstract Model can be expressed as a hierarchy of attribute-value matrices (AVMs) of various types and of various levels of complexity, nested or grouped in various ways. At the most abstract level, an AVM consists of an information container and the value (contents) of that container.

A simple example of an XML serialization of such structures is, on the one hand, the opening and closing tags that delimit and name the container, and, on the other, the content enclosed by the two tags that constitues the value. An analogous example is an attribute name and the value of that attribute.

In a TEI XML example of two equivalent serializations expressing the name-value pair <part-of-speech,common-noun>, namely <pos>commonNoun</pos> and pos="common-noun", one would classify the element <pos> and the attribute pos as containers (mapping onto the first member of the relevant name-value pair), while the character data content of <pos> or the value of pos would be seen as mapping onto the second member of the pair.

The att.datcat class provides means of addressing the containers and their values, while at the same time providing a way to interpret them in the context of external taxonomies or ontologies. Aligning e.g. both the <pos> element and the pos attribute with the same value of an external reference point (i.e., an entry in an agreed taxonomy) affirms the identity of the concept serialised by both the element container and the attribute container, and optionally provides a definition of that concept (in the case at hand, the concept part of speech).

The value of the att.datcat attributes should be a PID (persistent identifier) that points to a specific — and, ideally, shared — taxonomy or ontology. Among the resources that can, to a lesser or greater extent, be used as inventories of (more or less) standardized linguistic categories are the GOLD ontology, CLARIN CCR, OLiA, or TermWeb's DatCatInfo, and also the Universal Dependencies inventory, on the assumption that its URIs are going to persist. It is imaginable that a project may choose to address a local taxonomy store instead, but this risks losing the advantage of interchangeability with other projects.

Historically, datcat and valueDatcat originate from the (now obsolete) ISO 12620:2009 standard, describing the data model and procedures for a Data Category Registry (DCR). The current version of that standard, ISO 12620-1, does not standardize the serialization of pointers, merely mentioning the TEI att.datcat as an example.

Note that no constraint prevents the occurrence of a combination of att.datcat attributes: the <fDecl> element, which is a natural bearer of the targetDatcat attribute, is an instance of a specific modeling element, and, in principle, could be semantically fixed by an appropriate reference taxonomy of modeling devices.

2.3.10. att.declarable

att.declarable provides attributes for those elements in the TEI header which may be independently selected by means of the special purpose decls attribute. [16.3. Associating Contextual Information with a Text]
Moduletei — SPEAR Schema Customization
Membersavailability bibl editorialDecl listBibl seriesStmt sourceDesc
Attributes
defaultindicates whether or not this element is selected by default when its parent is selected.
StatusOptional
Datatypeteidata.truthValue
Legal values are:
true
This element is selected if its parent is selected
false
This element can only be selected explicitly, unless it is the only one of its kind, in which case it is selected if its parent is selected.[Default]
Note

The rules governing the association of declarable elements with individual parts of a TEI text are fully defined in chapter 16.3. Associating Contextual Information with a Text. Only one element of a particular type may have a default attribute with a value of true.

2.3.11. att.declaring

att.declaring provides attributes for elements which may be independently associated with a particular declarable element within the header, thus overriding the inherited default for that element. [16.3. Associating Contextual Information with a Text]
Moduletei — SPEAR Schema Customization
Membersback body p ref text
Attributes
decls(declarations) identifies one or more declarable elements within the header, which are understood to apply to the element bearing this attribute and its content.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
Note

The rules governing the association of declarable elements with individual parts of a TEI text are fully defined in chapter 16.3. Associating Contextual Information with a Text.

2.3.12. att.docStatus

att.docStatus provides attributes for use on metadata elements describing the status of a document.
Moduletei — SPEAR Schema Customization
Membersbibl change revisionDesc
Attributes
statusdescribes the status of a document either currently or, when associated with a dated element, at the time indicated.
StatusOptional
Datatypeteidata.enumerated
Sample values include:
approved
candidate
cleared
deprecated
draft
[Default]
embargoed
expired
frozen
galley
proposed
published
recommendation
submitted
unfinished
withdrawn
Example
<revisionDesc status="published">  <change when="2010-10-21"   status="published"/>  <change when="2010-10-02status="cleared"/>  <change when="2010-08-02"   status="embargoed"/>  <change when="2010-05-01status="frozen"   who="#MSM"/>  <change when="2010-03-01status="draft"   who="#LB"/> </revisionDesc>

2.3.13. att.editLike

att.editLike provides attributes describing the nature of an encoded scholarly intervention or interpretation of any kind. [3.5. Simple Editorial Changes 11.3.1. Origination 14.3.2. The Person Element 12.3.1.1. Core Elements for Transcriptional Work]
Moduletei — SPEAR Schema Customization
Membersevent langKnown name orgName relation
Attributes
evidenceindicates the nature of the evidence supporting the reliability or accuracy of the intervention or interpretation.
StatusOptional
Datatype1–∞ occurrences of teidata.enumerated separated by whitespace
Suggested values include:
internal
there is internal evidence to support the intervention.
external
there is external evidence to support the intervention.
conjecture
the intervention or interpretation has been made by the editor, cataloguer, or scholar on the basis of their expertise.
instantindicates whether this is an instant revision or not.
StatusOptional
Datatypeteidata.xTruthValue
Defaultfalse
Note

The members of this attribute class are typically used to represent any kind of editorial intervention in a text, for example a correction or interpretation, or to date or localize manuscripts etc.

Each pointer on the source (if present) corresponding to a witness or witness group should reference a bibliographic citation such as a <witness>, <msDesc>, or <bibl> element, or another external bibliographic citation, documenting the source concerned.

2.3.14. att.fragmentable

att.fragmentable provides attributes for representing fragmentation of a structural element, typically as a consequence of some overlapping hierarchy.
Moduletei — SPEAR Schema Customization
Membersp
Attributes
partspecifies whether or not its parent element is fragmented in some way, typically by some other overlapping structure: for example a speech which is divided between two or more verse stanzas, a paragraph which is split across a page division, a verse line which is divided between two speakers.
StatusOptional
Datatypeteidata.enumerated
Legal values are:
Y
(yes) the element is fragmented in some (unspecified) respect
N
(no) the element is not fragmented, or no claim is made as to its completeness[Default]
I
(initial) this is the initial part of a fragmented element
M
(medial) this is a medial part of a fragmented element
F
(final) this is the final part of a fragmented element
Note

The values I, M, or F should be used only where it is clear how the element may be reconstituted.

2.3.15. att.global

att.global provides attributes common to all elements in the TEI encoding scheme. [1.3.1.1. Global Attributes]
Moduletei — SPEAR Schema Customization
MembersTEI author authority availability back bibl biblScope body catDesc category change classDecl edition editionStmt editorialDecl encodingDesc event fileDesc funder head langKnown licence listBibl listRelation name note num orgName p profileDesc pubPlace publicationStmt publisher ref relation resp respStmt revisionDesc rs seriesStmt sourceDesc sponsor taxonomy teiHeader text title titleStmt
Attributes
xml:id(identifier) provides a unique identifier for the element bearing the attribute.
StatusOptional
DatatypeID
Note

The xml:id attribute may be used to specify a canonical reference for an element; see section 3.11. Reference Systems.

n(number) gives a number (or other label) for an element, which is not necessarily unique within the document.
StatusOptional
Datatypeteidata.text
Note

The value of this attribute is always understood to be a single token, even if it contains space or other punctuation characters, and need not be composed of numbers only. It is typically used to specify the numbering of chapters, sections, list items, etc.; it may also be used in the specification of a standard reference system for the text.

xml:lang(language) indicates the language of the element content using a ‘tag’ generated according to BCP 47.
StatusOptional
Datatypeteidata.language
<p> … The consequences of this rapid depopulation were the loss of the last <foreign xml:lang="rap">ariki</foreign> or chief (Routledge 1920:205,210) and their connections to ancestral territorial organization.</p>
Note

The xml:lang value will be inherited from the immediately enclosing element, or from its parent, and so on up the document hierarchy. It is generally good practice to specify xml:lang at the highest appropriate level, noticing that a different default may be needed for the <teiHeader> from that needed for the associated resource element or elements, and that a single TEI document may contain texts in many languages.

Only attributes with free text values (rare in these guidelines) will be in the scope of xml:lang.

The authoritative list of registered language subtags is maintained by IANA and is available at https://www.iana.org/assignments/language-subtag-registry. For a good general overview of the construction of language tags, see https://www.w3.org/International/articles/language-tags/, and for a practical step-by-step guide, see https://www.w3.org/International/questions/qa-choosing-language-tags.en.php.

The value used must conform with BCP 47. If the value is a private use code (i.e., starts with x- or contains -x-), a <language> element with a matching value for its ident attribute should be supplied in the TEI header to document this value. Such documentation may also optionally be supplied for non-private-use codes, though these must remain consistent with their (IETF)Internet Engineering Task Force definitions.

xml:baseprovides a base URI reference with which applications can resolve relative URI references into absolute URI references.
StatusOptional
Datatypeteidata.pointer
<div type="bibl">  <head>Selections from <title level="m">The Collected Letters of Robert Southey. Part 1: 1791-1797</title>  </head>  <listBibl xml:base="https://romantic-circles.org/sites/default/files/imported/editions/southey_letters/XML/">   <bibl>    <ref target="letterEEd.26.3.xml">     <title>Robert Southey to Grosvenor Charles Bedford</title>, <date when="1792-04-03">3 April 1792</date>.    </ref>   </bibl>   <bibl>    <ref target="letterEEd.26.57.xml">     <title>Robert Southey to Anna Seward</title>, <date when="1793-09-18">18 September 1793</date>.    </ref>   </bibl>   <bibl>    <ref target="letterEEd.26.85.xml">     <title>Robert Southey to Robert Lovell</title>, <date from="1794-04-05"      to="1794-04-06">5-6 April, 1794</date>.    </ref>   </bibl>  </listBibl> </div>
xml:spacesignals an intention about how white space should be managed by applications.
StatusOptional
Datatypeteidata.enumerated
Legal values are:
default
signals that the application's default white-space processing modes are acceptable
preserve
indicates the intent that applications preserve all white space
Note

The XML specification provides further guidance on the use of this attribute. Note that many parsers may not handle xml:space correctly.

2.3.16. att.global.analytic

att.global.analytic I have needed to include this because it somehow disappeared from this customization. I do not know why this was necessary.
Modulederived-module-SPEAR
Membersatt.global[TEI author authority availability back bibl biblScope body catDesc category change classDecl edition editionStmt editorialDecl encodingDesc event fileDesc funder head langKnown licence listBibl listRelation name note num orgName p profileDesc pubPlace publicationStmt publisher ref relation resp respStmt revisionDesc rs seriesStmt sourceDesc sponsor taxonomy teiHeader text title titleStmt] occupation socecStatus state trait
Attributes
ana
StatusOptional
Datatypeteidata.text
Schematron
<sch:rule context="//tei:ab/tei:listEvent/tei:event/@ana | //tei:langKnown/@ana | //tei:occupation/@ana | //tei:socecStatus/@ana | //tei:state/@ana | //tei:trait/@ana"> <sch:let name="anaTokens"  value="tokenize(., ' ')"/> <sch:assert test=" every $i in $anaTokens satisfies matches($i, concat('http://syriaca.org/taxonomy/', '\w+'))"  role="error"> Each @ana attribute value must start with "http://syriaca.org/taxonomy/" and multiple values must be space separated. </sch:assert> <sch:assert test="count(distinct-values($anaTokens)) = count($anaTokens)"  role="error"> The same taxonomy URI may not appear twice as the value of the @ana attribute. </sch:assert> <sch:report test="contains(., ',') or contains(., ';')"> Multiple @ana attributes should be separated with one blank space </sch:report> <sch:report test=" every $i in $anaTokens satisfies contains(substring-after($i, 'http://syriaca.org/taxonomy'), 'http:')"  role="error"> Multiple @ana attributes should be separated with one blank space </sch:report> </sch:rule>
<ab type="factoid"  subtype="occupation"  xml:id="factoid-3"  resp="#ktorabi">  <idno type="URI">https://spear-prosop.org/10510-3</idno>  <listPerson>   <person>    <persName ref="http://syriaca.org/person/3218"/>    <occupation ana="http://syriaca.org/taxonomy/monastic-heads">     <note type="desc">      <persName ref="http://syriaca.org/person/3218">John</persName>          was an archimandrite.</note>    </occupation>   </person>  </listPerson>  <bibl type="primary">   <ptr target="http://syriaca.org/work/10510"/>   <citedRange unit="p">552</citedRange>  </bibl>  <bibl type="primary">   <ptr target="http://syriaca.org/cbss/PHMZMM3R"/>   <citedRange unit="p">206</citedRange>  </bibl> </ab>

2.3.17. att.global.linking

att.global.linking provides a set of attributes for hypertextual linking. [17. Linking, Segmentation, and Alignment]
Modulelinking — SPEAR Schema Customization
Membersatt.global[TEI author authority availability back bibl biblScope body catDesc category change classDecl edition editionStmt editorialDecl encodingDesc event fileDesc funder head langKnown licence listBibl listRelation name note num orgName p profileDesc pubPlace publicationStmt publisher ref relation resp respStmt revisionDesc rs seriesStmt sourceDesc sponsor taxonomy teiHeader text title titleStmt]
Attributes
corresp(corresponds) points to elements that correspond to the current element in some way.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
In this example a <group> contains two <text>s, each containing the same document in a different language. The correspondence is indicated using corresp. The language is indicated using xml:lang, whose value is inherited; both the tag with the corresp and the tag pointed to by the corresp inherit the value from their immediate parent.
In this example, a <place> element containing information about the city of London is linked with two <person> elements in a literary personography. This correspondence represents a slightly looser relationship than the one in the preceding example; there is no sense in which an allegorical character could be substituted for the physical city, or vice versa, but there is obviously a correspondence between them.
synch(synchronous) points to elements that are synchronous with the current element.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
sameAspoints to an element that is the same as the current element.
StatusOptional
Datatypeteidata.pointer
copyOfpoints to an element of which the current element is a copy.
StatusOptional
Datatypeteidata.pointer
Note

Any content of the current element should be ignored. Its true content is that of the element being pointed at.

nextpoints to the next element of a virtual aggregate of which the current element is part.
StatusOptional
Datatypeteidata.pointer
Note

It is recommended that the element indicated be of the same type as the element bearing this attribute.

prev(previous) points to the previous element of a virtual aggregate of which the current element is part.
StatusOptional
Datatypeteidata.pointer
Note

It is recommended that the element indicated be of the same type as the element bearing this attribute.

excludepoints to elements that are in exclusive alternation with the current element.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
selectselects one or more alternants; if one alternant is selected, the ambiguity or uncertainty is marked as resolved. If more than one alternant is selected, the degree of ambiguity or uncertainty is marked as reduced by the number of alternants not selected.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
Note

This attribute should be placed on an element which is superordinate to all of the alternants from which the selection is being made.

2.3.18. att.global.rendition

att.global.rendition provides rendering attributes common to all elements in the TEI encoding scheme. [1.3.1.1.3. Rendition Indicators]
Moduletei — SPEAR Schema Customization
Membersatt.global[TEI author authority availability back bibl biblScope body catDesc category change classDecl edition editionStmt editorialDecl encodingDesc event fileDesc funder head langKnown licence listBibl listRelation name note num orgName p profileDesc pubPlace publicationStmt publisher ref relation resp respStmt revisionDesc rs seriesStmt sourceDesc sponsor taxonomy teiHeader text title titleStmt]
Attributes
rend(rendition) indicates how the element in question was rendered or presented in the source text.
StatusOptional
Datatype1–∞ occurrences of teidata.word separated by whitespace
<head rend="align(center) case(allcaps)">  <lb/>To The <lb/>Duchesse <lb/>of <lb/>Newcastle, <lb/>On Her <lb/>  <hi rend="case(mixed)">New Blazing-World</hi>. </head>
Note

These Guidelines make no binding recommendations for the values of the rend attribute; the characteristics of visual presentation vary too much from text to text and the decision to record or ignore individual characteristics varies too much from project to project. Some potentially useful conventions are noted from time to time at appropriate points in the Guidelines. The values of the rend attribute are a set of sequence-indeterminate individual tokens separated by whitespace.

stylecontains an expression in some formal style definition language which defines the rendering or presentation used for this element in the source text.
StatusOptional
Datatypeteidata.text
<head style="text-align: center; font-variant: small-caps">  <lb/>To The <lb/>Duchesse <lb/>of <lb/>Newcastle, <lb/>On Her <lb/>  <hi style="font-variant: normal">New Blazing-World</hi>. </head>
Note

Unlike the attribute values of rend, which uses whitespace as a separator, the style attribute may contain whitespace. This attribute is intended for recording inline stylistic information concerning the source, not any particular output.

The formal language in which values for this attribute are expressed may be specified using the <styleDefDecl> element in the TEI header.

If style and rendition are both present on an element, then style overrides or complements rendition. style should not be used in conjunction with rend, because the latter does not employ a formal style definition language.

renditionpoints to a description of the rendering or presentation used for this element in the source text.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
<head rendition="#ac #sc">  <lb/>To The <lb/>Duchesse <lb/>of <lb/>Newcastle, <lb/>On Her <lb/>  <hi rendition="#normal">New Blazing-World</hi>. </head> <!-- elsewhere... --> <rendition xml:id="sc"  scheme="css">font-variant: small-caps</rendition> <rendition xml:id="normal"  scheme="css">font-variant: normal</rendition> <rendition xml:id="ac"  scheme="css">text-align: center</rendition>
Note

The rendition attribute is used in a very similar way to the class attribute defined for XHTML but with the important distinction that its function is to describe the appearance of the source text, not necessarily to determine how that text should be presented on screen or paper.

If rendition is used to refer to a style definition in a formal language like CSS, it is recommended that it not be used in conjunction with rend. Where both rendition and rend are supplied, the latter is understood to override or complement the former.

Each URI provided should indicate a <rendition> element defining the intended rendition in terms of some appropriate style language, as indicated by the scheme attribute.

2.3.19. att.global.responsibility

att.global.responsibility provides attributes indicating the agent responsible for some aspect of the text, the markup or something asserted by the markup, and the degree of certainty associated with it. [1.3.1.1.4. Sources, certainty, and responsibility 3.5. Simple Editorial Changes 12.3.2.2. Hand, Responsibility, and Certainty Attributes 18.3. Spans and Interpretations 14.1.1. Linking Names and Their Referents]
Moduletei — SPEAR Schema Customization
Membersatt.global[TEI author authority availability back bibl biblScope body catDesc category change classDecl edition editionStmt editorialDecl encodingDesc event fileDesc funder head langKnown licence listBibl listRelation name note num orgName p profileDesc pubPlace publicationStmt publisher ref relation resp respStmt revisionDesc rs seriesStmt sourceDesc sponsor taxonomy teiHeader text title titleStmt]
Attributes
cert(certainty) signifies the degree of certainty associated with the intervention or interpretation.
StatusOptional
Datatypeteidata.probCert
resp(responsible party) indicates the agency responsible for the intervention or interpretation, for example an editor or transcriber.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
Note

To reduce the ambiguity of a resp pointing directly to a person or organization, we recommend that resp be used to point not to an agent (<person> or <org>) but to a <respStmt>, <author>, <editor> or similar element which clarifies the exact role played by the agent. Pointing to multiple <respStmt>s allows the encoder to specify clearly each of the roles played in part of a TEI file (creating, transcribing, encoding, editing, proofing etc.).

Example
Blessed are the <choice>  <sic>cheesemakers</sic>  <corr resp="#editorcert="high">peacemakers</corr> </choice>: for they shall be called the children of God.
Example
<!-- in the <text> ... --><lg> <!-- ... -->  <l>Punkes, Panders, baſe extortionizing    sla<choice>    <sic>n</sic>    <corr resp="#JENS1_transcriber">u</corr>   </choice>es,</l> <!-- ... --> </lg> <!-- in the <teiHeader> ... --> <!-- ... --> <respStmt xml:id="JENS1_transcriber">  <resp when="2014">Transcriber</resp>  <name>Janelle Jenstad</name> </respStmt>

2.3.20. att.global.source

att.global.source provides attributes used by elements to point to an external source. [1.3.1.1.4. Sources, certainty, and responsibility 3.3.3. Quotation 8.3.4. Writing]
Moduletei — SPEAR Schema Customization
Membersatt.global[TEI author authority availability back bibl biblScope body catDesc category change classDecl edition editionStmt editorialDecl encodingDesc event fileDesc funder head langKnown licence listBibl listRelation name note num orgName p profileDesc pubPlace publicationStmt publisher ref relation resp respStmt revisionDesc rs seriesStmt sourceDesc sponsor taxonomy teiHeader text title titleStmt]
Attributes
sourcespecifies the source from which some aspect of this element is drawn.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
Schematron
<sch:rule context="tei:*[@source]"> <sch:let name="srcs"  value="tokenize( normalize-space(@source),' ')"/> <sch:report test="( self::tei:classRef | self::tei:dataRef | self::tei:elementRef | self::tei:macroRef | self::tei:moduleRef | self::tei:schemaSpec ) and $srcs[2]"> When used on a schema description element (like <sch:value-of select="name(.)"/>), the @source attribute should have only 1 value. (This one has <sch:value-of select="count($srcs)"/>.) </sch:report> </sch:rule>
Note

The source attribute points to an external source. When used on an element describing a schema component (<classRef>, <dataRef>, <elementRef>, <macroRef>, <moduleRef>, or <schemaSpec>), it identifies the source from which declarations for the components should be obtained.

On other elements it provides a pointer to the bibliographical source from which a quotation or citation is drawn.

In either case, the location may be provided using any form of URI, for example an absolute URI, a relative URI, a private scheme URI of the form tei:x.y.z, where x.y.z indicates the version number, e.g. tei:4.3.2 for TEI P5 release 4.3.2 or (as a special case) tei:current for whatever is the latest release, or a private scheme URI that is expanded to an absolute URI as documented in a <prefixDef>.

When used on elements describing schema components, source should have only one value; when used on other elements multiple values are permitted.

Example
<p> <!-- ... --> As Willard McCarty (<bibl xml:id="mcc_2012">2012, p.2</bibl>) tells us, <quote source="#mcc_2012">‘Collaboration’ is a problematic and should be a contested    term.</quote> <!-- ... --> </p>
Example
<p> <!-- ... -->  <quote source="#chicago_15_ed">Grammatical theories are in flux, and the more we learn, the    less we seem to know.</quote> <!-- ... --> </p> <!-- ... --> <bibl xml:id="chicago_15_ed">  <title level="m">The Chicago Manual of Style</title>, <edition>15th edition</edition>. <pubPlace>Chicago</pubPlace>: <publisher>University of    Chicago Press</publisher> (<date>2003</date>), <biblScope unit="page">p.147</biblScope>. </bibl>
Example
<elementRef key="psource="tei:2.0.1"/>
Include in the schema an element named <p> available from the TEI P5 2.0.1 release.
Example
<schemaSpec ident="myODD"  source="mycompiledODD.xml"> <!-- further declarations specifying the components required --> </schemaSpec>
Create a schema using components taken from the file mycompiledODD.xml.

2.3.21. att.internetMedia

att.internetMedia provides attributes for specifying the type of a computer resource using a standard taxonomy.
Moduletei — SPEAR Schema Customization
Membersref
Attributes
mimeType(MIME media type) specifies the applicable multimedia internet mail extension (MIME) media type.
StatusOptional
Datatype1–∞ occurrences of teidata.word separated by whitespace
ExampleIn this example mimeType is used to indicate that the URL points to a TEI XML file encoded in UTF-8.
<ref mimeType="application/tei+xml; charset=UTF-8"  target="https://raw.githubusercontent.com/TEIC/TEI/dev/P5/Source/guidelines-en.xml"/>
Note

This attribute class provides an attribute for describing a computer resource, typically available over the internet, using a value taken from a standard taxonomy. At present only a single taxonomy is supported, the Multipurpose Internet Mail Extensions (MIME) Media Type system. This typology of media types is defined by the Internet Engineering Task Force in RFC 2046. The list of types is maintained by the Internet Assigned Numbers Authority (IANA). The mimeType attribute must have a value taken from this list.

2.3.22. att.locatable

att.locatable provides attributes for referencing locations by pointing to entries in a canonical list of places. [2.3.9. The Unit Declaration 14.3.4.3. States, Traits, and Events]
Moduletei — SPEAR Schema Customization
Membersevent
Attributes
whereindicates one or more locations by pointing to a <place> element or other canonical description.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace

2.3.23. att.naming

att.naming provides attributes common to elements which refer to named persons, places, organizations etc. [3.6.1. Referring Strings 14.3.7. Names and Nyms]
Moduletei — SPEAR Schema Customization
Membersatt.personal[name orgName] author event pubPlace rs
Attributes
rolemay be used to specify further information about the entity referenced by this name in the form of a set of whitespace-separated values, for example the occupation of a person, or the status of a place.
StatusOptional
Datatype1–∞ occurrences of teidata.enumerated separated by whitespace
nymRef(reference to the canonical name) provides a means of locating the canonical form (nym) of the names associated with the object named by the element bearing it.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
Note

The value must point directly to one or more XML elements by means of one or more URIs, separated by whitespace. If more than one is supplied, the implication is that the name is associated with several distinct canonical names.

2.3.24. att.personal

att.personal (attributes for components of names usually, but not necessarily, personal names) common attributes for those elements which form part of a name usually, but not necessarily, a personal name. [14.2.1. Personal Names]
Moduletei — SPEAR Schema Customization
Membersname orgName
Attributes
fullindicates whether the name component is given in full, as an abbreviation or simply as an initial.
StatusOptional
Datatypeteidata.enumerated
Legal values are:
yes
(yes) the name component is spelled out in full.[Default]
abb
(abbreviated) the name component is given in an abbreviated form.
init
(initial letter) the name component is indicated only by one initial.
sort(sort) specifies the sort order of the name component in relation to others within the name.
StatusOptional
Datatypeteidata.count

2.3.25. att.placement

att.placement provides attributes for describing where on the source page or object a textual element appears. [3.5.3. Additions, Deletions, and Omissions 12.3.1.4. Additions and Deletions]
Moduletei — SPEAR Schema Customization
Membershead note
Attributes
placespecifies where this item is placed.
StatusRecommended
Datatype1–∞ occurrences of teidata.enumerated separated by whitespace
Suggested values include:
top
at the top of the page
bottom
at the foot of the page
margin
in the margin (left, right, or both)
opposite
on the opposite, i.e. facing, page
overleaf
on the other side of the leaf
above
above the line
right
to the right, e.g. to the right of a vertical line of text, or to the right of a figure
below
below the line
left
to the left, e.g. to the left of a vertical line of text, or to the left of a figure
end
at the end of e.g. chapter or volume.
inline
within the body of the text.
inspace
in a predefined space, for example left by an earlier scribe.
<add place="margin">[An addition written in the margin]</add> <add place="bottom opposite">[An addition written at the foot of the current page and also on the facing page]</add>
<note place="bottom">Ibid, p.7</note>

2.3.26. att.pointing

att.pointing provides a set of attributes used by all elements which point to other elements by means of one or more URI references. [1.3.1.1.2. Language Indicators 3.7. Simple Links and Cross-References]
Moduletei — SPEAR Schema Customization
Memberslicence note ref
Attributes
targetLangspecifies the language of the content to be found at the destination referenced by target, using a ‘language tag’ generated according to BCP 47.
StatusOptional
Datatypeteidata.language
Schematron
<sch:rule context="tei:*[not(self::tei:schemaSpec)][@targetLang]"> <sch:assert test="@target">@targetLang should only be used on <sch:name/> if @target is specified.</sch:assert> </sch:rule>
<linkGrp xml:id="pol-swh_aln_2.1-linkGrp">  <ptr xml:id="pol-swh_aln_2.1.1-ptr"   target="pol/UDHR/text.xml#pol_txt_1-head"   type="tuv"   targetLang="pl"/>  <ptr xml:id="pol-swh_aln_2.1.2-ptr"   target="swh/UDHR/text.xml#swh_txt_1-head"   type="tuv"   targetLang="sw"/> </linkGrp>
In the example above, the <linkGrp> combines pointers at parallel fragments of the Universal Declaration of Human Rights: one of them is in Polish, the other in Swahili.
Note

The value must conform to BCP 47. If the value is a private use code (i.e., starts with x- or contains -x-), a <language> element with a matching value for its ident attribute should be supplied in the TEI header to document this value. Such documentation may also optionally be supplied for non-private-use codes, though these must remain consistent with their (IETF)Internet Engineering Task Force definitions.

targetspecifies the destination of the reference by supplying one or more URI References.
StatusOptional
Datatype1–∞ occurrences of teidata.pointer separated by whitespace
Note

One or more syntactically valid URI references, separated by whitespace. Because whitespace is used to separate URIs, no whitespace is permitted inside a single URI. If a whitespace character is required in a URI, it should be escaped with the normal mechanism, e.g. TEI%20Consortium.

evaluate(evaluate) specifies the intended meaning when the target of a pointer is itself a pointer.
StatusOptional
Datatypeteidata.enumerated
Legal values are:
all
if the element pointed to is itself a pointer, then the target of that pointer will be taken, and so on, until an element is found which is not a pointer.
one
if the element pointed to is itself a pointer, then its target (whether a pointer or not) is taken as the target of this pointer.
none
no further evaluation of targets is carried out beyond that needed to find the element specified in the pointer's target.
Note

If no value is given, the application program is responsible for deciding (possibly on the basis of user input) how far to trace a chain of pointers.

2.3.27. att.ranging

att.ranging provides attributes for describing numerical ranges.
Moduletei — SPEAR Schema Customization
Membersnum
Attributes
atLeastgives a minimum estimated value for the approximate measurement.
StatusOptional
Datatypeteidata.numeric
atMostgives a maximum estimated value for the approximate measurement.
StatusOptional
Datatypeteidata.numeric
minwhere the measurement summarizes more than one observation or a range, supplies the minimum value observed.
StatusOptional
Datatypeteidata.numeric
maxwhere the measurement summarizes more than one observation or a range, supplies the maximum value observed.
StatusOptional
Datatypeteidata.numeric
confidencespecifies the degree of statistical confidence (between zero and one) that a value falls within the range specified by min and max, or the proportion of observed values that fall within that range.
StatusOptional
Datatypeteidata.probability
Example
The MS. was lost in transmission by mail from <del rend="overstrike">  <gap reason="illegible"   extent="one or two lettersatLeast="1atMost="2unit="chars"/> </del> Philadelphia to the Graphic office, New York.
Example
Americares has been supporting the health sector in Eastern Europe since 1986, and since 1992 has provided <measure atLeast="120000000unit="USD"  commodity="currency">more than $120m</measure> in aid to Ukrainians.

2.3.28. att.sortable

att.sortable provides attributes for elements in lists or groups that are sortable, but whose sorting key cannot be derived mechanically from the element content. [10.1. Dictionary Body and Overall Structure]
Moduletei — SPEAR Schema Customization
Membersbibl event listBibl listRelation relation
Attributes
sortKeysupplies the sort key for this element in an index, list or group which contains it.
StatusOptional
Datatypeteidata.word
David's other principal backer, Josiah ha-Kohen <index indexName="NAMES">  <term sortKey="Azarya_Josiah_Kohen">Josiah ha-Kohen b. Azarya</term> </index> b. Azarya, son of one of the last gaons of Sura was David's own first cousin.
Note

The sort key is used to determine the sequence and grouping of entries in an index. It provides a sequence of characters which, when sorted with the other values, will produced the desired order; specifics of sort key construction are application-dependent

Dictionary order often differs from the collation sequence of machine-readable character sets; in English-language dictionaries, an entry for 4-H will often appear alphabetized under ‘fourh’, and McCoy may be alphabetized under ‘maccoy’, while A1, A4, and A5 may all appear in numeric order ‘alphabetized’ between ‘a-’ and ‘AA’. The sort key is required if the orthography of the dictionary entry does not suffice to determine its location.

2.3.29. att.typed

att.typed provides attributes that can be used to classify or subclassify elements in any way. [1.3.1. Attribute Classes 18.1.1. Words and Above 3.6.1. Referring Strings 3.7. Simple Links and Cross-References 3.6.5. Abbreviations and Their Expansions 3.13.1. Core Tags for Verse 7.2.5. Speech Contents 4.1.1. Un-numbered Divisions 4.1.2. Numbered Divisions 4.2.1. Headings and Trailers 4.4. Virtual Divisions 14.3.2.3. Personal Relationships 12.3.1.1. Core Elements for Transcriptional Work 17.1.1. Pointers and Links 17.3. Blocks, Segments, and Anchors 13.2. Linking the Apparatus to the Text 23.5.1.2. Defining Content Models: RELAX NG 8.3. Elements Unique to Spoken Texts 24.3.1.3. Modification of Attribute and Attribute Value Lists]
Moduletei — SPEAR Schema Customization
MembersTEI bibl change event head listBibl listRelation name note num orgName ref relation rs text title
Attributes
typecharacterizes the element in some sense, using any convenient classification scheme or typology.
StatusOptional
Datatypeteidata.enumerated
<div type="verse">  <head>Night in Tarras</head>  <lg type="stanza">   <l>At evening tramping on the hot white road</l>   <l></l>  </lg>  <lg type="stanza">   <l>A wind sprang up from nowhere as the sky</l>   <l></l>  </lg> </div>
Note

The type attribute is present on a number of elements, not all of which are members of att.typed, usually because these elements restrict the possible values for the attribute in a specific way.

subtype(subtype) provides a sub-categorization of the element, if needed.
StatusOptional
Datatypeteidata.enumerated
Note

The subtype attribute may be used to provide any sub-classification for the element additional to that provided by its type attribute.

Schematron
<sch:rule context="tei:*[@subtype]"> <sch:assert test="@type">The <sch:name/> element should not be categorized in detail with @subtype unless also categorized in general with @type</sch:assert> </sch:rule>
Note

When appropriate, values from an established typology should be used. Alternatively a typology may be defined in the associated TEI header. If values are to be taken from a project-specific list, this should be defined using the <valList> element in the project-specific schema description, as described in 24.3.1.3. Modification of Attribute and Attribute Value Lists .

2.3.30. att.written

att.written provides attributes to indicate the hand in which the content of an element was written in the source being transcribed. [1.3.1. Attribute Classes]
Moduletei — SPEAR Schema Customization
Membershead note p text
Attributes
handpoints to a <handNote> element describing the hand considered responsible for the content of the element concerned.
StatusOptional
Datatypeteidata.pointer

2.4. Macros

2.4.1. macro.paraContent

macro.paraContent (paragraph content) defines the content of paragraphs and similar elements. [1.3. The TEI Class System]
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">
  <textNode/>
  <classRef key="model.paraPart"/>
 </alternate>
</content>
    
Declaration
macro.paraContent = ( text | model.paraPart )*

2.4.2. macro.phraseSeq

macro.phraseSeq (phrase sequence) defines a sequence of character data and phrase-level elements. [1.4.1. Standard Content Models]
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">
  <textNode/>
  <classRef key="model.gLike"/>
  <classRef key="model.attributable"/>
  <classRef key="model.phrase"/>
  <classRef key="model.global"/>
 </alternate>
</content>
    
Declaration
macro.phraseSeq =
   ( text | model.gLike | model.attributable | model.phrase | model.global )*

2.4.3. macro.phraseSeq.limited

macro.phraseSeq.limited (limited phrase sequence) defines a sequence of character data and those phrase-level elements that are not typically used for transcribing extant documents. [1.4.1. Standard Content Models]
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">
  <textNode/>
  <classRef key="model.limitedPhrase"/>
  <classRef key="model.global"/>
 </alternate>
</content>
    
Declaration
macro.phraseSeq.limited = ( text | model.limitedPhrase | model.global )*

2.4.4. macro.specialPara

macro.specialPara ('special' paragraph content) defines the content model of elements such as notes or list items, which either contain a series of component-level elements or else have the same structure as a paragraph, containing a series of phrase-level and inter-level elements. [1.3. The TEI Class System]
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <alternate minOccurs="0"
  maxOccurs="unbounded">
  <textNode/>
  <classRef key="model.gLike"/>
  <classRef key="model.phrase"/>
  <classRef key="model.inter"/>
  <classRef key="model.divPart"/>
  <classRef key="model.global"/>
 </alternate>
</content>
    
Declaration
macro.specialPara =
   (
      text
    | model.gLike
    | model.phrasemodel.intermodel.divPartmodel.global
   )*

2.5. Datatypes

2.5.1. teidata.certainty

teidata.certainty defines the range of attribute values expressing a degree of certainty.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <valList type="closed">
  <valItem ident="high"/>
  <valItem ident="medium"/>
  <valItem ident="low"/>
  <valItem ident="unknown"/>
 </valList>
</content>
    
Declaration
teidata.certainty = "high" | "medium" | "low" | "unknown"
Note

Certainty may be expressed by one of the predefined symbolic values high, medium, or low. The value unknown should be used in cases where the encoder does not wish to assert an opinion about the matter.

2.5.2. teidata.count

teidata.count defines the range of attribute values used for a non-negative integer value used as a count.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <dataRef name="nonNegativeInteger"/>
</content>
    
Declaration
teidata.count = xsd:nonNegativeInteger
Note

Any positive integer value or zero is permitted

2.5.3. teidata.duration.iso

teidata.duration.iso defines the range of attribute values available for representation of a duration in time using ISO 8601 standard formats.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <dataRef name="token"
  restriction="[0-9.,DHMPRSTWYZ/:+\-]+"/>
</content>
    
Declaration
teidata.duration.iso = token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" }
Example
<time dur-iso="PT0,75H">three-quarters of an hour</time>
Example
<date dur-iso="P1,5D">a day and a half</date>
Example
<date dur-iso="P14D">a fortnight</date>
Example
<time dur-iso="PT0.02S">20 ms</time>
Note

A duration is expressed as a sequence of number-letter pairs, preceded by the letter P; the letter gives the unit and may be Y (year), M (month), D (day), H (hour), M (minute), or S (second), in that order. The numbers are all unsigned integers, except for the last, which may have a decimal component (using either . or , as the decimal point; the latter is preferred). If any number is 0, then that number-letter pair may be omitted. If any of the H (hour), M (minute), or S (second) number-letter pairs are present, then the separator T must precede the first ‘time’ number-letter pair.

For complete details, see ISO 8601 Data elements and interchange formats — Information interchange — Representation of dates and times.

2.5.4. teidata.duration.w3c

teidata.duration.w3c defines the range of attribute values available for representation of a duration in time using W3C datatypes.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <dataRef name="duration"/>
</content>
    
Declaration
teidata.duration.w3c = xsd:duration
Example
<time dur="PT45M">forty-five minutes</time>
Example
<date dur="P1DT12H">a day and a half</date>
Example
<date dur="P7D">a week</date>
Example
<time dur="PT0.02S">20 ms</time>
Note

A duration is expressed as a sequence of number-letter pairs, preceded by the letter P; the letter gives the unit and may be Y (year), M (month), D (day), H (hour), M (minute), or S (second), in that order. The numbers are all unsigned integers, except for the S number, which may have a decimal component (using . as the decimal point). If any number is 0, then that number-letter pair may be omitted. If any of the H (hour), M (minute), or S (second) number-letter pairs are present, then the separator T must precede the first ‘time’ number-letter pair.

For complete details, see the W3C specification.

2.5.5. teidata.enumerated

teidata.enumerated defines the range of attribute values expressed as a single XML name taken from a list of documented possibilities.
Moduletei — SPEAR Schema Customization
Used by
Element:
Content model
<content>
 <dataRef key="teidata.word"/>
</content>
    
Declaration
teidata.enumerated = teidata.word
Note

Attributes using this datatype must contain a single ‘word’ which contains only letters, digits, punctuation characters, or symbols: thus it cannot include whitespace.

Typically, the list of documented possibilities will be provided (or exemplified) by a value list in the associated attribute specification, expressed with a <valList> element.

2.5.6. teidata.language

teidata.language defines the range of attribute values used to identify a particular combination of human language and writing system. [6.1. Language Identification]
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <alternate>
  <dataRef name="language"/>
  <valList>
   <valItem ident=""/>
  </valList>
 </alternate>
</content>
    
Declaration
teidata.language = xsd:language | ( "" )
Note

The values for this attribute are language ‘tags’ as defined in BCP 47. Currently BCP 47 comprises RFC 5646 and RFC 4647; over time, other IETF documents may succeed these as the best current practice.

A ‘language tag’, per BCP 47, is assembled from a sequence of components or subtags separated by the hyphen character (-, U+002D). The tag is made of the following subtags, in the following order. Every subtag except the first is optional. If present, each occurs only once, except the fourth and fifth components (variant and extension), which are repeatable.

language
The IANA-registered code for the language. This is almost always the same as the ISO 639 2-letter language code if there is one. The list of available registered language subtags can be found at https://www.iana.org/assignments/language-subtag-registry. It is recommended that this code be written in lower case.
script
The ISO 15924 code for the script. These codes consist of 4 letters, and it is recommended they be written with an initial capital, the other three letters in lower case. The canonical list of codes is maintained by the Unicode Consortium, and is available at https://unicode.org/iso15924/iso15924-codes.html. The IETF recommends this code be omitted unless it is necessary to make a distinction you need.
region
Either an ISO 3166 country code or a UN M.49 region code that is registered with IANA (not all such codes are registered, e.g. UN codes for economic groupings or codes for countries for which there is already an ISO 3166 2-letter code are not registered). The former consist of 2 letters, and it is recommended they be written in upper case; the list of codes can be searched or browsed at https://www.iso.org/obp/ui/#search/code/. The latter consist of 3 digits; the list of codes can be found at http://unstats.un.org/unsd/methods/m49/m49.htm.
variant
An IANA-registered variation. These codes ‘are used to indicate additional, well-recognized variations that define a language or its dialects that are not covered by other available subtags’.
extension
An extension has the format of a single letter followed by a hyphen followed by additional subtags. There are currently only two extensions in use. Extension T indicates that the content was transformed. For example en-t-it could be used for content in English that was translated from Italian. Extension T is described in the informational RFC 6497. Extension U can be used to embed a variety of locale attributes. It is described in the informational RFC 6067.
private use
An extension that uses the initial subtag of the single letter x (i.e., starts with x-) has no meaning except as negotiated among the parties involved. These should be used with great care, since they interfere with the interoperability that use of RFC 4646 is intended to promote. In order for a document that makes use of these subtags to be TEI-conformant, a corresponding <language> element must be present in the TEI header.

There are two exceptions to the above format. First, there are language tags in the IANA registry that do not match the above syntax, but are present because they have been ‘grandfathered’ from previous specifications.

Second, an entire language tag can consist of only a private use subtag. These tags start with x-, and do not need to follow any further rules established by the IETF and endorsed by these Guidelines. Like all language tags that make use of private use subtags, the language in question must be documented in a corresponding <language> element in the TEI header.

Examples include

sn
Shona
zh-TW
Taiwanese
zh-Hant-HK
Chinese written in traditional script as used in Hong Kong
en-SL
English as spoken in Sierra Leone
pl
Polish
es-MX
Spanish as spoken in Mexico
es-419
Spanish as spoken in Latin America

The W3C Internationalization Activity has published a useful introduction to BCP 47, Language tags in HTML and XML.

2.5.7. teidata.name

teidata.name defines the range of attribute values expressed as an XML Name.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <dataRef name="Name"/>
</content>
    
Declaration
teidata.name = xsd:Name
Note

Attributes using this datatype must contain a single word which follows the rules defining a legal XML name (see https://www.w3.org/TR/REC-xml/#dt-name): for example they cannot include whitespace or begin with digits.

2.5.8. teidata.numeric

teidata.numeric defines the range of attribute values used for numeric values.
Moduletei — SPEAR Schema Customization
Used by
Element:
Content model
<content>
 <alternate>
  <dataRef name="double"/>
  <dataRef name="token"
   restriction="(\-?[\d]+/\-?[\d]+)"/>
  <dataRef name="decimal"/>
 </alternate>
</content>
    
Declaration
teidata.numeric =
   xsd:double | token { pattern = "(\-?[\d]+/\-?[\d]+)" } | xsd:decimal
Note

Any numeric value, represented as a decimal number, in floating point format, or as a ratio.

To represent a floating point number, expressed in scientific notation, ‘E notation’, a variant of ‘exponential notation’, may be used. In this format, the value is expressed as two numbers separated by the letter E. The first number, the significand (sometimes called the mantissa) is given in decimal format, while the second is an integer. The value is obtained by multiplying the mantissa by 10 the number of times indicated by the integer. Thus the value represented in decimal notation as 1000.0 might be represented in scientific notation as 10E3.

A value expressed as a ratio is represented by two integer values separated by a solidus (/) character. Thus, the value represented in decimal notation as 0.5 might be represented as a ratio by the string 1/2.

2.5.9. teidata.outputMeasurement

teidata.outputMeasurement defines a range of values for use in specifying the size of an object that is intended for display.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <dataRef name="token"
  restriction="[\-+]?\d+(\.\d+)?(%|cm|mm|in|pt|pc|px|em|ex|ch|rem|vw|vh|vmin|vmax)"/>
</content>
    
Declaration
teidata.outputMeasurement =
   token
   {
      pattern = "[\-+]?\d+(\.\d+)?(%|cm|mm|in|pt|pc|px|em|ex|ch|rem|vw|vh|vmin|vmax)"
   }
Example
<figure>  <head>The TEI Logo</head>  <figDesc>Stylized yellow angle brackets with the letters <mentioned>TEI</mentioned> in    between and <mentioned>text encoding initiative</mentioned> underneath, all on a white    background.</figDesc>  <graphic height="600pxwidth="600px"   url="http://www.tei-c.org/logos/TEI-600.jpg"/> </figure>
Note

These values map directly onto the values used by XSL-FO and CSS. For definitions of the units see those specifications; at the time of this writing the most complete list is in the CSS3 working draft.

2.5.10. teidata.pattern

teidata.pattern defines attribute values which are expressed as a regular expression.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <dataRef name="token"/>
</content>
    
Declaration
teidata.pattern = token
Note
A regular expression, often called a pattern, is an expression that describes a set of strings. They are usually used to give a concise description of a set, without having to list all elements. For example, the set containing the three strings Handel, Händel, and Haendel can be described by the pattern H(ä|ae?)ndel (or alternatively, it is said that the pattern H(ä|ae?)ndel matches each of the three strings)
Wikipedia

This TEI datatype is mapped to the XSD token datatype, and may therefore contain any string of characters. However, it is recommended that the value used conform to the particular flavour of regular expression syntax supported by XSD Schema.

2.5.11. teidata.pointer

teidata.pointer defines the range of attribute values used to provide a single URI, absolute or relative, pointing to some other resource, either within the current document or elsewhere.
Moduletei — SPEAR Schema Customization
Used by
Element:
Content model
<content>
 <dataRef restriction="\S+" name="anyURI"/>
</content>
    
Declaration
teidata.pointer = xsd:anyURI { pattern = "\S+" }
Note

The range of syntactically valid values is defined by RFC 3986 Uniform Resource Identifier (URI): Generic Syntax. Note that the values themselves are encoded using RFC 3987 Internationalized Resource Identifiers (IRIs) mapping to URIs. For example, https://secure.wikimedia.org/wikipedia/en/wiki/% is encoded as https://secure.wikimedia.org/wikipedia/en/wiki/%25 while http://موقع.وزارة-الاتصالات.مصر/ is encoded as http://xn--4gbrim.xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c/

2.5.12. teidata.probCert

teidata.probCert defines a range of attribute values which can be expressed either as a numeric probability or as a coded certainty value.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <alternate>
  <dataRef key="teidata.probability"/>
  <dataRef key="teidata.certainty"/>
 </alternate>
</content>
    
Declaration
teidata.probCert = teidata.probability | teidata.certainty

2.5.13. teidata.probability

teidata.probability defines the range of attribute values expressing a probability.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <dataRef name="double">
  <dataFacet name="minInclusive" value="0"/>
  <dataFacet name="maxInclusive" value="1"/>
 </dataRef>
</content>
    
Declaration
teidata.probability = xsd:double
Note

Probability is expressed as a real number between 0 and 1; 0 representing certainly false and 1 representing certainly true.

2.5.14. teidata.replacement

teidata.replacement defines attribute values which contain a replacement template.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <textNode/>
</content>
    
Declaration
teidata.replacement = text

2.5.15. teidata.temporal.iso

teidata.temporal.iso defines the range of attribute values expressing a temporal expression such as a date, a time, or a combination of them, that conform to the international standard Data elements and interchange formats – Information interchange – Representation of dates and times.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <alternate>
  <dataRef name="date"/>
  <dataRef name="gYear"/>
  <dataRef name="gMonth"/>
  <dataRef name="gDay"/>
  <dataRef name="gYearMonth"/>
  <dataRef name="gMonthDay"/>
  <dataRef name="time"/>
  <dataRef name="dateTime"/>
  <dataRef name="token"
   restriction="[0-9.,DHMPRSTWYZ/:+\-]+"/>
 </alternate>
</content>
    
Declaration
teidata.temporal.iso =
   xsd:date
 | xsd:gYear
 | xsd:gMonth
 | xsd:gDay
 | xsd:gYearMonth
 | xsd:gMonthDay
 | xsd:time
 | xsd:dateTime
 | token { pattern = "[0-9.,DHMPRSTWYZ/:+\-]+" }
Note

If it is likely that the value used is to be compared with another, then a time zone indicator should always be included, and only the dateTime representation should be used.

For all representations for which ISO 8601:2004 describes both a basic and an extended format, these Guidelines recommend use of the extended format.

2.5.16. teidata.temporal.w3c

teidata.temporal.w3c defines the range of attribute values expressing a temporal expression such as a date, a time, or a combination of them, that conform to the W3C XML Schema Part 2: Datatypes Second Edition specification.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <alternate>
  <dataRef name="date"/>
  <dataRef name="gYear"/>
  <dataRef name="gMonth"/>
  <dataRef name="gDay"/>
  <dataRef name="gYearMonth"/>
  <dataRef name="gMonthDay"/>
  <dataRef name="time"/>
  <dataRef name="dateTime"/>
 </alternate>
</content>
    
Declaration
teidata.temporal.w3c =
   xsd:date
 | xsd:gYear
 | xsd:gMonth
 | xsd:gDay
 | xsd:gYearMonth
 | xsd:gMonthDay
 | xsd:time
 | xsd:dateTime
Note

If it is likely that the value used is to be compared with another, then a time zone indicator should always be included, and only the dateTime representation should be used.

2.5.17. teidata.text

teidata.text defines the range of attribute values used to express some kind of identifying string as a single sequence of Unicode characters possibly including whitespace.
Moduletei — SPEAR Schema Customization
Used by
Element:
Content model
<content>
 <dataRef name="string"/>
</content>
    
Declaration
teidata.text = string
Note

Attributes using this datatype must contain a single ‘token’ in which whitespace and other punctuation characters are permitted.

2.5.18. teidata.truthValue

teidata.truthValue defines the range of attribute values used to express a truth value.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <dataRef name="boolean"/>
</content>
    
Declaration
teidata.truthValue = xsd:boolean
Note

The possible values of this datatype are 1 or true, or 0 or false.

This datatype applies only for cases where uncertainty is inappropriate; if the attribute concerned may have a value other than true or false, e.g. unknown, or inapplicable, it should have the extended version of this datatype: teidata.xTruthValue.

2.5.19. teidata.version

teidata.version defines the range of attribute values which may be used to specify a TEI or Unicode version number.
Moduletei — SPEAR Schema Customization
Used by
Element:
Content model
<content>
 <dataRef name="token"
  restriction="[\d]+(\.[\d]+){0,2}"/>
</content>
    
Declaration
teidata.version = token { pattern = "[\d]+(\.[\d]+){0,2}" }
Note

The value of this attribute follows the pattern specified by the Unicode consortium for its version number (https://unicode.org/versions/). A version number contains digits and fullstop characters only. The first number supplied identifies the major version number. A second and third number, for minor and sub-minor version numbers, may also be supplied.

2.5.20. teidata.versionNumber

teidata.versionNumber defines the range of attribute values used for version numbers.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <dataRef name="token"
  restriction="[\d]+[a-z]*[\d]*(\.[\d]+[a-z]*[\d]*){0,3}"/>
</content>
    
Declaration
teidata.versionNumber =
   token { pattern = "[\d]+[a-z]*[\d]*(\.[\d]+[a-z]*[\d]*){0,3}" }

2.5.21. teidata.word

teidata.word defines the range of attribute values expressed as a single word or token.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <dataRef name="token"
  restriction="[^\p{C}\p{Z}]+"/>
</content>
    
Declaration
teidata.word = token { pattern = "[^\p{C}\p{Z}]+" }
Note

Attributes using this datatype must contain a single ‘word’ which contains only letters, digits, punctuation characters, or symbols: thus it cannot include whitespace.

2.5.22. teidata.xTruthValue

teidata.xTruthValue (extended truth value) defines the range of attribute values used to express a truth value which may be unknown.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <alternate>
  <dataRef name="boolean"/>
  <valList>
   <valItem ident="unknown"/>
   <valItem ident="inapplicable"/>
  </valList>
 </alternate>
</content>
    
Declaration
teidata.xTruthValue = xsd:boolean | ( "unknown" | "inapplicable" )
Note

In cases where where uncertainty is inappropriate, use the datatype teidata.TruthValue.

2.5.23. teidata.xpath

teidata.xpath defines attribute values which contain an XPath expression.
Moduletei — SPEAR Schema Customization
Used by
Content model
<content>
 <textNode/>
</content>
    
Declaration
teidata.xpath = text
Note

Any XPath expression using the syntax defined in 6.2..

When writing programs that evaluate XPath expressions, programmers should be mindful of the possibility of malicious code injection attacks. For further information about XPath injection attacks, see the article at OWASP.

Date: This edition of the SPEAR TEI Customization entails a significant revision to the original schema constraining the TEI P5 All. It fully integrates SPEAR and the most up-to-date version of the Syriaca.org knowledge graph, including the Syriaca.org Taxonomy.