The key words must, must not, should, should not and may are to be interpreted as described in RFC 2119.
The data specification will define terms (classes and properties) to describe and relate the entities below:
e.g. William Shakespeare
e.g. a social, commercial or political structure
e.g. member of the XYZ Party
e.g. Member of Parliament for Avalon
e.g. a telephone number, email address, postal address, contact form, etc.
e.g. "That the House do now proceed to the Orders of the Day."
e.g. a vote to pass a bill
e.g. 128 votes in favor of passage
e.g. John Q. Public voted in favor of passage
e.g. a country, city, ward, etc.
e.g. a legislative session, a meeting, a hearing, etc.
e.g. a representative addressing the legislature
1. For example, it must not use vCard's fn where this specification's name would suffice.
The data specification should:
Allow the use of imprecise dates [issue 7].
Shakespeare was born in April 1564.
Have a permanent, unique identifier for each instance of the class.
e.g. a URL, an integer or a hex string.
Each resource should have metadata properties for:
time of creation
The electronic resource for Shakespeare was created on May 1, 2000.
time of modification
The electronic resource for Shakespeare was modified on June 15, 2005.
references to sources of information from which the resource is derived
e.g. a book, a website or other reference material.
The subdocuments in a later section add more requirements.
Following a survey of existing specifications, the data specification reuses terms from:
| Publisher | Name | Prefix |
|---|---|---|
| Bibliographic Framework Initiative | BIBFRAME Vocabulary | bf |
| BIO: A vocabulary for biographical information | bio |
|
| W3C | Contact: Utility concepts for everyday life | con |
| DCMI | DCMI Metadata Terms | dcterms |
| FOAF Vocabulary Specification | foaf |
|
| GeoNames | GeoNames Ontology | gn |
| ISA | ISA Programme Location Core Vocabulary | locn |
| OSCA Foundation | NEPOMUK Calendar Ontology | ncal |
| Open Data Institute | Open Data Rights Statement Vocabulary | odrs |
| W3C | The Organization Ontology | org |
| ISA | ISA Programme Person Core Vocabulary | person |
| W3C | RDF Schema | rdfs |
| W3C | Schema.org | schema |
| W3C | SKOS Simple Knowledge Organization System | skos |
| IETF | vCard Format Specification | vcard |
The inventory of terms from the surveyed specifications is captured in an appendix.
The subdocuments in the next section describe specific standard reuse. Some impose cardinality and range restrictions on the properties of the above specifications, in order to allow for a simpler JSON serialization.
Each of the following subdocuments describes a class and its properties:
The structure of each subdocument is:
The following diagram succinctly describes the relationships among the people and organizations classes. All arrows are one-to-many relationships.

