TEI-P5-Dokumentgrammatik

für das IDS-Textmodell

Institut für deutsche Sprache

4. Oktober 2011

http://www.blackmesatech.com/2011/09/ids/


Überblick

Ziel der Arbeit

Ziel der Arbeit ist es,
das IDS-Textmodell*
in einer Dokumentgrammatik zu beschreiben
die den Anforderungen von TEI P5 konform ist.

Das IDS-Textmodell

Das IDS-Textmodell tritt zutage:
  1. in der XML-Auszeichnung vom DeReKo;
  2. in der IDS-XCES Dokumenttyp-Definition (DTD);
  3. in den Voraussetzungen der IDS-Software.

Die DTD ids-xces.dtd

Die jetzt vorhandene DTD ids-xces.dtd hat lange Wurzeln:
  • TEI P3
  • CES
  • XCES
  • IDS-XCES

TEI P3

  • sehr allgemein
  • sehr große Zielsprache
  • Übermenge der Zielsprache
  • erweiterbar / anpassungsfähig

Corpus Encoding Standard (CES)

  • Untermenge der Sprache TEI P3
  • kleinere Zielsprache (korpuslinguistische Texte)
  • Übermenge der Zielsprache
  • Definition mittels einer Anpassungsschicht

Corpus Encoding Standard (CES)

Die DTD kann auch als Einzeldatei realisiert werden:

XCES: (XML) Corpus Encoding Standard

IDS-XCES

IDS-P5 (I5)

Bestimmung der zu definierenden Sprache

Bedingungen:
  • I5 : P5 ≃ IX : P3
  • L(I5) ⊆ L(P5)
  • L(I5) ≡ L(IX)

Schreibweisen

P3, P4, P5 = TEI P3, TEI P4, TEI P5
CES, XCES
IX = ids-xces.dtd
I5 = neu zu definierende Sprache / Dokumentgrammatik
L(x) = die Sprache, die x erkennt / definiert
E(x) = die Elemente der XML-Sprache bzw. Dokumentgrammatik x
DRK = DeReKo (als Dokumentmenge)

Bestimmung der zu definierenden Sprache (bis)

Bedingungen:
  • I5 : P5 ≃ IX : P3
  • L(I5) ±⊆ L(P5)
  • L(I5) ≡ L(IX) (?)
  • L(I5) ≃ L(IX)
  • DRK ⊆ L(I5)
  • DRK ⊊ L(I5) (empirisch zu beobachten)
  • DRK = L(I5) (Ziel? Nichtziel?)

Herstellung der Dokumentgrammatik

TEI P5 definiert eine Anpassungsschicht mittels ODD-Dateien (‘One Document Does it all’). Die ODD-Datei darf:
  • TEI-Moduln
  • TEI-elemente innerhalb e. Moduls
  • Attibute innerhalb e. Moduls
ein- und ausblenden.

Moduln einblenden

Zum Beispiel:
<TEI ...> ...
  <specGrp xml:id="specgroup-core">
    <moduleRef key="tei"/><!-- required -->
    <moduleRef key="core"/>
    <!--* abbr address analytic author bibl biblScope biblStruct
	* corr date distinct editor foreign gap gloss head
	* hi imprint item l label lb lg list measure mentioned
	* monogr name note num orig p pb ptr pubPlace publisher 
	* q quote ref reg respStmt sp speaker stage term time title
	*-->
      <p>Delete unneeded elements.</p>
      <specGrpRef target="#specgroup-core-deletions"/>
      <p>Rename some elements.</p>
      <specGrpRef target="#specgroup-core-renamings"/>
  </specGrp>
  ...
</TEI>

Elementtypen ausblenden

Zum Beispiel:
    <elementSpec ident="add" module="core" mode="delete"/>
    <elementSpec ident="addrLine" module="core" mode="delete"/>
    <elementSpec ident="binaryObject" module="core" mode="delete"/>
    <elementSpec ident="cb" module="core" mode="delete"/>
    <elementSpec ident="choice" module="core" mode="delete"/>

Aufteiling der Elementtypen

I5 soll:
  • Elemente aus TEI P5 üernehmen
  • Zusatzelemente aus XCES neu definieren
  • Zusatzelemente von IDS-XCES neu definieren
