Wie zegt wat? Voorbeeld van een XML schema mapping.

Geplaatst op 14-01-2010 door Maarten Marx | Uncategorized | tags: | comment image Geen reacties »

In een aantal blogs hebben we XPath expressies laten zien waarmee heel eenvoudig alle woorden gezegd door een bepaald persoon in een debat in de Tweede Kamer opgepikt kunnen worden. Hier leggen we uit wat daarbij komt kijken.

Als je de broncode bekijkt van een debat gepubliceerd op tweedekamer.nl (dit kan met de knop “View Page Source”), zie je hoe een computer de code moet lezen. Hier is een voorbeeld uit het debat over het Rapport Davids:

<p>Minister <strong>Balkenende</strong>:</p>
<p>Ja, wat doe ik hier eigenlijk?</p>
<p>De <strong>voorzitter</strong>:</p>
<p>Ja, de minister-president staat er ook nog steeds.</p>
<p>Minister <strong>Balkenende</strong>:</p>
<p>En het is al kwart voor drie.</p>
<p>Mevrouw <strong>Kant</strong> (SP):</p>
<p>Een aantal uren geleden had ik niet gedacht dat u er nog zou staan.</p>

Uit de structuur is dus niet eenvoudig op te maken wie wat zegt.

Wij hebben een transformatie programma geschreven wat dit stukje HTML code omzet in de volgende XML code:

<spreker  naam="Balkenende" partij="" soort="Minister" >
  <p>Ja, wat doe ik hier eigenlijk?</p>
</spreker>
<spreker  naam="Ten Hoopen" partij="" soort="Voorzitter" >
  <p>Ja, de minister-president staat er ook nog steeds.</p>
</spreker>
<spreker naam="Balkenende" partij="" soort="Minister" >
  <p>En het is al kwart voor drie.</p>
</spreker>
<spreker naam="Kant" partij="SP" soort="Kamerlid" >
  <p>Een aantal uren geleden had ik niet gedacht dat u er nog zou staan.</p>
</spreker>

De code doet een aantal dingen. We lichten er één uit:

  1. In de structuur wordt duidelijk gemaakt wie wat zegt. Alle paragrafen gesproken door een persoon zijn genest in een spreker element.

Dit is een voorbeeld van een mapping tussen twee document-centrische XML schemas.
Het eerste schema is prima leesbaar voor mensen. Het tweede, veel rijkere, schema is daarnaast ook leesbaar en eenvoudig bevraagbaar door computerprogrammas.

De mapping is eenvoudig in woorden te beschrijven: Alle paragrafen na een paragraaf met een spreker genaamd X, en tot de eerstvolgende paragraaf met een spreker worden gesproken door X. Echter, deze transformatie kan niet eenvoudig in de huidige XML querytalen XPath en XQuery worden uitgedrukt.

Aan de Universiteit van Amsterdam wordt onderzoek gedaan naar de ontwikkeling van talen die dit soort mappings tussen document-gebaseerde XML eenvoudig en efficient kunnen uitdrukken.
Die talen kunnen gebaseerd worden op de tijdslogica met de connectieven sinds en totdat die in de informatica veel gebruikt wordt om te redeneren over de correctheid van programmas.
De hierboven beschreven transformatie is een voorbeeld van een transformatie die totdat (until) gebruikt.

Reageer

Je moet ingelogd zijn om te kunnen reageren.