Skip to main content
Enrichment is an experimental feature that is currently only available through the Isaacus Beta Program. You can apply for access here.
The Isaacus Legal Graph Schema (ILGS) is a knowledge graph schema for representing the structure and entities referenced within legal documents. ILGS serves as the output format of our document enrichment models such as Kanon 2 Enricher, which convert unstructured documents into rich ILGS graphs. This specification formally defines version 1.0.0 of ILGS. If you’re looking for a practical guide on how to use ILGS, check out our enrichment documentation.

Overview

ILGS is first and foremost a schema for representing information expressed in documents. Accordingly, the root of every ILGS graph is a Document node and every other node in an ILGS graph is anchored to a Document node through Span nodes. Span nodes are well-nested, globally laminar (ie, non-crossing) text spans representing discrete portions of content. Because Spans are well-nested and laminar, they implicitly form (after collapsing duplicates) an ordered, rooted containment tree of intervals within a document’s text. This makes traversal, rendering, and reasoning over documents trivial. Depth-first search, for example, can be used to navigate Spans efficiently with linear complexity in the worst case. Further, stacks can be used to render Spans into human-readable markup languages such as HTML, XML, and Markdown. In addition to modeling the textual structure of documents through Spans, ILGS also models transtextual and non-textual entities such as External Documents, Locations, and Persons. These entities, although anchored to Spans, can have relationships that transcend the textual structure of a document. Quotes, for instance, can be attributed to Persons, and Persons can, in turn, be linked to other Persons as parent entities, Locations as their places of residence, and personal information such as Emails, Websites, Phone Numbers, and ID Numbers. ILGS’ ability to simultaneously model textual structure and transtextual and non-textual entities in a single shared, document-grounded graph makes it especially useful for applications requiring one or more of the following:
  1. World modeling: ILGS offers rich global attributes for world entities such as people, places, and times that can be linked across documents to build a knowledge graph of the world as represented through a corpus.
  2. Contextualization: ILGS allows arbitrary slices of a document to be understood with respect to the document as a whole as well as the world at large through span-level annotations of entities and their relationships.
  3. Markup: ILGS labels both local and global textual and hypertextual features of documents such as headings, junk text, sections, crossreferences, terms, and quotations, enabling documents to be rendered in rich human-readable formats such as HTML, DOCX, and Markdown.

Concepts

An ILGS graph is a graph of nodes, attributes, and relationships rooted in a Document node and anchored to a Document’s text through Span nodes. There are 14 types of nodes representable in ILGS:
  1. Document: a real-world document constituting the root of an ILGS graph under which all other nodes live.
  2. Span: a well-nested and globally laminar span of Unicode code points representing a discrete portion of a Document’s content.
  3. Segment: a structurally distinct section of a Document.
  4. Crossreference: a reference from a Span to a single Segment or span of Segments.
  5. Location: a place identified in a Document.
  6. Person: a legal person (eg, an individual, company, or government) identified in a Document.
  7. Email: an email address identified in a Document as belonging to a Person.
  8. Website: a website identified in a Document as belonging to a Person.
  9. Phone Number: a phone number identified in a Document as belonging to a Person.
  10. ID Number: an ID number identified in a Document as belonging to a Person.
  11. Term: a term assigned a defined meaning within a Document.
  12. External Document: an external document referenced in a Document.
  13. Quote: a quotation in a Document.
  14. Date: a date identified in a Document belonging to a supported date type.
Every node has a set of required attributes. Attributes may take on a primitive type (eg, a string or integer), node, reference to a node, or product, union, or other combination thereof. A node may have a relationship with another node by either being contained within one of its attributes or containing it within an attribute (eg, Persons live under a Document’s persons attribute) or through a reference to its ID (eg, a Quote can be attributed to a source Person through its source_person attribute containing the Person’s ID).

IDs

Some ILGS nodes will have IDs, which are unique string identifiers used to refer to nodes from other nodes. IDs are formatted as {type_code}:{identifier}, where {type_code} is a lowercase code representing the node’s type (eg, per for Persons) and {identifier} is a string identifier that is unique within the node type.

Isaacus Jurisdiction Codes (IJCs)

