The Wright Brothers' 1908 contract in Akoma Ntoso and LegalRuleML
The Articles of Agreement of February 10, 1908, between the Signal Corps, United States Army, and Wilbur and Orville Wright, for the Army’s first airplane, with Signal Corps Specification No. 486 attached. The price was $25,000, on a sliding scale by the speed attained on trial.
View the contractThe rest of this archive is public law: constitutions, statutes, treaties, declarations and a court decision. This one is an experiment, a private agreement. Akoma Ntoso wasn’t designed for contracts, and extensions in that area are being considered, so this page reports how Claude modeled the contract, what it had to add, and what went wrong. It covers one short contract, so it’s a starting list and not a survey.
What was done
- The contract: Claude typed the text from four page images and marked it up in Akoma Ntoso 2.0 (AKN 3.1).
- The specification: The contract says the specification forms part of it, so it’s included as an attachment.
- The rules: Claude wrote a sample of the contract’s obligations, permissions and conditions in LegalRuleML 1.0, in a second attachment, inside the Akoma Ntoso
<foreign>element. - The appearance: A CSS stylesheet renders the XML directly, after the original form: blackletter headings, a period roman for the print, a typewriter face with dashed leaders for the entries, the receipt stamp, and script for the signatures. The fonts are modern, so it isn’t a facsimile, and the signatures aren’t the real ones.
The XML validates against the Akoma Ntoso 2.0 schema, and all 61 eIds are unique. The LegalRuleML was not validated, for the reason given under Issues below.
The overall shape is:
<akomaNtoso>
<doc name="contract">
<meta>...</meta>
<preface>...</preface>
<preamble>...</preamble>
<mainBody>articles 1 to 12</mainBody>
<conclusions>signatures and approval</conclusions>
<attachments>
<attachment><doc name="specification">...</doc></attachment>
<attachment>
<doc name="legalRuleML">
<mainBody><foreign><lrml:LegalRuleML>...</lrml:LegalRuleML></foreign></mainBody>
</doc>
</attachment>
</attachments>
</doc>
</akomaNtoso>
What fit without strain
| Feature | Markup |
|---|---|
| Articles and numbered paragraphs | article, paragraph, list, point |
| Opening recital of the parties | preamble, with party and as |
| Blanks left empty | fillIn |
| Text missing from the source | omissis |
| Drafting note on the form | authorialNote |
| Specification made part of the contract | attachment holding a doc |
| Cross-references | ref, rref |
The extensions
Nothing outside the schema was added to the Akoma Ntoso. Where it had no element, the generic elements carry the meaning in @name, and foreign markup is in <foreign>.
| Feature | Generic markup | Why it was needed |
|---|---|---|
| Document type | doc name="contract" | There’s no contract document type. |
| Completed blank | inline name="filled" | fillIn models an empty blank. Nothing marks one that has been completed. |
| Typed text in a printed form | inline name="typed", class="typed" | The printed form and the entered text are separate layers, with no standard way to tell them apart. |
| The goods | inline name="item" | There’s no element for the subject of a contract. |
| Receipt stamp | block name="receivedStamp", inline name="stampLine" | There’s no element for an endorsement or stamp. |
| Signature blocks | container name="signatures", container name="signatureBlock" | signature exists, but nothing groups a signer with witnesses. |
| Later approval | container name="approval" | There’s no model for approval by a third party after signing. |
| Rights and duties | foreign with LegalRuleML | Akoma Ntoso records the text, not who owes what. |
Where Akoma Ntoso stretched
signaturecan’t carryas. The schema rejected it, so a signer’s role can only sit on apersoninside. The witnesses have arefersToand no role.quantityrequiresrefersToand has no unit. Every value needed a concept reference.normalizedis a plain string, so it holds a bare number, and no attribute says dollars or miles per hour.- A date has no type. The delivery deadline is a
datepointing to a concept. There’s no standard way to say deadline, effective date or expiry. - Parties have no place of their own in the metadata.
FRBRauthorrepeats, so the Signal Corps and Wright Brothers are both listed with their roles. That calls the parties authors, and the Wrights only signed the Army’s form. - FRBR naming assumes a public jurisdiction. The URI is
/akn/us/doc/contract/1908-02-10/signal-corps-wright-brothers, with an invented name. Private contracts have no registry or number to build on. - Life cycle events don’t suit contracts. The deadline was extended, and delivery and acceptance followed.
eventRefallows onlygeneration,amendmentandrepeal, and the extensions aren’t in this copy, so only execution is recorded. - Incorporation has no meaning in the markup. The contract says the advertisement, specification and proposal form part of it. An attachment shows that they’re attached, not that they bind, or which prevails in a conflict.
LegalRuleML
What it added
- Who owes what: Obligations, permissions and prohibitions, each with a bearer, cover delivery, payment, instruction, assignment and the bar on Members of Congress.
- Remedies: A penalty and a reparation connect the failure to deliver with the charge for buying elsewhere.
- Link to the text:
LegalReferenceandAssociationtie each statement to theeIdof its article or paragraph. This was the cleanest part of the pairing.
Where it was awkward
- Sliding price: The scale needed one rule per speed. The real rule is arithmetic, and a table of facts hides that.
- Rounding: The scale gives whole miles per hour. The Wrights averaged 42.58 and were paid at 42, or 120 percent: $30,000. The contract doesn’t state that rule, so it’s an interpretation. LegalRuleML has
Alternativesfor that, but it isn’t modeled here. - “Should” and “must”: The specification mixes them, along with “it is desirable.” All the statements are marked strict, which flattens that difference.
- Deadlines: Dates are plain data arguments, not LegalRuleML temporal parameters.
- Agents across standards:
AgentusessameAsto point at Akoma Ntoso references. It works, but nothing defines that link. - Conditions: Article XI, which makes the contract depend on an appropriation, fits only loosely as a constitutive rule.
Embedding it
<foreign>took the LegalRuleML with no change. The Akoma Ntoso schema doesn’t check what’s inside.- A separate attachment was the neatest home, since the rules aren’t part of the contract’s text. It does need its own
doc,metaand a stand-in FRBR identity. - The stylesheet hides the rules, so a reader sees only the contract and has to open the XML to see them.
Issues
The source
- Image quality: The only copy available was four images of a later reprint, about 800 pixels wide. Nobody has proofread the text against a better copy.
- Lost text: The reprint lacks the end of Article V and the start of Article VI. Both are marked
omissis, and the number[ART. VI.]is inferred. - The specification: A sentence and three paragraphs (Preliminary, Acceptance, Inspection) fall between the images, so they come only from a web transcription.
- Conflicting sources: The transcription gives 50 per cent at 36 miles per hour, and the image gives 60. Another history’s scale differs too. The image governs.
- The proposal: The contract says the Wrights’ proposal is attached, but it wasn’t available.
- Illegible parts: Two witness signatures are marked
[not read], the two others are best readings, and the stamp is partly inferred. - Page furniture: The reprint’s heading and page numbers aren’t part of the contract and were left out.
The modeling
- Rules are a sample: They cover the articles except Article V, and only paragraphs 4 to 7 and 13 of the specification.
- Rules are an interpretation: Claude wrote them, and no one with legal training has reviewed them.
- No schema check on the rules: The LegalRuleML schema couldn’t be loaded in the environment Claude worked in. The structure was checked by hand against the schema’s content models, so errors are possible.
- Placeholder vocabulary: The predicates under the
wb:prefix are illustrative. Their address doesn’t resolve to a published vocabulary. - Footnote placement: The note on Article X sits at the foot of the signature page in the original. Here it follows the article.
Questions for an extension
- Should
contractbe a document type, or isdoc name="contract"enough? - Should a completed blank be a form of
fillIn? - Should
quantityhave a unit, anddatea type? - How should parties appear in the metadata?
- Which life cycle events should contracts have?
- Should LegalRuleML stay in
foreign, or should there be a defined binding?
Files
- wright-brothers-contract-1908.xml: the Akoma Ntoso document, with the rules
- wright-brothers-contract-1908.css: the stylesheet that renders it
- README.md: sources and credits
- EXTENSION-NOTES.md: the working notes behind this report