D.h. E(I5) =
(E(IX) ∩ E(P5))
∪ (E(IX) ∩ (E(XCES) \ E(P5))
∪ (E(IX) ∩ (E(XCES) ∪ E(P5))

Exkurs: Werkzeugentwicklung

Der Vergleich von mehreren Listen erfordert Geduld und Akribie. D.h. er eignet sich als Maschinenbeschäftigung.
Aber ... wie?
  1. XML-kodierung der betr. Dokumentgrammatiken
  2. Vergleich durch XQuery
  3. maschinelle Generierung der ODD-Vereinbarungen

XML-kodierung von IX

<dtd>

  <desc>This document
  (<code>2011/blackmesatech/IDS/interim/ids_xces_onefile.v3.xml</code>)
  is an XML representation of
  <code>2011/blackmesatech/IDS/interim/onefile.dtd</code> made by
  dtdxml.pl on <date value="2011-09-11">2011-09-11</date></desc>

  <elemdecl gi="gloss">
    <star>
      <or>
	<elem>#pcdata</elem>
	<or>
	  <elem>abbr</elem>
	  <or>
	    <elem>date</elem>
	    <or>
	      <elem>num</elem>
	      <or>
		<elem>dateRange</elem>
		<or>
		  <elem>numRange</elem>
		  <or>
		    <elem>timeRange</elem>
		    <or>
		      <elem>measure</elem>
		      <or>
			<elem>name</elem>
			<or>
			  <elem>term</elem>
			  <or>
			    <elem>time</elem>
			    <or>
			      <elem>w</elem>
			      <or>
				<elem>corr</elem>
				<or>
				  <elem>distinct</elem>
				  <or>
				    <elem>foreign</elem>
				    <or>
				      <elem>gap</elem>
				      <or>
					<elem>hi</elem>
					<or>
					  <elem>list</elem>
					  <or>
					    <elem>mentioned</elem>
					    <or>
					      <elem>orig</elem>
					      <or>
						<elem>q</elem>
						<or>
						  <elem>ref</elem>
						  <or>
						    <elem>reg</elem>
						    <or>
						      <elem>s</elem>
						      <or>
							<elem>stage</elem>
							<or>
							  <elem>title</elem>
							  <or>
							    <elem>table</elem>
							    <elem>xref</elem>
							  </or>
							</or>
						      </or>
						    </or>
						  </or>
						</or>
					      </or>
					    </or>
					  </or>
					</or>
				      </or>
				    </or>
				  </or>
				</or>
			      </or>
			    </or>
			  </or>
			</or>
		      </or>
		    </or>
		  </or>
		</or>
	      </or>
	    </or>
	  </or>
	</or>
      </or>
    </star>
  </elemdecl>
  <attlist gi="gloss">
    <att>
      <name>id</name>
      <type>id</type>
      <dft>
	<implied/>
      </dft>
    </att>
    <att>
      <name>n</name>
      <type>cdata</type>
      <dft>
	<implied/>
      </dft>
    </att>
    <att>
      <name>xml:lang</name>
      <type>cdata</type>
      <dft>
	<implied/>
      </dft>
    </att>
    <att>
      <name>lang</name>
      <type>idref</type>
      <dft>
	<implied/>
      </dft>
    </att>
    <att>
      <name>target</name>
      <type>idref</type>
      <dft>
	<implied/>
      </dft>
    </att>
  </attlist>

Vergleich durch XQuery

(: find the IDS elements that appear in the TEI Guidelines :)

declare namespace TEI = "http://www.tei-c.org/ns/1.0";

declare variable $dir.TEI := "file:/home/TEI";
declare variable $dir.IDS := "file:/Users/cmsmcq/2011/blackmesatech/IDS";
declare variable $P5 := doc(
  concat($dir.TEI,
        "/P5/Source/Guidelines/en/guidelines-en.xml"
        ));
declare variable $ids-xces := doc(
  concat($dir.IDS,
        '/interim/ids_xces_onefile.v3.xml'
        ));

<elements>{
       for $e in $ids-xces/dtd/elemdecl
       let $gi := string($e/@gi),
           $elemspec := $P5//TEI:elementSpec
                       [@ident = $gi]
     where $elemspec
  order by $gi
    return <e gi="{$gi}" module="{$elemspec/@module}"/>
}</elements>

Generierung der ODD-Vereinbarungen

(: ... :)
    return <elementSpec  module="{$module}" ident="{$teigi}" mode="change">
              <altIdent>{$idsgi}</altIdent>
           </elementSpec>
(: ... :)

Bereitstellung der Dokumentation

Die ODD-Datei stellt ein literarisches Programm dar:
  • Einbettung der Vereinbarung in ein Prosadokument
  • Möglichkeit, menschen- u. maschinenlesbaren Text ineinander zu verflechten

Beschreibungen der Elementtypen und Attribute

  • teils aus TEI P5 übernommen
  • teils aus XCES übernommen
  • teils neu geschrieben

Stand der Arbeit

  • Version 0,1: 2.12.2010
  • Version 0,2: in Vorbereitung
  • Validierung der Beispieldaten
  • Auflistung des Mengenunterschieds L(IX) \ DRK
  • Bemerkungen zu einer möglichen Verfeinerung der Dokumentgrammatik