Documents and External Documents have a special jurisdiction attribute formatted as an Isaacus Jurisdiction Code (IJC), a unique string identifier for a legal jurisdiction. IJCs are formatted as a first-level jurisdiction code optionally followed by, where known and applicable, a hyphen and a second-level jurisdiction code. First-level jurisdiction codes are either uppercase ISO 3166-1 alpha-2 two-letter country codes or INT for international law or EU for European Union law. Second-level jurisdiction codes are either uppercase ISO 3166-2 subdivision codes or FED for the federal jurisdiction of a country with a federal system. US, GB-ENG, and INT are examples of valid IJCs, while US-ENG, INT-UN, GB-FED, and AUS are not.

Nodes

This section defines the 14 types of nodes representable in ILGS, their attributes, relationships, and constraints.

Document

A Document represents a real-world document and serves as the root of an ILGS graph under which all other nodes live. The attributes of Documents are provided below.

version (Version)

version is a string representing the major version of ILGS a Document conforms to in the format {schema}@{number}, where {schema} is the name of the schema (ie, ilgs) and {number} is the major version number (eg, 1). Currently, the only possible value for this attribute is ilgs@1.

text (string)

A Document’s text attribute represents its full, original text.

title (Span | null)

title points to a Span corresponding to a Document’s title if known and extractable, and is null otherwise. A title Span cannot overlap with a subtitle Span (ie, it cannot contain, be contained within, or be identical to a subtitle Span).

subtitle (Span | null)

subtitle points to a Span corresponding to a Document’s subtitle if known, extractable, and the Document has a title, and is null otherwise. A Document will only be considered to have a subtitle if it is clearly demarcated from the Document’s title. A Document without a title cannot have a subtitle. A subtitle Span cannot overlap with a title Span.

type (Document Type)

type is a string representing a Document’s type, being one of the following:
  • statute: primary legislation such as acts, bills, codes, and constitutions.
  • regulation: secondary legislation such as rules, statutory instruments, and ordinances.
  • decision: judicial or quasi-judicial decisions such as court judgments, judicial opinions, and tribunal rulings.
  • contract: agreements such as contracts and covenants.
  • other: all other types of documents that do not fit into any of the predefined types.

jurisdiction (IJC | null)

jurisdiction represents the jurisdiction of a Document formatted as an IJC if known, and is null otherwise.

segments (array[Segment])

segments contains an array of Segments representing structurally distinct sections of a Document’s content.

crossreferences (array[Crossreference])

crossreferences contains an array of Crossreferences representing references from Spans to individual Segments or spans of Segments within a Document.

locations (array[Location])

locations contains an array of Locations identified within a Document.

persons (array[Person])

persons contains an array of Persons identified within a Document.

emails (array[Email])

emails contains an array of Emails identified within a Document as belonging to Persons.

websites (array[Website])

websites contains an array of Websites identified within a Document as belonging to Persons.

phone_numbers (array[Phone Number])

phone_numbers contains an array of Phone Numbers identified within a Document as belonging to Persons.

id_numbers (array[ID Number])

id_numbers contains an array of ID Numbers identified within a Document as belonging to Persons.

terms (array[Term])

terms contains an array of Terms assigned definite meanings within a Document.

external_documents (array[External Document])

external_documents contains an array of External Documents referenced within a Document.

quotes (array[Quote])

quotes contains an array of Quotes within a Document.

dates (array[Date])

dates contains an array of Dates identified within a Document belonging to a supported date type.

headings (array[Span])

headings contains an array of Spans corresponding to headings within a Document. headings cannot be nested within each other.

junk (array[Span])

junk contains an array of Spans corresponding to non-operative, non-substantive junk content such as headers, footers, page numbers, and OCR artifacts. junk Spans cannot be nested within each other.

Span

A Span is a span of Unicode code points constituting a discrete portion of a Document’s content. Spans are used to represent references to entities (eg, pinpoints), textual attributes of entities (eg, names), and the textual structure of a Document (eg, headings), all grounded in a Document’s text. The start and end of a Span are defined by its start and end attributes. Spans are zero-based. The first Unicode code point in a Document is at index 00. Spans are half-open. The end of a Span is exclusive. Thus, a Span with the start 00 and end 55 would cover the Unicode code points at indics 00, 11, 22, 33, and 44, but not 55. Spans cannot be empty. The start index must always be less than the end index. The start index of a Span will always land on a non-whitespace character, and the index immediately preceding the end index of a Span will always land on a non-whitespace character. All Spans anywhere in a Document are well-nested and laminar with respect to each other. It is impossible for any two Spans to partially overlap. Spans can only be either completely disjoint or wholly contained. No two Spans of the same type (ie, representing the same attribute of the same node type) can be duplicated or have the exact same pair of start and end indices. Some Spans and groups of Spans are incapable of nesting. For example, headings cannot be nested within themselves, and titles and subtitles as a group cannot be nested. Some Span groups are also incapable of overlapping. Overlapping includes containment and duplication. Note that when using programming languages other than Python (which uses zero-based, half-open, Unicode code point-spaced string indexing), Span indices may need to be translated accordingly. For example, JavaScript slices into UTF-16 code units instead of Unicode code points.

