XML Contract
<CONTRACT> SupplyContract
<ONTOLOGY> ISO 20xx </ONTOLOGY>
<PARTY> entity.party.Customer
<DESCRIPTION>The Customer may order Product from the Supplier.</DESCRIPTION>
<FULFILLɮ, process.purchase.Order</FULFILL>
<DESCRIPTION>The Customer shall pay the Supplier within thirty...</DESCRIPTION>
<FULFILL> END, process.purchase.Pay</FULFILL>
<PARTY> entity.party.Supplier
<DESCRIPTION>The Supplier shall ship the Product via the Shipper...</DESCRIPTION>
<FULFILLɰ, process.sale.Ship</FULFILL>
<VIOLATEɯ, process.sale.Reject</VIOLATE>
<DESCRIPTION>Should the Supplier fail to ship, it shall pay a....</DESCRIPTION>
<FULFILL>END, process.sale.PayPenalty</FULFILL>
<PARTY> entity.party.Shipper
<DESCRIPTION> The Shipper shall deliver the shipment within ten...</DESCRIPTION>
<FULFILLɱ, process.ship.Deliver</FULFILL>
Notes:
The power of XML to structure a document, and to tag its content with labels to give it meaning, provides the opportunity to define policies and the processes by which they are enforced. To illustrate this, the supply contract is translated into an equivalent XML document. The textual form of the document can be reconstructed from the <DESCRIPTION> sections, including its party and clause elements.
Each <CONTRACT> has a name and two or more <PARTY> sections, each of which is also named, and contains one or more clauses. The types of clause include <PERMIT>, <PROHIBIT> and <OBLIGE>, each defining a right or obligation of a party. The actions that flow from a state of affairs include <FULFILL>, <VIOLATE> and <CANCEL>, each of which cause another state of affairs, usually, but not always, through instantiating a process.