Conceptual Data Model of the U.S. Federal Government Budgetary Process
- Date
- 2011-12-12
- Revision
- 10
- Status
- draft for presentation 2011-12-14
Motivation
Goal is to have an:
- open, authoritative set of machine processable data covering federal:
- Budgeting
- Appropriations
- Spending
- to enable (not create) a variety of uses for a variety of users:
- for data processors (ontologies, codifications, correlations with
other datasets)
- for end users (apps, mashups, human-searchable websites, researchers, reporters)
- for other government entities
Scope of the Specification
- a general statement of transparent data practices
- a conceptual model (descriptive and prescriptive) of desired data
concerning budgets, appropriations, allocations, obligations,
outlays, and reporting
- not of specific publication or serialization technologies or
methodologies
Note that this specification makes reference to Entities and concepts
explained in the Conceptual Data Model of Formal Legislative Processes in
the U.S. Federal Government.
Depth of the Specification
This data is sought primarily to bring transparency to the federal
spending lifecycle from the original budget proposed by the president
through the creation of budget authority by Congress, to the final
outlay of money by executive branch agencies.
The primary problem data conforming to this specification will solve is
the current inability to correlate particular obligations and outlays to
specific appropriations and budget authorities.
This specification does not attempt to model financial data detailed
down to the last transaction or with the rigor required by accountants;
nor does it model receipts or other sources of federal revenue; nor does
it model borrowing authority; nor does it attempt to model all budget-
and spending-related communication among agencies, the Treasury
Department, and the Office of Management and Budget.
Transparent Data Practices
- availability
- permanent
- stable (always in same location)
- complete
- bulk accessible
- incrementally accessible
- open (publicly accessible and free of proprietary encumbrances)
- authority
- authoritative (Authoritative sources will emerge from consistent practices.)
- timely/real-time
- correctable (in response to consumers of data)
- machine-discoverability
- internet-accessible
- cross-referenceable
- machine-processability
- comprehensive conceptual data model
- semantically rich
- well-defined, published serializations
Background
This section is informative, not normative.
In order to understand the data of interest, it is necessary to
understand something of the budgetary process.
- Executive:
- President proposes a budget.
- Legislative:
- Congress creates its own budget through House and Senate resolutions.
(See the Conceptual Data Model of Formal Legislative Processes in
the U.S. Federal
Government
for these resolutions.)
- Congress creates Budget Authorities in law, which direct that money
should be spent for a particular purpose.
- Executive:
- Treasury Warrant Issuance: The Financial Management Service (FMS)
of the Treasury Department and the Office of Management and
Budget (OMB) come to agreement on which Treasury Accounts fund which
Budget Authorities and issue Treasury Warrants to Agencies for
all Bureau-level accounts under their purview. This creates
a balance in the Treasury Account which can fund Bureau spending.
- Apportionment: The OMB informs individual Agencies how much of
their Warrant they may spend per financial quarter. Agencies then
apportion this amount to their Bureau-level accounts.
- Allocation: Bureaus allocate resources to Programs which serve a
given Budget Authority.
- Obligation: Agencies and Bureaus, through Programs, enter into
various kinds of legally-binding agreements (obligations)
which will be satisfied by outlays.
- Outlay: Money transfers are executed to liquidate obligations.
- Reporting: The OMB reports expenditures by Budget Authority and
makes recommendations to Congress for future Budget Authorities.
Conceptual Data Model
Entities
An Entity represents an object in the world. An Entity is composed of
unordered named Properties and is uniquely identified by an Identifier.
An Entity’s Class defines what Properties and Identifiers compose
a given Entity.
An Entity Class may be specified by other Entity Classes. Such Entity
Classes are called Subclasses of the specified Entity Class. An Entity
Subclass inherits the Properties and Identifiers of the Entity Class.
Properties
A Property consists of a Name and a Value. Names must be unique within
an Entity. A Value must be an Entity, a Collection of Entities, or a
typed literal.
A Property may be derived or computed, meaning that its value can be
inferred from other Properties.
Identifiers
Identifiers uniquely identify an Entity. Identifiers are composed of the
Values of one or more Properties which taken together are the minimum
necessary to identify that Entity.
Identifiers should be natural where possible; if there is no natural
Identifier for an Entity, a surrogate Identifier must be assigned
and transmitted by an authority. Every Entity must have an Identifier.
Types
A Type describes a literal Value for a Property. Types may be simple
(e.g., Integers, Strings, URIs, Currency Amounts, Dates, etc) or
complex (XML documents, PDF documents, etc).
This specification does not define the textual representation for typed
Values, but one should use representations which are standardized,
machine-readable, and in conformance with the principles set forth in
the Transparent Data Practices outlined in this document.
Collections
Collections are groups of Entities indicated together. Collections may
be heterogeneous or homogeneous. Collections may have cardinality
constraints.
Bag
A Bag is an unordered non-unique set of Entities. A single Entity may
occur more than once within a Bag.
List
A List is an ordered non-unique set of Entities. A single Entity may
occur more than once within a Bag. The sort order should be specified.
Set
A Set is an unordered unique set of Entities. An Entity may occur only
once within a Set.
Ordered Set
An Ordered Set is an ordered unique set of Entities. The sort order
should be specified.
Extending
This data model is not meant to be exhaustive. It may be extended by
augmentation (adding additional properties to Entity Classes defined
in this specification), or by subclassing (defining new Entity Classes
inheriting from an existing Entity Class defined in this specification).
Abstract Entity Classes may not be augmented, only subclassed.
Any extensions must make use of a namespacing mechanism to prevent
Property Name and Entity Class Name collisions with other extensions.
No namespacing mechanism is defined by this specification—namespacing
mechanisms are implementation-specific.
The following notation is used to describe entities.
- [«SuperClassName»] EntityClassName
- Description of Entity Class.
- «Identifier» (PropertyName1, PropertyName2, …) this defines the property names which compose the Entity Class’ identifier
- PropertyName: PropertyValueType[cardinality constraints] {collection information and other notes}
- /DerivedPropertyName: PropertyValueType
Model (Entity Classes)
- ExecutiveAgent
- Abstract Entity representing an agent responsible for executing an Authority.
- «Identifier» (ombAgencyCode)
- ombAgencyCode: ombagencycode {three- or five-digit form}
- treasuryAgencyCode: treasuryagencycode
- name: string
- website: url
- «ExecutiveAgent» Agency
- A federal agency.
- ombAgencyCode: ombagencycode {three-digit form}
- «ExecutiveAgent» Bureau
- A bureau of a federal agency.
- parent: Agency
- ombAgencyCode: ombagencycode {five-digit form}
- Program
- A federal program overseen by a Bureau.
- «Identifier» (parent, programNumber)
- programNumber: int {disambiguates a program within a Bureau}
- name: string
- description: string
- parent: Bureau
- website: url {option}
- Project
- A federal project overseen by a Program.
- «Identifier» (parent, projectNumber)
- projectNumber: int {disambiguates a project within a Program}
- name: string
- parent: Program
- Authority
- Abstract class specifying a proposed, existing, or terminated authority to obligate funds.
When a new Authority replaces an older Authority, the older authorities are referenced through the previousAuthority property.
- «Identifier» (fiscalYear, number)
- fiscalYear: year {fiscal year in which authority did, does, or would first gain force}
- number: int {number unique within fiscal year; used to disambiguate
Authorities. In almost all cases this should match a treasury account symbol, which is the accountSymbol property of the AppropriationWarrant Entity}
- source: string {a reference to the legal document which proposes or establishes the authority, e.g. a Bill, Public Law, US Code or Statute}
- sourceClass: authoritysourceclass_enum {type of document in which the budget authority was created}
- /status: authoritystatus_enum {whether the Authority is proposed, in effect, or terminated}
- authorizedAmount: dollarorindefinite {Optional; where a distinction can be made between an authorized and appropriated amount, this property may contain the authorized amount. Note that a value of “indefinite” not the same as a missing value}
- appropriatedAmount: dollarorindefinite {Optional; where a distinction can be made between an authorized and appropriated amount, this property may contain the appropriated amount. Note that a value of “indefinite” not the same as a missing value}
- appropriationSource: Bill {the bill that appropriates or proposes to appropriate funds for this authority}
- authorizingSource: Bill {the bill that authorizes or proposes to authorize this authority}
- authorityClass: authorityclass_enum {type of authority that is or would be exercised}
- effectiveDate: date {when the authority begins}
- terminationDate: dateorindefinite {when the authority ends}
- purpose: string {description of the Authority}
- agent: ExecutiveAgent[1..n] {Set, Optional, who or what will execute the purpose of the authority using the amount}
- estimatedOutlay: OutlayEstimate[0..n] {List, ordered by
fiscalYear; estimated spending in future fiscal years; this is
informational only and is not part of the Authority}
- creationDate: date {the date on which the Authority record was created; this is unrelated to effectiveDate}
- changeDate: date {the date on which the Authority record changed; usually this will change after a previousAuthority is determined}
- previousAuthority: Authority[0..n] {past Authorities which this authority replaces; Note that until the OMB and FMS officially determine whether there is a continuity among Authorities no continuity is implied. Thus, this field will often be empty if no AppropriationWarrants have been issued for the authority.}
- PresidentialBudget
- Represents a presidential budget Appendix. This Entity is a container for budget reports.
- «Identifier» (fiscalYear)
- fiscalYear:
- publicationDate: date
- report: PresidentialBudgetReport[1..n]
- PresidentialBudgetReport
- Represents an individual report in a presidential budget Appendix. Reports are organized by Authority.
- «Identifier» (authority)
- authority: Authority
- text: presidentialbudgetreporttext
- /budget: PresidentialBudget
- OutlayEstimate
- Represents an estimate of spending in a fiscal year for a Budget
Authority. The amounts specified are not actually part of the Budget
Authority and are purely informational data found in budget documents.
- fiscalYear: year
- amount: int
- /authority: Authority
- AppropriationWarrant
- An amount of funds assigned by the Treasury into a treasury account to serve a particular Authority which was the result of appropriating legislation.
- «Identifier» (warrantId)
- warrantId: string {a unique identifier for a warrant}
- authority: Authority {the budget authority under which the AppropriationWarrant was issued}
- treasuryAccount: treasuryaccountid
- accountHolder: ExecutiveAgent {the agency which may use the funds in the treasury account indicated by the warrant. This is also indicated first two digits of the treasuryaccountid}
- accountSymbol: int {treasuryaccountid less the first two digits. This account symbol will be a component of all budget reporting identifiers.}
- amount: int
- Apportionment
- An instruction from the OMB to an agency about how much an ExecutiveAgent may spend from a treasury account in service of an Authority within a given period of time.
- «Identifier» (id)
- id: int {globally and temporally-unique identifier for Apportionments}
- issuanceDate: date
- authority: Authority
- agent: ExecutiveAgent
- amount: int
- periodStartDate: date
- periodEndDate: date
- Allocation
- A division of an Apportionment by an ExecutiveAgent into Programs or Projects.
- «Identifier» (id)
- id: int {globally and temporally-unique identifier for Allocations}
- issuanceDate: date
- authority: Authority
- apportionment: Apportionment
- /treasuryAccount: treasuryaccountid {derived from the apportionment}
- subAgent: Program, Project, Obligation {the subAgent which receives the portion of the Apportionment}
- allocator: ExecutiveAgent
- amount: int
- periodStartDate: date
- periodEndDate: date
- agent: ExecutiveAgent
- Obligation
- An abstract class representing a binding agreement or statutory requirement that will result in outlays immediately or in the future.
- «Identifier» (obligationId)
- obligationId: string {uniquely identifies the obligation}
- authority: Authority
- allocation: Allocation {optional}
- apportionment: Apportionment {optional}
- summary: string {description of the obligation}
- amount: int
- obligor: ExecutiveAgent
- «Obligation» Award
- An abstract class representing an agreement between the federal government and a
non-federal Entity for deliverables rendered to the federal government.
Refer to
[USASpending.gov](http://www.usaspending.gov/learn?tab=About%20the%20Data)
for more information on these fields. Awards are typically referred to
as “discretionary spending” because the authority to obligate funds is an
appropriation by congress.
- contractId: string {uniquely identifies the document that creates the obligation}
- obligee: Party
- creationDate: date {date the obligation was created, e.g. the date a contract was signed}
- startingDate: date {date the obligation took effect}
- endingDate: date {date the obligation ceased}
- «Award» Procurement Contract
- An Award which acquires a good or service for the exclusive use or benefit of the Federal Government.
- federalAwardId: string {agency-defined unique award identifier}
- piid: string {Procurement Instrument ID}
- «Award» Grant
- An Award which produces a good or service which is not for the
exclusive use of the Federal Government. If the use of the good or
service is partially shared by the Federal Government, it may be called
a Cooperative Agreement; otherwise it is a Grant.
- federalGrantId: string {unique grant identifier}
- «Obligation» Salary
- An Entity representing an aggregate of salary and wage obligations
to Federal Employees.
- «Obligation» DirectPayment
- An Entity representing some aggregate of direct payments paid
to individuals. This includes entitlement obligations (Retirement, Disability, Medicare,
Unemployment, etc.) DirectPayments are typically referred to as “mandatory spending”
because the obligation is required by statue.
- «Obligation» Other
- An Entity representing other unclassified Obligations, such
as insurance and loans.
- Outlay
- Spending in execution of an Obligation.
- «Identifier» (transactionId)
- transactionId: treasurytransactionid {uniquely identifies a financial transaction in the Treasury Transaction Reporting System}
- authority: Authority
- amount: int {in rare cases this may be a negative number, in which case it indicates a credit to the treasury account}
- treasuryAccountId: treasuryaccountid
- treasurySubAccountId: int {a subaccount under a treasuryaccountid; use of subaccounts is entirely at the discretion of the ExecutiveAgent}
- accountHolder: ExecutiveAgent
- transactionDate: date
- settlementDate: date
- payee: Party or Person {the other party to the transaction;
the Person Entity is defined in the Legislative [Conceptual Data
Model of Formal Legislative
Processes](http://wac.0873.edgecastcdn.net/800873/blog/wp-content/uploads/2b-Conceptual-Data-Model-of-US-Formal-Legislative-Processes.html);
for privacy reasons, this field may be omitted when payees are
individuals.}
- obligation: Obligation {the obligation which this outlay services}
- Party
- The recipient of an Outlay or party to an Obligation. This may
include federal entities, state entities, federal employers,
contractors, grant recipients, foreign countries, which should be expressed
by subclasses of this Entity as necessary.
- «Identifier» (partyId)
- partyId: int {identifies the party to an obligation or transaction}
Types (property-level specifications)
The exact representation of the types below will depend on the concrete
data model that implements this abstract model. Use existing standards
where possible and aim for unambiguous machine-readability.
- authoritystatus_enum
- *proposed*: the Authority has not come into effect either because its effectiveDate has not yet been reached or because the Authority never passes into Public Law.
- *in effect*: the Authority is legally in effect and spending may in principle occur citing this Entity as its Authority.
- *terminated*: the Authority has elapsed either because its terminationDate has been reached or because some condition terminating it has been met.
- dollarorindefinite
- A specific dollar amount, or “indefinite” if no dollar amount is specified.
- dateorindefinite
- A specific calendar date, or “indefinite” if no date is specified.
- ombagencycode
- A three or five digit number that indicates a specific Agency or
Bureau. The first three digits indicate an Agency; the last two indicate
a Bureau of that Agency. These include Legislative and Judicial branch
“Agencies” and “Bureaus”. There is a mapping between ombagencycode and
treasuryagencycode.
- treasuryagencycode
- A two-digit number that indicates a specific Agency or Bureau.
These include Legislative and Judicial branch “Agencies” and “Bureaus”.
There is a mapping between ombagencycode and treasuryagencycode.
- treasuryaccountid
- Uniquely identifies a Treasury account.
- authoritysourceclass_enum
- A one- or two-character code indicating the type of document which
created a Authority.
- PL: PublicLaw
- PB: President’s Budget
- B: Bill, including House and Senate Budgets
- markuptype
- An abstract type. A markuptype is a document with inline
machine-processable markup (e.g. XML) from which it is easy to extract
contained or related Entities and other semantic information.
- presidentialbudgetreporttext (markuptype)
- The text of a presidential budget report. Authority, agency,
bureau, schedules, treasury accounts, functional classification, object
classifications, and receipts should be easily extractable from a
presidentialbudgetreporttext document.