start (integer)

start is the index of the first Unicode code point covered by a Span starting at 00. start will always be less than end and will never land on whitespace.

end (integer)

end is the index of the first Unicode code point not covered by a Span starting at 00. For example, a Span covering the first five Unicode code points of a Document (00, 11, 22, 33, and 44) would have an end of 55. end will always be greater than start. The Unicode code point immediately preceding end will never be whitespace (ie, the actual end of a Span).

Segment

A Segment constitutes a structurally distinct section of a Document’s content. Segments are used to model the structure of a Document such as its chapters, articles, clauses, paragraphs, and items. Every Segment corresponds to a single Span. Segment Spans can be nested. When a Segment contains another Segment, the former is considered the parent and the latter the child. There is no limit on the number of children a Segment can have, nor is there a maximum depth of Segment nesting.

id (ID)

id is an ID for a Segment formatted as seg:{identifier}.

kind (Segment Kind)

kind is a string representing the structural type of a Segment, being one of the following:
  • container: a structural or semantic grouping of content, such as a chapter. containers can contain Segments of any Kind or none at all.
  • unit: a single syntactically independent unit of text such as a paragraph. units can only contain items and figures.
  • item: a syntactically subordinate unit of text such as an item in a run-in list. items can only contain other items. items are conceptually distinct from list items—it is perfectly possible to encounter list items that are syntactically independent of their surrounding items just as it is possible to encounter dependent clauses that do not appear as part of a list.
  • figure: a visually structured or tabular unit of content, such as a diagram, equation, or table. figures cannot contain Segments.

type (Segment Type | null)

type is a string representing the addressable type of a Segment within a Document’s referential scheme and hierarchy, whether defined explicitly (eg, by headings, such as “Section 2. Definitions”), implicitly (eg, by way of reference, such as “as defined in Section 2”), or by convention (eg, [42] in a judgment often denotes a paragraph, independent provisions in statute are often sections, etc.). If a Segment’s addressable type is not known, its type will be set to null. Although many Segment Types lexically coincide with syntactic constructs, they should be thought of purely as distinct formal citable units. Most paragraphs in the syntactic sense will not have the paragraph type, for example. That type is reserved for Segments that would formally be cited as a “Paragraph” within a Document’s referential scheme. The following Segment Types are supported:
  • title
  • book
  • part
  • chapter
  • subchapter
  • division
  • subdivision
  • subpart
  • subtitle
  • table_of_contents
  • article
  • section
  • regulation
  • rule
  • clause
  • paragraph
  • subarticle
  • subsection
  • subregulation
  • subrule
  • subclause
  • subparagraph
  • item
  • subitem
  • point
  • indent
  • schedule
  • annex
  • appendix
  • exhibit
  • recital
  • signature
  • note
  • figure
  • table
  • formula
The following Segment Types are exclusive to the container Segment Kind:
  • title
  • book
  • part
  • chapter
  • subchapter
  • division
  • subdivision
  • subpart
  • subtitle
  • table_of_contents
The figure Segment Kind only supports the following Segment Types, which are also all exclusive to it:
  • figure
  • table
  • formula
All other combinations of Segment Kinds and Segment Types are possible.

category (Segment Category)

category is a string representing the functional category of a Segment, being one of the following:
  • front_matter: non-operative contextualizing content occurring at the start of a Document such as a preamble or recitals.
  • scope: operative content defining the application or interpretation of a Document such as definition sections and governing law clauses.
  • main: operative, non-scopal content.
  • annotation: non-operative annotative content providing explanatory or referential information such as commentary, footnotes, and endnotes.
  • back_matter: non-operative contextualizing content occurring at the end of a Document such as authority statements.
  • other: content that does not fit into any of the other categories.

type_name (Span | null)