The following table defines the metadata properties and maps each term to an RDF URI2:
| Term | Mapping | Definition |
|---|---|---|
| time of creation | dcterms:created |
The time at which a resource was created |
| time of modification | dcterms:modified |
The time at which a resource was modified |
| source document | dcterms:source |
A URL to, or a citation of, a document from which the resource is derived |
2. If you do not use RDF, you may ignore the mapping.
The data specification defines two serializations: RDF and JSON. RDF is a technology for data modeling, with a variety of syntax notations and serialization formats, including XML, JSON (via JSON-LD), HTML (via RDFa or RDFa Lite), and N3 (a superset of the simpler Turtle and N-Triples formats). JSON is a text-based, language-independent interchange format for structured data, derived from the JavaScript scripting language.
Given that the same RDF resource can be serialized in many different ways using JSON-LD, JSON Schema are provided below to ensure all JSON serializations look alike, to maximize interoperability. A JSON-LD serialization will nonetheless differ from a plain JSON serialization in a few ways:
@context, @type and @id keywords.email property of a Person must be a ‘mailto’ URI.role property of a Membership, Post, Vote or Speech must be a URI or blank node for a org:Role.classification property of an Organization or Motion must be a URI or blank node for a skos:Concept.classification property of an Area must be a URI or blank node for a gn:Code, which is a subclass of skos:Concept.type property of a ContactDetail must be a node type, i.e. an IRI.scheme property of an Identifier must be a value type, i.e. an IRI.requirement property of a Motion must be a URI or blank node for a opengov:Requirement.result property of a Motion, VoteEvent or GroupResult must be a URI or blank node for a opengov:Result.location property of an Event must be a URI or blank node for a schema:Place or schema:PostalAddress.status property of an Event must be a URI or blank node for a schema:EventStatusType.audio property of a Speech must be a URI or blank node for a schema:AudioObject.video property of a Speech must be a URI or blank node for a schema:VideoObject.links and sources properties must be an array of URIs, not an array of link objects.*_id properties:| JSON-LD | JSON |
|---|---|
@id |
id |
area |
area_id |
audience |
audience_id |
creator |
creator_id |
event |
event_id |
group |
group_id |
legislative_session |
legislative_session_id |
on_behalf_of |
on_behalf_of_id |
organization |
organization_id |
pair |
pair_id |
parent |
parent_id |
person |
person_id |
post |
post_id |
vote_event |
vote_event_id |
voter |
voter_id |
Dates must be stored in UTC. To allow for imprecise dates, the use of ISO 8601:2004 reduced dates3 is recommended. In RDF, the dcterms:W3CDTF datatype is recommended.
Additional serialization details are given in the subdocuments in the previous section.
3. Consult the list of reduced date formats. XML Schema supports reduced dates such as YYYY and YYYY-MM.
As described in the conformance section, JSON serializations must validate against the JSON Schema (draft v3) below. The terms use snake case (birth_date) instead of camel case (birthDate), due to its popularity among ORMs.
JSON differences from other RDF serializations:
created_at is used instead of created, due to its popularity among ORMs.updated_at is used instead of modified, due to its popularity among ORMs.sources is used instead of source and is serialized as an array of link objects.The following examples use a Person document to demonstrate the metadata properties.
When serializing to JSON, you may relate entities by linking and/or embedding relations.
| Linking | Embedding | Inverse |
|---|---|---|
area_id |
area |
memberships, organizations, posts |
audience_id |
audience |
|
creator_id |
creator |
motions, speeches |
event_id |
event |
speeches |
group_id |
group |
|
legislative_session_id |
legislative_session |
motions, vote_events |
member |
memberships |
|
motion_id |
motion |
vote_events |
on_behalf_of_id |
on_behalf_of |
|
organization_id |
organization |
memberships, motions, posts, vote_events |
pair_id |
pair |
|
parent_id |
parent |
children |
person_id |
person |
memberships |
post_id |
post |
memberships |
vote_event_id |
vote_event |
votes |
voter_id |
voter |
votes |
contact_details, counts, group_results, identifiers, links, other_names and sources are embedded only.
The first option is straight-forward and is used in the examples in the subdocuments above.
To embed an organization’s posts on its Organization document, add a plural posts property to that document, whose value is an array of Post documents. Since the organization_id property on each Post subdocument is redundant with the id property on the Organization document, you may omit the organization_id property from each subdocument.
For the inverse relation, i.e. to embed a post’s organization on its Post document, add a singular organization property to that document, whose value is the Organization document. You may omit the organization_id property from the Post document, since it is redundant with the id property on the Organization document.
In the case of an organization’s memberships, an organization may both have members and be a member of other organizations. As such, the organization_id property should be present on each subdocument, to avoid ambiguity.
At the risk of stating the obvious, you must not embed an entity in another unless the two are related. You may embed to any depth, but you must not embed recursively, e.g. embed an organization in a post in an organization.
The JSON Schema above reuse the following subschema for specific properties.
With respect to standard reuse, the term scheme is used in the Organization ontology, SKOS and XBRL.
JSON differences from other RDF serializations:
With respect to standard reuse, note comes from skos:note.
JSON differences from other RDF serializations:
note property adds a note (e.g. “Wikipedia page”) to the external link.If a name object sets an end_date property, it represents a former name. With respect to standard reuse, the terms start_date and end_date are used in the Participation ontology and others, and note comes from skos:note.
For political groups, the range of the group property will be an organization. For ethnic groups, as in the House of Peoples, it will be an object (a foaf:Group) with a name (a foaf:name).
classification from Event to VoteEvent.schema:dissolutionDate instead of opengov:dissolutionDate.name is no longer a required property in other_name.json.object_id property from the Motion class’ JSON Schema.party to group in the Vote class.schema:validUntil instead of schema:validThrough, for a meaning common to UK and US English.opengov:OtherName.name and label are no longer required properties in the JSON Schema.schema:validFrom and schema:validThrough instead of org:memberDuring.