type_name is a Span within a Segment defining its type (for example, “Section” in “Section 2 - Definitions”) or null if no such Span exists. The type_name of a Segment is conceptually distinct from its Type. Segment Types are classifications, whereas a Segment’s type_name may correspond to a type not currently supported by ILGS, for example, a “Volume”. A Segment’s type_name Span must occur within the bounds of the Segment’s Span and cannot overlap with another type_name, code, or title Span.

code (Span | null)

code is a Span within a Segment defining its code, number, letter, or other designator (for example, “2” in “Section 2 - Definitions”) or null if no such Span exists. A Segment’s code Span must occur within the bounds of the Segment’s Span and cannot overlap with another code, type_name, or title Span.

title (Span | null)

title is a Span within a Segment corresponding to its title or null if no such Span exists. A Segment’s title Span must occur within the bounds of the Segment’s Span and cannot overlap with another title, type_name, or code Span.

parent (ID | null)

parent is the ID of the parent Segment immediately containing a Segment or null if the Segment has no parent (ie, it is a root-level Segment). Segments with the container and unit Kinds can only have Segments with the container Kind as parents or null. items cannot have figures as parents. figures cannot have items or figures as parents.

children (array[ID])

children is an array of IDs of Segments immediately contained within a Segment. Segments with the container Kind can contain Segments of any Kind. units can only contain items and figures. items can only contain other items. figures cannot contain any Segments.

level (integer)

level is a non-negative integer representing a Segment’s depth within a Document’s Segment hierarchy starting from 00 for root-level Segments.

span (Span)

span is a Span corresponding to the text of a Segment.

Crossreference

A Crossreference represents a reference within a Document to a single Segment or span of Segments.

start (ID)

start is the ID of the earliest Segment in the Document referenced by a Crossreference. Where a Crossreference targets a single Segment, its start and end will be identical. Where a span of Segments is targeted, the start of a Crossreference will correspond to the Segment targeted by the span having the earliest Span start index and, in cases where multiple targeted Segments share the same start, the largest Span end index (ie, the longest or shallowest targeted Segment starting at the earliest location). For example, suppose there was a Crossreference targeting “Sections 2(a)–10” and there were three Segments starting at the same place where Section 2(a) started: Sections 2, 2(a), and 2(a)(i). Even though Section 2 is the largest Segment starting at that location, it is not being targeted by the Crossreference. Accordingly, the start of the Crossreference would be Section 2(a), not Section 2, nor Section 2(a)(i), which would be smaller than Section 2(a).

end (ID)

end is the ID of the latest Segment in the Document referenced by a Crossreference. Where a Crossreference targets a single Segment, its end and start will be identical. Where a span of Segments is targeted, the end of a Crossreference will correspond to the Segment targeted by the span having the latest Span end index and, in cases where multiple targeted Segments share the same end, the smallest Span start index (ie, the longest or shallowest targeted Segment ending at the latest location). For example, suppose there was a Crossreference targeting “Sections 2(a)–10” and there were three Segments ending at the same place where Section 10 ended: Part II, Section 10, and Section 10(f). Even though Part II is the largest Segment ending at that location, it is not being targeted by the Crossreference. Accordingly, the end of the Crossreference would be Section 10, not Part II, nor Section 10(f), which would be smaller than Section 10.

span (Span)

span is a Span corresponding to the text of a Crossreference within a Document. No two Crossreference Spans can overlap.

Location

A Location represents a place identified within a Document. Merely referring to a place without expressly identifying it will not result in a Location. For example, the city referred to in the phrase “I will be in the city tomorrow”, would not constitute a Location because the identity of the city is not known. By contrast, “New York” in “I will be in New York tomorrow” would constitute a Location. A Location can have a parent Location and any number of child Locations. Location containment is determined jurisdictionally and not geographically. For example, the United States would be the parent of Puerto Rico but would not be contained within the Americas since the Americas is not a legal jurisdiction. Because Locations will only exist in a Document where they are identified in it, it is possible for a Location to have a known parent but have no parent Location set and it is possible for a Location to have a parent Location that is not its most immediate parent but is the most immediate parent among the Locations identified in a Document. For example, in the text “Melbourne is a city in Australia”, there would be two Locations, one for Melbourne and the other for Australia, and the Location corresponding to Melbourne would have its parent set to the ID of the Location corresponding to Australia while the Location corresponding to Australia would have its parent set to null. If the text were instead “Melbourne is a city in the state of Victoria in Australia”, Melbourne’s parent would become Victoria instead of Australia.

id (ID)

id is an ID for a Location formatted as loc:{identifier}.

name (Span)

name is a Span within a Document representing the most proper name of a Location. As an example, a Location referred to as “New York City” in two places in a Document, “NYC” in three places, and “the Big Apple” in one place would have its name set to whichever Span most confidently represented the proper name of the Location, being one of the “New York City” Spans. No two Location name Spans can overlap, nor can they overlap with any Location’s mentions Spans except that every Location’s name Span will always also appear in its mentions.

type (Location Type)

type is a string representing the type of a Location, being one of the following, in order of least to most granular, ignoring the other type:
  • country
  • state
  • city
  • address
  • other
Locations can only contain Location Types no less granular than their own Type unless their Type is other. For example, a Location with the state Type can only have city, address, and other Types as children, but not country Types.

parent (ID | null)

parent is the ID of whichever Location most immediately contains a Location or null if the Location has no ancestors identified in the Document. A country can only have another country as its parent or a Location with the other Type. A state can only have a state or country as its parent or a Location with the other Type. A city can only have a city, state, or country as its parent or a Location with the other Type. An address can have a Location of any Type as its parent. It is impossible for a Location to be its own ancestor at any level.

children (array[ID])

children is an array of IDs of Locations having a Location as their parent. A country can have Locations of any Type as children. A state can have Locations with the state, city, address, and other Types as children. A city can have Locations with the city, address, and other Types as children. An address can have Locations with the address and other Types as children.

mentions (array[Span])

mentions is an array of Spans corresponding to all mentions of a Location within a Document, including its name Span. Thus, mentions will always contain at least one Span. No two Spans in any Location’s mentions can overlap with each other, nor can they overlap with any Location’s name Span except that every Location’s name Span will always also appear in its mentions.

Person

A Person represents a legal person identified within a Document such as an individual, company, or government. Merely referring to a legal person without expressly identifying them will not result in a Person. For example, the client referred to in the phrase “the plaintiff attacked his client”, would not constitute a Person because the identity of the client is not known. By contrast, “John Doe” in “the plaintiff attacked John Doe, his client” would constitute a Person. It is possible for a Person to be identified by a legal office such as the President of the United States or Attorney-General of Australia. A Person can have a parent Person and any number of child Persons. Person parentage is determined based on whether a Person owns, controls, is owned by, or is controlled by another Person or represents another Person where they are identified only in their capacity as a representative (eg, a director) of the other Person. Because Persons will only exist in a Document where they are identified in it, it is possible for a Person to have a known parent but have no parent Person set and it is possible for a Person to have a parent Person that is not its most immediate parent but is the most immediate parent among the Persons identified in a Document.

id (ID)

id is an ID for a Person formatted as per:{identifier}.

name (Span)

name is a Span within a Document representing the most proper name of a Person. As an example, a Person referred to as “Jonathan A. Doe” in two places in a Document, “John Doe” in three places, and “Mr. Doe” in one place would have their name set to whichever Span most confidently represented the proper name of the Person, being one of the “Jonathan A. Doe” Spans. No two Person name Spans can overlap nor can they overlap with any Person’s mentions Spans except that every Person’s name Span will always also appear in its mentions.

type (Person Type)

type is a string representing the type of a Person, being one of the following:
  • natural: a human being in their capacity as a natural legal person, including when representing unincorporated entities such as partnerships and trusts.
  • corporate: a body corporate such as a company, incorporated partnership, or statutory corporation.
  • politic: a body politic, political entity, or part thereof such as a court, state, government, or intergovernmental organization.

role (Person Role | null)

role is a string representing the role of a Person within a Document if known, and is null otherwise. Supported Person Roles are documented in the table below.
plaintiffA party initiating the case that is the subject of a Document.
petitionerA party initiating the petition that is the subject of a Document.
applicantA party initiating the application that is the subject of a Document.
appellantA party appealing the decision that is the subject of a Document.
appelleeA party responding to the appeal that is the subject of a Document if they are explicitly referred to as an “appellee”.
claimantA party making a claim in the case that is the subject of a Document.
complainantA party making a complaint in the case that is the subject of a Document.
defendantA party defending against the case that is the subject of a Document.
respondentA party responding to the petition, appeal, or application that is the subject of a Document.
prior_authorityAn authority (eg, judge, tribunal, court) that made a prior decision in the case that is the subject of a Document. Both individual judges and courts should be annotated with this role where applicable. This is not to be used for authorities cited as precedent, only for those that made prior decisions in the same case.
prosecutorA lawyer prosecuting the case that is the subject of a Document.
defense_counselA lawyer defending the case that is the subject of a Document.
amicusA party filing an amicus curiae brief in the case that is the subject of a Document.
intervenerA party attempting to or that has intervened in the case that is the subject of a Document.
borrowerA party borrowing money or other assets under the agreement that is the subject of a Document, including “mortgagors” and “debtors”.
lenderA party lending money or other assets under the agreement that is the subject of a Document, including “mortgagees” and “creditors”.
guarantorA party guaranteeing obligations under the agreement that is the subject of a Document, including “sureties”.
lesseeA party leasing goods or services under the agreement that is the subject of a Document, including “tenants”.
lessorA party leasing goods or services under the agreement that is the subject of a Document, including “landlords”.
employerA party employing personnel under the agreement that is the subject of a Document.
employeeA party employed under the agreement that is the subject of a Document.
licensorA party licensing intellectual property or other rights under the agreement that are the subject of a Document.
licenseeA party licensed to use intellectual property or other rights under the agreement that are the subject of a Document.
franchisorA party granting a franchise under the agreement that is the subject of a Document.
franchiseeA party granted a franchise under the agreement that is the subject of a Document.
buyerA party purchasing goods or services under the agreement that is the subject of a Document, including “purchasers”, “customers”, and “clients”.
sellerA party selling or providing goods or services under the agreement that is the subject of a Document, including “Vendors”, “Suppliers”, and “Service Providers” (where such parties are actually providing goods or services under the agreement).
contractorA party contracted to perform work or services under the agreement that is the subject of a Document, including “consultants”.
shareholderA party holding shares or equity under the agreement that is the subject of a Document.
joint_venturerA party participating in a joint venture under the agreement that is the subject of a Document.
investorA party investing money or assets under the agreement that is the subject of a Document.
insurerA party providing insurance under the agreement that is the subject of a Document.
insuredA party insured under the agreement that is the subject of a Document.
settlorA party establishing the trust that is the subject of a Document.
trusteeA party managing the trust that is the subject of a Document.
beneficiaryA party benefiting from the trust that is the subject of a Document.
enacting_authorityAn authority (eg, legislature, regulator, Minister/Secretary, President/Prime Minister, tribunal, court, judge) giving legal effect to or authorizing a Document. All relevant individuals and bodies should be annotated with this role where applicable.
empowered_authorityAn authority (eg, government agency, regulator, Minister/Secretary, President/Prime Minister, tribunal, court) empowered by a Document to carry out functions or duties.
debaterA person participating in the debate that is the subject of a Document.
governing_jurisdictionThe jurisdiction whose laws govern a Document.
directorA director or other officer of a corporate legal person mentioned in a Document.
clerkA clerk, notary, or other official certifying, witnessing, filing, recording, registering, or otherwise administering a Document.
witnessA witness witnessing the signing of a Document, or whose testimony is part of the case that is the subject of a Document.
otherA party to the case, agreement, legislation, or regulation that is the subject of a Document that does not fit into any of the other roles.
non_partyA legal person mentioned in a Document that is not a party to the case, agreement, legislation, or regulation that is the subject of a Document.

parent (ID | null)

parent is the ID of whichever Person most immediately owns, controls, is owned by, or is controlled by a Person or represents the Person, or null if the Person has no known ancestor Person. It is impossible for a Person to be its own ancestor at any level.

children (array[ID])

children is an array of IDs of Persons having a Person as their parent.

residence (ID | null)

residence is the ID of a Location corresponding to a Person’s residence if known, and is null otherwise.

mentions (array[Span])

mentions is an array of Spans corresponding to all mentions of a Person within a Document, including its name Span. Thus, mentions will always contain at least one Span. No two Spans in any Person’s mentions can overlap with each other, nor can they overlap with any Person’s name Span except that every Person’s name Span will always also appear in its mentions.

Website

A Website represents a website identified within a Document as belonging to a Person. A website is conceptually distinct from a web page. https://isaacus.com/ is both a website and a web page, whereas https://isaacus.com/startups is just a web page. Different web pages can constitute mentions of the same Website. Websites mentioned in a Document that are not attributable to a Person will not qualify as Website nodes.

url (string)

url is a string representing the normalized URL of a Website in the format https://{host}/.

person (ID)

person is the ID of the Person to which a Website belongs.

mentions (array[Span])

mentions is an array of Spans corresponding to all mentions of a Website within a Document including paths and slugs that are not part of a Website’s normalized URL. Website mentions cannot overlap with each other, nor can they overlap with the mentions of Emails, Phone Numbers, or ID Numbers.

Email

An Email represents an email address identified within a Document as belonging to a Person. Email addresses mentioned in a Document that are not attributable to a Person will not qualify as Email nodes.

address (string)

address is a string representing the normalized email address of an Email in the format {local_part}@{domain}.

person (ID)

person is the ID of a Person to which an Email belongs.

mentions (array[Span])

mentions is an array of Spans corresponding to all mentions of an Email within a Document. Email mentions cannot overlap with each other, nor can they overlap with the mentions of Websites, Phone Numbers, or ID Numbers.

Phone Number

A Phone Number represents a phone number identified within a Document as belonging to a Person. Phone numbers mentioned in a Document that are not attributable to a Person will not qualify as Phone Number nodes.

number (string)

number is a string representing the normalized phone number of a Phone Number in E.123 international notation conforming with local conventions on the use of spaces and hyphens as separators.

person (ID)

person is the ID of a Person to which a Phone Number belongs.

mentions (array[Span])

mentions is an array of Spans corresponding to all mentions of a Phone Number within a Document. Phone Number mentions cannot overlap with each other, nor can they overlap with the mentions of Websites, Emails, or ID Numbers.

ID Number

An ID Number represents an identification number identified within a Document as belonging to a Person. ID numbers mentioned in a Document that are not attributable to a Person will not qualify as ID Number nodes.

number (string)

number is a string representing an ID number.

person (ID)

person is the ID of a Person to which an ID Number belongs.

mentions (array[Span])

mentions is an array of Spans corresponding to all mentions of an ID Number within a Document. ID Number mentions cannot overlap with each other, nor can they overlap with the mentions of Websites, Emails, or Phone Numbers.

Term

A Term represents a term assigned a definite meaning within a Document.

id (ID)

id is an ID for a Term formatted as term:{identifier}.

name (Span)

name is a Span within a Document defining a Term’s name. For example, in the phrase “‘Agreement’ means this contract between the parties”, the defined Term’s name would be the Span covering “Agreement”. Term names are distinct from references to a Term elsewhere in a Document in that references are not used to define the meaning of a Term for the first time. Unlike the names of Locations and Persons, the name of a Term will never overlap with any of its mentions, though they may overlap with the mentions of other Terms. Term names cannot overlap with each other.

meaning (Span)

meaning is a Span corresponding to the meaning of a Term within a Document. For example, in the phrase “‘Agreement’ means this contract between the parties”, the defined Term’s meaning would be the Span covering “this contract between the parties”. The meaning of one Term can be contained within the meaning of another.

mentions (array[Span])

mentions is an array of Spans corresponding to all references to a Term within a Document excluding its name Span. Thus, mentions can be empty if a Term is defined but never referenced elsewhere in a Document. No two Spans in any Term’s mentions can overlap with each other. The mentions of a particular Term also cannot overlap with that Term’s name Span, though they may overlap with the names of other Terms.

External Document

An External Document represents an external document referenced within a Document. An external document must be identified expressly for it to constitute an External Document. For example, the statute referred to in the phrase “the statute provides many defenses”, would not constitute an External Document because the statute is not named.

id (ID)

id is an ID for an External Document formatted as exd:{identifier}.

name (Span)

name is a Span representing the most proper name of an External Document of all the names by which it is referred to in a Document. As an example, an External Document referred to as the “Constitution of the United States of America” in two places in a Document, the “U.S. Constitution” in three places, and the “Constitution” in one place would have its name set to whichever Span most confidently represented the proper name of the External Document, being one of the “Constitution of the United States of America” Spans.

type (Document Type)

type is a string representing the type of an External Document, being one of the following:
  • statute: primary legislation such as acts, bills, codes, and constitutions.
  • regulation: secondary legislation such as rules, statutory instruments, and ordinances.
  • decision: judicial or quasi-judicial decisions such as court judgments, judicial opinions, and tribunal rulings.
  • contract: contracts, covenants, and agreements.
  • other: all other types of documents that do not fit into any of the predefined types.

jurisdiction (IJC | null)

jurisdiction represents the jurisdiction of an External Document formatted as an IJC if known, and is null otherwise.

reception (External Document Reception | null)

reception represents the sentiment of a Document towards an External Document, being one of the following:
  • positive: indicating that a Document expresses a favorable view of an External Document whether by endorsing or approving it.
  • mixed: indicating that a Document expresses both favorable and unfavorable views of an External Document, for example, by affirming some parts of it and disapproving others.
  • negative: indicating that a Document expresses an unfavorable view of an External Document whether by criticizing, repealing, overruling, or explicitly contradicting it.
  • neutral: indicating that a Document references an External Document without expressing any particular sentiment towards it.

mentions (array[Span])

mentions is an array of Spans corresponding to all mentions of an External Document by its name. mentions will always contain an External Document’s name thus it can never be empty. mentions are distinct from pinpoints which are references to sections within an External Document. For example, in the phrase “Section 6 of the Australian Constitution”, “Section 6” would constitute a pinpoint reference, and “Australian Constitution” would constitute a mention. No two Spans in any External Document’s mentions and pinpoints can overlap with each other, nor can they overlap with any External Document’s name Span except that every External Document’s name Span will always also appear in its mentions.

pinpoints (array[Span])

pinpoints is an array of Spans corresponding to all references to sections within an External Document. It is possible for pinpoints to be empty if there are no such references. pinpoints are distinct from mentions which are mentions of an External Document by name. For example, in the phrase “Section 6 of the Australian Constitution”, “Section 6” would constitute a pinpoint reference, and “Australian Constitution” would constitute a mention. No two Spans in any External Document’s pinpoints and mentions can overlap with each other, nor can they overlap with any External Document’s name Span except that every External Document’s name Span will always also appear in its mentions.

Quote

A Quote is a quotation within a Document. Quotes can be attributed to Persons, Segments, and External Documents. They cannot, however, be simultaneously attributed to both a Segment and an External Document. They can also be attributed to nothing.

source_segment (ID | null)

source_segment is the ID of the Segment that is the origin of a Quote or null if the Quote is not from a Segment. source_segment and source_document cannot both be set.

source_document (ID | null)

source_document is the ID of the External Document that is the origin of a Quote or null if the Quote is not from an External Document or the external document it is from is not known. source_document and source_segment cannot both be set.

source_person (ID | null)

source_person is the ID of the Person from which a Quote originates or null if the Quote is not from a Person or the person it is from is not known.

amending (boolean)

amending is a boolean indicating whether a Quote is being used to amend or modify content, typically in External Documents, for example, “(b) Insert into Section 4 of the Act, ’…’”.

span (Span)

span is the Span where a Quote occurs in the Document.

Date

A Date is a date within a Document belonging to a supported date type. Dates not fitting into a supported date type will not result in a Date node.

value (string)

value is a string representing the date of a Date in ISO 8601 format (YYYY-MM-DD).

type (Date Type)

type is a string representing the type of a Date, being one of the following:
  • creation: the date when a Document was created or last updated. There may only be one creation Date per Document.
  • signature: a date when a Document was signed.
  • effective: a date when a Document or a part thereof comes into effect (eg, commencement or enactment dates).
  • expiry: a date when a Document or a part thereof is no longer in effect.
  • delivery: a date when goods or services are to be delivered under a Document.
  • renewal: a date when one or more of a Document’s terms are to be renewed.
  • payment: a date when payment is to be made under a Document.
  • birth: the birth date of a natural person or establishment (eg, incorporation) date of a non-natural legal person identified in a Document. There can only be one birth Date linked to a single Person and all birth Dates must be linked to a Person. A Person’s birth Date will never be after their death Date.
  • death: the death date of a natural person or dissolution date of a non-natural legal person identified in a Document. There can only be one death Date linked to a single Person and all death Dates must be linked to a Person. A Person’s death Date will never be before their birth Date.

person (ID | null)

person is the ID of the Person linked to a Date or null if there is no known association between a Person and a Date. Dates with the birth or death Type will always have a linked person.

mentions (array[Span])

mentions is an array of Spans mentioning a Date. mentions will never be empty.