@yottagraph-app/data-model-skill 0.0.22 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
# Data Dictionary: FAA Aircraft Registry
|
|
2
|
+
|
|
3
|
+
## Source Overview
|
|
4
|
+
|
|
5
|
+
The FAA Releasable Aircraft Database is published by the Federal Aviation Administration, Civil Aviation Registry, Aircraft Registration Branch (AFS-750). It contains registration records for all U.S. civil aircraft, plus reference tables, deregistered aircraft, dealer certificates, document indices, and reserved N-numbers.
|
|
6
|
+
|
|
7
|
+
The database is distributed as a single ZIP archive (~60MB) refreshed daily at 11:30 PM Central Time. It contains 7 comma-delimited `.txt` files. Field definitions are documented in [ardata.pdf](https://registry.faa.gov/database/ardata.pdf).
|
|
8
|
+
|
|
9
|
+
Download URL: `https://registry.faa.gov/database/ReleasableAircraft.zip`
|
|
10
|
+
|
|
11
|
+
The implementation joins ACFTREF.txt and ENGINE.txt as in-memory lookup tables into MASTER.txt rows, producing denormalized aircraft registration records. DEREG.txt uses a similar structure and is processed alongside MASTER.txt. DEALER.txt, DOCINDEX.txt, and RESERVED.txt are processed as separate entity types.
|
|
12
|
+
|
|
13
|
+
| File | Record Count (approx) | Entity Type |
|
|
14
|
+
|------|----------------------|-------------|
|
|
15
|
+
| MASTER.txt | ~300,000+ | `aircraft` |
|
|
16
|
+
| ACFTREF.txt | ~few thousand | Lookup table (joined into `aircraft`) |
|
|
17
|
+
| ENGINE.txt | ~few thousand | Lookup table (joined into `aircraft`) |
|
|
18
|
+
| DEREG.txt | ~300,000+ | `aircraft` (deregistered) |
|
|
19
|
+
| DEALER.txt | ~few thousand | `organization` (aircraft dealers) |
|
|
20
|
+
| DOCINDEX.txt | ~millions | `document` (aircraft document index) |
|
|
21
|
+
| RESERVED.txt | ~tens of thousands | `aircraft` (reserved N-numbers) |
|
|
22
|
+
|
|
23
|
+
| Pipeline | `Record.Source` |
|
|
24
|
+
|----------|----------------|
|
|
25
|
+
| All files | `faaregistry` |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Entity Types
|
|
30
|
+
|
|
31
|
+
### `aircraft`
|
|
32
|
+
|
|
33
|
+
A U.S. civil aircraft identified by its FAA registration N-number. Includes active registrations (MASTER.txt), deregistered aircraft (DEREG.txt), and reserved N-numbers (RESERVED.txt).
|
|
34
|
+
|
|
35
|
+
- Primary key: N-Number (e.g., `"12345"` for N12345)
|
|
36
|
+
- Entity resolver: named entity. Strong ID = `n_number`. Mode S hex code as secondary identifier. Disambiguation via manufacturer, model, serial number, registrant name.
|
|
37
|
+
|
|
38
|
+
### `organization`
|
|
39
|
+
|
|
40
|
+
An aircraft dealer or manufacturer holding an FAA Dealer's Aircraft Registration Certificate.
|
|
41
|
+
|
|
42
|
+
- Primary key: Certificate number (e.g., `"24-0001"`)
|
|
43
|
+
- Entity resolver: named entity. Strong ID = `dealer_certificate_number`. Disambiguation via name, address.
|
|
44
|
+
|
|
45
|
+
### `document`
|
|
46
|
+
|
|
47
|
+
A document recorded with the FAA Aircraft Registry, indexed by collateral identification (usually the N-number).
|
|
48
|
+
|
|
49
|
+
- Primary key: Document ID (12-character unique identifier)
|
|
50
|
+
- Entity resolver: named entity. Strong ID = `faa_document_id`. Not mergeable.
|
|
51
|
+
|
|
52
|
+
### `location`
|
|
53
|
+
|
|
54
|
+
A geographic location derived from the registrant's address (city + state).
|
|
55
|
+
|
|
56
|
+
- Primary key: city + state combination
|
|
57
|
+
- Entity resolver: named entity. Disambiguation via city name, state code.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Properties
|
|
62
|
+
|
|
63
|
+
### Aircraft Properties (from MASTER.txt + ACFTREF.txt + ENGINE.txt joins)
|
|
64
|
+
|
|
65
|
+
#### Identity and Registration
|
|
66
|
+
|
|
67
|
+
* `n_number`
|
|
68
|
+
* Definition: FAA registration number assigned to the aircraft (without the "N" prefix).
|
|
69
|
+
* Examples: `"12345"`, `"789AB"`, `"5NJ"`
|
|
70
|
+
* Derivation: `N-NUMBER` field from MASTER.txt, positions 1-5.
|
|
71
|
+
|
|
72
|
+
* `serial_number`
|
|
73
|
+
* Definition: Complete aircraft serial number assigned by the manufacturer.
|
|
74
|
+
* Examples: `"28-7990244"`, `"172S10245"`
|
|
75
|
+
* Derivation: `SERIAL NUMBER` field from MASTER.txt, positions 7-36.
|
|
76
|
+
|
|
77
|
+
* `mode_s_code_hex`
|
|
78
|
+
* Definition: Aircraft Mode S transponder code in hexadecimal format (ICAO 24-bit address).
|
|
79
|
+
* Examples: `"A12345"`, `"ABCDEF"`
|
|
80
|
+
* Derivation: `MODE S CODE HEX` field from MASTER.txt, positions 602-611.
|
|
81
|
+
* Note: This corresponds to the `icaoAddress` property in the KG aircraft flavor schema.
|
|
82
|
+
|
|
83
|
+
* `mode_s_code`
|
|
84
|
+
* Definition: Aircraft Mode S transponder code in octal format.
|
|
85
|
+
* Examples: `"50712345"`
|
|
86
|
+
* Derivation: `MODE S CODE` field from MASTER.txt, positions 257-264.
|
|
87
|
+
|
|
88
|
+
* `unique_id`
|
|
89
|
+
* Definition: FAA-assigned unique identification number for the registration record.
|
|
90
|
+
* Examples: `"01234567"`
|
|
91
|
+
* Derivation: `UNIQUE ID` field from MASTER.txt, positions 541-548.
|
|
92
|
+
|
|
93
|
+
#### Aircraft Details (joined from ACFTREF.txt)
|
|
94
|
+
|
|
95
|
+
* `manufacturer_name`
|
|
96
|
+
* Definition: Name of the aircraft manufacturer.
|
|
97
|
+
* Examples: `"CESSNA"`, `"BOEING"`, `"PIPER"`, `"BEECH"`
|
|
98
|
+
* Derivation: Joined from ACFTREF.txt `AIRCRAFT MANUFACTURER NAME` (positions 9-38) via `AIRCRAFT MFR MODEL CODE` foreign key.
|
|
99
|
+
|
|
100
|
+
* `model_name`
|
|
101
|
+
* Definition: Aircraft model and series name.
|
|
102
|
+
* Examples: `"172S"`, `"737-800"`, `"PA-28-181"`
|
|
103
|
+
* Derivation: Joined from ACFTREF.txt `MODEL NAME` (positions 40-59) via `AIRCRAFT MFR MODEL CODE` foreign key.
|
|
104
|
+
|
|
105
|
+
* `aircraft_type`
|
|
106
|
+
* Definition: Type of aircraft.
|
|
107
|
+
* Examples: `"Fixed wing single engine"`, `"Rotorcraft"`, `"Balloon"`
|
|
108
|
+
* Derivation: `TYPE AIRCRAFT` field from MASTER.txt (position 249), decoded: 1=Glider, 2=Balloon, 3=Blimp/Dirigible, 4=Fixed wing single engine, 5=Fixed wing multi engine, 6=Rotorcraft, 7=Weight-shift-control, 8=Powered Parachute, 9=Gyroplane, H=Hybrid Lift, O=Other.
|
|
109
|
+
|
|
110
|
+
* `engine_type`
|
|
111
|
+
* Definition: Type of engine installed.
|
|
112
|
+
* Examples: `"Reciprocating"`, `"Turbo-fan"`, `"Electric"`
|
|
113
|
+
* Derivation: `TYPE ENGINE` field from MASTER.txt (positions 251-252), decoded: 0=None, 1=Reciprocating, 2=Turbo-prop, 3=Turbo-shaft, 4=Turbo-jet, 5=Turbo-fan, 6=Ramjet, 7=2 Cycle, 8=4 Cycle, 9=Unknown, 10=Electric, 11=Rotary.
|
|
114
|
+
|
|
115
|
+
* `year_manufactured`
|
|
116
|
+
* Definition: Year the aircraft was manufactured.
|
|
117
|
+
* Examples: `"1978"`, `"2023"`
|
|
118
|
+
* Derivation: `YEAR MFR` field from MASTER.txt, positions 52-55.
|
|
119
|
+
|
|
120
|
+
* `number_of_engines`
|
|
121
|
+
* Definition: Number of engines on the aircraft.
|
|
122
|
+
* Examples: `"1"`, `"2"`, `"4"`
|
|
123
|
+
* Derivation: Joined from ACFTREF.txt `NUMBER OF ENGINES` (positions 70-71).
|
|
124
|
+
|
|
125
|
+
* `number_of_seats`
|
|
126
|
+
* Definition: Maximum number of seats in the aircraft.
|
|
127
|
+
* Examples: `"4"`, `"189"`, `"12"`
|
|
128
|
+
* Derivation: Joined from ACFTREF.txt `NUMBER OF SEATS` (positions 73-75).
|
|
129
|
+
|
|
130
|
+
* `aircraft_weight_class`
|
|
131
|
+
* Definition: Maximum gross takeoff weight class.
|
|
132
|
+
* Examples: `"Up to 12,499 lbs"`, `"12,500 - 19,999 lbs"`, `"20,000 and over"`, `"UAV up to 55 lbs"`
|
|
133
|
+
* Derivation: Joined from ACFTREF.txt `AIRCRAFT WEIGHT` (positions 77-83), decoded: 1=Up to 12,499, 2=12,500-19,999, 3=20,000 and over, 4=UAV up to 55.
|
|
134
|
+
|
|
135
|
+
* `cruising_speed`
|
|
136
|
+
* Definition: Average cruising speed in miles per hour.
|
|
137
|
+
* Examples: `"124"`, `"530"`
|
|
138
|
+
* Derivation: Joined from ACFTREF.txt `AIRCRAFT CRUISING SPEED` (positions 85-88).
|
|
139
|
+
* Note: Not present on all records.
|
|
140
|
+
|
|
141
|
+
* `aircraft_category`
|
|
142
|
+
* Definition: Land/sea/amphibian classification.
|
|
143
|
+
* Examples: `"Land"`, `"Sea"`, `"Amphibian"`
|
|
144
|
+
* Derivation: Joined from ACFTREF.txt `AIRCRAFT CATEGORY CODE` (position 66), decoded: 1=Land, 2=Sea, 3=Amphibian.
|
|
145
|
+
|
|
146
|
+
* `builder_certification`
|
|
147
|
+
* Definition: Builder certification classification.
|
|
148
|
+
* Examples: `"Type Certificated"`, `"Not Type Certificated"`, `"Light Sport"`
|
|
149
|
+
* Derivation: Joined from ACFTREF.txt `BUILDER CERTIFICATION CODE` (position 68), decoded: 0=Type Certificated, 1=Not Type Certificated, 2=Light Sport.
|
|
150
|
+
|
|
151
|
+
* `type_certificate_data_sheet`
|
|
152
|
+
* Definition: FAA Type Certificate Data Sheet reference.
|
|
153
|
+
* Derivation: Joined from ACFTREF.txt `TC DATA SHEET` (positions 90-105).
|
|
154
|
+
|
|
155
|
+
* `type_certificate_holder`
|
|
156
|
+
* Definition: Name of the Type Certificate holder.
|
|
157
|
+
* Derivation: Joined from ACFTREF.txt `TC DATA HOLDER` (positions 107-157).
|
|
158
|
+
|
|
159
|
+
#### Engine Details (joined from ENGINE.txt)
|
|
160
|
+
|
|
161
|
+
* `engine_manufacturer`
|
|
162
|
+
* Definition: Name of the engine manufacturer.
|
|
163
|
+
* Examples: `"LYCOMING"`, `"CONT MOTOR"`, `"P&W"`
|
|
164
|
+
* Derivation: Joined from ENGINE.txt `ENGINE MANUFACTURER NAME` (positions 7-16) via `ENGINE MFR MODEL CODE` foreign key.
|
|
165
|
+
|
|
166
|
+
* `engine_model`
|
|
167
|
+
* Definition: Engine model name.
|
|
168
|
+
* Examples: `"O-320-D2J"`, `"IO-540"`
|
|
169
|
+
* Derivation: Joined from ENGINE.txt `ENGINE MODEL NAME` (positions 18-30).
|
|
170
|
+
|
|
171
|
+
* `engine_horsepower`
|
|
172
|
+
* Definition: Engine horsepower (for reciprocating, turbo-prop, turbo-shaft, 2-cycle, 4-cycle engines). Unit: HP.
|
|
173
|
+
* Examples: `"180"`, `"310"`
|
|
174
|
+
* Derivation: Joined from ENGINE.txt `ENGINE HORSEPOWER` (positions 35-39).
|
|
175
|
+
* Note: Only populated for engine types 1, 2, 3, 7, 8.
|
|
176
|
+
|
|
177
|
+
* `engine_thrust`
|
|
178
|
+
* Definition: Engine thrust (for turbo-jet, turbo-fan, ramjet engines). Unit: pounds of thrust.
|
|
179
|
+
* Examples: `"27300"`, `"56000"`
|
|
180
|
+
* Derivation: Joined from ENGINE.txt `POUNDS OF THRUST` (positions 41-46).
|
|
181
|
+
* Note: Only populated for engine types 4, 5, 6.
|
|
182
|
+
|
|
183
|
+
#### Registration Status
|
|
184
|
+
|
|
185
|
+
* `registration_status`
|
|
186
|
+
* Definition: Current status of the aircraft registration.
|
|
187
|
+
* Examples: `"Valid Registration"`, `"Registration Expired"`, `"Sale Reported"`, `"Administratively Canceled"`
|
|
188
|
+
* Derivation: `STATUS CODE` field from MASTER.txt (positions 254-255), decoded to human-readable text. Codes include V=Valid, R=Pending, E=Revoked by enforcement, M=Manufacturer, etc.
|
|
189
|
+
|
|
190
|
+
* `registrant_type`
|
|
191
|
+
* Definition: Type of entity that owns the aircraft.
|
|
192
|
+
* Examples: `"Individual"`, `"Corporation"`, `"LLC"`, `"Government"`
|
|
193
|
+
* Derivation: `TYPE REGISTRANT` field from MASTER.txt (position 57), decoded: 1=Individual, 2=Partnership, 3=Corporation, 4=Co-Owned, 5=Government, 7=LLC, 8=Non Citizen Corporation, 9=Non Citizen Co-Owned.
|
|
194
|
+
|
|
195
|
+
* `fractional_ownership`
|
|
196
|
+
* Definition: Whether the registration has fractional ownership.
|
|
197
|
+
* Examples: `"true"`, `"false"`
|
|
198
|
+
* Derivation: `FRACTIONAL OWNERSHIP` field from MASTER.txt (position 266), `Y` = true, blank = false.
|
|
199
|
+
|
|
200
|
+
#### Certification
|
|
201
|
+
|
|
202
|
+
* `airworthiness_class`
|
|
203
|
+
* Definition: Airworthiness certificate classification.
|
|
204
|
+
* Examples: `"Standard"`, `"Experimental"`, `"Restricted"`, `"Light Sport"`
|
|
205
|
+
* Derivation: `CERTIFICATION A - AIRWORTHINESS CLASSIFICATION CODE` from MASTER.txt (position 238), decoded: 1=Standard, 2=Limited, 3=Restricted, 4=Experimental, 5=Provisional, 6=Multiple, 7=Primary, 8=Special Flight Permit, 9=Light Sport.
|
|
206
|
+
|
|
207
|
+
* `approved_operations`
|
|
208
|
+
* Definition: Approved operations for the airworthiness certificate.
|
|
209
|
+
* Examples: `"Normal"`, `"Utility"`, `"Agriculture and Pest Control"`, `"Amateur Built"`
|
|
210
|
+
* Derivation: `CERTIFICATION B - APPROVED OPERATION CODES` from MASTER.txt (positions 239-247), decoded based on airworthiness class.
|
|
211
|
+
|
|
212
|
+
#### Registrant Information
|
|
213
|
+
|
|
214
|
+
* `registrant_name`
|
|
215
|
+
* Definition: Name of the registered owner as it appears on the Application for Registration.
|
|
216
|
+
* Examples: `"SMITH JOHN"`, `"DELTA AIR LINES INC"`, `"UNITED STATES GOVERNMENT"`
|
|
217
|
+
* Derivation: `REGISTRANT'S NAME` field from MASTER.txt, positions 59-108.
|
|
218
|
+
|
|
219
|
+
* `registrant_address`
|
|
220
|
+
* Definition: Formatted street address of the registrant.
|
|
221
|
+
* Derivation: Concatenation of `STREET1` (positions 110-142) and `STREET2` (positions 144-176) from MASTER.txt.
|
|
222
|
+
|
|
223
|
+
* `registrant_city`
|
|
224
|
+
* Definition: City of the registrant.
|
|
225
|
+
* Examples: `"ATLANTA"`, `"WICHITA"`, `"SEATTLE"`
|
|
226
|
+
* Derivation: `REGISTRANT'S CITY` field from MASTER.txt, positions 178-195.
|
|
227
|
+
|
|
228
|
+
* `registrant_state`
|
|
229
|
+
* Definition: Two-letter state code of the registrant.
|
|
230
|
+
* Examples: `"GA"`, `"KS"`, `"WA"`
|
|
231
|
+
* Derivation: `REGISTRANT'S STATE` field from MASTER.txt, positions 197-198.
|
|
232
|
+
|
|
233
|
+
* `registrant_zip_code`
|
|
234
|
+
* Definition: Postal ZIP code of the registrant.
|
|
235
|
+
* Examples: `"30320"`, `"67201-1234"`
|
|
236
|
+
* Derivation: `REGISTRANT'S ZIP CODE` field from MASTER.txt, positions 200-209.
|
|
237
|
+
|
|
238
|
+
* `registrant_region`
|
|
239
|
+
* Definition: FAA region of the registrant.
|
|
240
|
+
* Examples: `"Eastern"`, `"Western-Pacific"`, `"Great Lakes"`
|
|
241
|
+
* Derivation: `REGISTRANT'S REGION` field from MASTER.txt (position 211), decoded: 1=Eastern, 2=Southwestern, 3=Central, 4=Western-Pacific, 5=Alaskan, 7=Southern, 8=European, C=Great Lakes, E=New England, S=Northwest Mountain.
|
|
242
|
+
|
|
243
|
+
#### Dates
|
|
244
|
+
|
|
245
|
+
* `last_activity_date`
|
|
246
|
+
* Definition: Date of last registration activity.
|
|
247
|
+
* Examples: `"2024/03/15"`
|
|
248
|
+
* Derivation: `LAST ACTIVITY DATE` from MASTER.txt (positions 220-227), format YYYY/MM/DD.
|
|
249
|
+
|
|
250
|
+
* `certificate_issue_date`
|
|
251
|
+
* Definition: Date the registration certificate was issued.
|
|
252
|
+
* Examples: `"2023/06/01"`
|
|
253
|
+
* Derivation: `CERTIFICATE ISSUE DATE` from MASTER.txt (positions 229-236), format YYYY/MM/DD.
|
|
254
|
+
|
|
255
|
+
* `airworthiness_date`
|
|
256
|
+
* Definition: Date of airworthiness certification.
|
|
257
|
+
* Examples: `"2001/09/14"`
|
|
258
|
+
* Derivation: `AIRWORTHINESS DATE` from MASTER.txt (positions 268-275).
|
|
259
|
+
|
|
260
|
+
* `expiration_date`
|
|
261
|
+
* Definition: Certificate of Registration expiration date.
|
|
262
|
+
* Examples: `"2027/03/31"`
|
|
263
|
+
* Derivation: `EXPIRATION DATE` from MASTER.txt (positions 532-539), format YYYY/MM/DD.
|
|
264
|
+
|
|
265
|
+
#### Co-Owners
|
|
266
|
+
|
|
267
|
+
* `other_owner_name`
|
|
268
|
+
* Definition: Co-owner or partnership name (up to 5 additional names).
|
|
269
|
+
* Derivation: `OTHER NAME 1` through `OTHER NAME 5` from MASTER.txt (positions 277-530).
|
|
270
|
+
* Note: Stored as multiple atoms when multiple co-owners exist.
|
|
271
|
+
|
|
272
|
+
#### Kit Aircraft
|
|
273
|
+
|
|
274
|
+
* `kit_manufacturer`
|
|
275
|
+
* Definition: Kit manufacturer name (for kit-built aircraft).
|
|
276
|
+
* Derivation: `KIT MFR` from MASTER.txt (positions 550-579).
|
|
277
|
+
|
|
278
|
+
* `kit_model`
|
|
279
|
+
* Definition: Kit model name.
|
|
280
|
+
* Derivation: `KIT MODEL` from MASTER.txt (positions 581-600).
|
|
281
|
+
|
|
282
|
+
### Aircraft Properties (from DEREG.txt -- additional fields)
|
|
283
|
+
|
|
284
|
+
Deregistered aircraft share all properties above where available, plus:
|
|
285
|
+
|
|
286
|
+
* `cancel_date`
|
|
287
|
+
* Definition: Date the registration was canceled.
|
|
288
|
+
* Examples: `"2023/01/15"`
|
|
289
|
+
* Derivation: `CANCEL DATE` from DEREG.txt (positions 240-247).
|
|
290
|
+
|
|
291
|
+
* `export_country`
|
|
292
|
+
* Definition: Country the aircraft was exported to upon deregistration.
|
|
293
|
+
* Examples: `"CANADA"`, `"BRAZIL"`
|
|
294
|
+
* Derivation: `EXPORT COUNTRY` from DEREG.txt (positions 260-277).
|
|
295
|
+
|
|
296
|
+
### Organization Properties (from DEALER.txt)
|
|
297
|
+
|
|
298
|
+
#### Identity
|
|
299
|
+
|
|
300
|
+
* `dealer_certificate_number`
|
|
301
|
+
* Definition: FAA dealer certificate number.
|
|
302
|
+
* Examples: `"24-0001"`, `"23-1234"`
|
|
303
|
+
* Derivation: `CERTIFICATE NUMBER` from DEALER.txt (positions 1-7), format YY-NNNN.
|
|
304
|
+
|
|
305
|
+
* `dealer_ownership_type`
|
|
306
|
+
* Definition: Ownership type of the dealer.
|
|
307
|
+
* Examples: `"Individual"`, `"Corporation"`, `"LLC"`
|
|
308
|
+
* Derivation: `OWNERSHIP` from DEALER.txt (position 9), decoded: 1=Individual, 2=Partnership, 3=Corporation, 4=Co-Ownership, 7=LLC, 8=Non Citizen Corporation.
|
|
309
|
+
|
|
310
|
+
* `dealer_certificate_issue_date`
|
|
311
|
+
* Definition: Date the dealer certificate was issued.
|
|
312
|
+
* Derivation: `CERTIFICATE ISSUE DATE` from DEALER.txt (positions 11-18), format YYYYMMDD.
|
|
313
|
+
|
|
314
|
+
* `dealer_expiration_date`
|
|
315
|
+
* Definition: Dealer certificate expiration date.
|
|
316
|
+
* Derivation: `EXPIRATION DATE` from DEALER.txt (positions 20-27), format YYYYMMDD.
|
|
317
|
+
|
|
318
|
+
* `dealer_expired`
|
|
319
|
+
* Definition: Whether the dealer certificate has expired.
|
|
320
|
+
* Examples: `"true"`, `"false"`
|
|
321
|
+
* Derivation: `EXPIRATION FLAG` from DEALER.txt (position 29), `*` = true.
|
|
322
|
+
|
|
323
|
+
#### Address
|
|
324
|
+
|
|
325
|
+
* `dealer_address`
|
|
326
|
+
* Definition: Mailing address of the dealer.
|
|
327
|
+
* Derivation: Concatenation of DEALER.txt address fields (STREET1, STREET2, CITY, STATE, ZIP CODE).
|
|
328
|
+
|
|
329
|
+
### Document Properties (from DOCINDEX.txt)
|
|
330
|
+
|
|
331
|
+
* `faa_document_id`
|
|
332
|
+
* Definition: Unique document identifier assigned by the FAA.
|
|
333
|
+
* Examples: `"000123456789"`
|
|
334
|
+
* Derivation: `DOCUMENT ID` from DOCINDEX.txt (positions 92-103).
|
|
335
|
+
|
|
336
|
+
* `collateral_type`
|
|
337
|
+
* Definition: Type of collateral the document pertains to.
|
|
338
|
+
* Examples: `"Aircraft"`, `"Engine"`, `"Propeller"`, `"Spare Parts"`
|
|
339
|
+
* Derivation: `TYPE COLLATERAL` from DOCINDEX.txt (position 1), decoded: 1=Aircraft, 2=Engine, 3=Propeller, 4=Spare Parts, 5=Document, 9=Unidentified.
|
|
340
|
+
|
|
341
|
+
* `collateral_identifier`
|
|
342
|
+
* Definition: Collateral identification -- typically an N-number for aircraft, or make/model/serial for engines and propellers.
|
|
343
|
+
* Derivation: `COLLATERAL` from DOCINDEX.txt (positions 3-39).
|
|
344
|
+
|
|
345
|
+
* `document_receipt_date`
|
|
346
|
+
* Definition: Date the document was filed for recordation with the Aircraft Registry.
|
|
347
|
+
* Derivation: `DOCUMENT RECEIPT DATE` from DOCINDEX.txt (positions 105-112), format YYYYMMDD.
|
|
348
|
+
|
|
349
|
+
* `document_type`
|
|
350
|
+
* Definition: Type of document being indexed.
|
|
351
|
+
* Examples: `"BOS"` (Evidence of Ownership), `"S/A"` (Security Conveyance/Lien), `"REL"` (Lien Release)
|
|
352
|
+
* Derivation: `DOC TYPE` from DOCINDEX.txt (positions 165-167).
|
|
353
|
+
|
|
354
|
+
### Aircraft Properties (from RESERVED.txt)
|
|
355
|
+
|
|
356
|
+
Reserved N-numbers produce minimal `aircraft` records:
|
|
357
|
+
|
|
358
|
+
* `reservation_type`
|
|
359
|
+
* Definition: Type of N-number reservation.
|
|
360
|
+
* Examples: `"Fee paid"`, `"Reserved to manufacturer"`, `"N-Number change in process"`
|
|
361
|
+
* Derivation: `TYPE RESERVATION` from RESERVED.txt (positions 168-169), decoded.
|
|
362
|
+
|
|
363
|
+
* `reservation_date`
|
|
364
|
+
* Definition: Date the N-number was reserved.
|
|
365
|
+
* Derivation: `RESERVE DATE` from RESERVED.txt (positions 159-166), format YYYYMMDD.
|
|
366
|
+
|
|
367
|
+
* `reservation_expiration_date`
|
|
368
|
+
* Definition: Date the reservation expiration notice was sent.
|
|
369
|
+
* Derivation: `EXPIRATION NOTICE DATE` from RESERVED.txt (positions 171-178), format YYYYMMDD.
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
## Entity Relationships
|
|
374
|
+
|
|
375
|
+
```
|
|
376
|
+
aircraft ──[is_located_at]──────→ location (registrant city/state)
|
|
377
|
+
aircraft ──[has_document]───────→ document (via N-number in DOCINDEX collateral)
|
|
378
|
+
organization ──[is_located_at]──────→ location (dealer address)
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
---
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
# Dataset schema for FAA Releasable Aircraft Database.
|
|
2
|
+
#
|
|
3
|
+
# Source: https://www.faa.gov/licenses_certificates/aircraft_certification/aircraft_registry/releasable_aircraft_download
|
|
4
|
+
# Updated daily at 11:30 PM CT.
|
|
5
|
+
#
|
|
6
|
+
# This schema describes U.S. civil aircraft registrations from the FAA
|
|
7
|
+
# Aircraft Registry, including MASTER.txt records joined with ENGINE.txt
|
|
8
|
+
# reference data for engine manufacturer, model, and performance details.
|
|
9
|
+
name: "faaregistry"
|
|
10
|
+
description: "FAA aircraft registration data including N-number identity, aircraft and engine details, registration status, certification, and registrant information"
|
|
11
|
+
|
|
12
|
+
extraction:
|
|
13
|
+
flavors: closed
|
|
14
|
+
properties: closed
|
|
15
|
+
relationships: closed
|
|
16
|
+
attributes: closed
|
|
17
|
+
events: closed
|
|
18
|
+
|
|
19
|
+
flavors:
|
|
20
|
+
- name: "aircraft"
|
|
21
|
+
description: "An aircraft such as a plane, helicopter, glider, or unmanned aerial vehicle"
|
|
22
|
+
display_name: "Aircraft"
|
|
23
|
+
mergeability: not_mergeable
|
|
24
|
+
strong_id_properties: ["aircraft_id"]
|
|
25
|
+
passive: true
|
|
26
|
+
|
|
27
|
+
- name: "organization"
|
|
28
|
+
description: "A particular business, institution, or organization such as a corporation, university, government agency, or non-profit"
|
|
29
|
+
display_name: "Organization"
|
|
30
|
+
mergeability: not_mergeable
|
|
31
|
+
passive: true
|
|
32
|
+
|
|
33
|
+
- name: "person"
|
|
34
|
+
description: "A named individual such as a business owner, executive, or public figure"
|
|
35
|
+
display_name: "Person"
|
|
36
|
+
mergeability: not_mergeable
|
|
37
|
+
passive: true
|
|
38
|
+
|
|
39
|
+
- name: "location"
|
|
40
|
+
description: "A specific named geographic location such as a city, country, region, or landmark"
|
|
41
|
+
display_name: "Location"
|
|
42
|
+
mergeability: not_mergeable
|
|
43
|
+
examples: ["WICHITA, KS", "SEATTLE, WA", "ATLANTA, GA"]
|
|
44
|
+
passive: true
|
|
45
|
+
|
|
46
|
+
properties:
|
|
47
|
+
# Identity and Registration
|
|
48
|
+
- name: "aircraft_id"
|
|
49
|
+
type: string
|
|
50
|
+
description: "Composite aircraft identifier combining manufacturer name and serial number (format: MANUFACTURER:SERIAL)"
|
|
51
|
+
display_name: "Aircraft ID"
|
|
52
|
+
mergeability: not_mergeable
|
|
53
|
+
domain_flavors: ["aircraft"]
|
|
54
|
+
examples: ["CESSNA:172S10245", "BOEING:28-7990244"]
|
|
55
|
+
passive: true
|
|
56
|
+
|
|
57
|
+
- name: "n_number"
|
|
58
|
+
type: string
|
|
59
|
+
description: "FAA registration N-number uniquely identifying a U.S. civil aircraft"
|
|
60
|
+
display_name: "N-Number"
|
|
61
|
+
mergeability: not_mergeable
|
|
62
|
+
domain_flavors: ["aircraft"]
|
|
63
|
+
examples: ["12345", "789AB"]
|
|
64
|
+
passive: true
|
|
65
|
+
|
|
66
|
+
- name: "serial_number"
|
|
67
|
+
type: string
|
|
68
|
+
description: "Complete aircraft serial number assigned by the manufacturer"
|
|
69
|
+
display_name: "Serial Number"
|
|
70
|
+
mergeability: not_mergeable
|
|
71
|
+
domain_flavors: ["aircraft"]
|
|
72
|
+
examples: ["28-7990244", "172S10245"]
|
|
73
|
+
passive: true
|
|
74
|
+
|
|
75
|
+
- name: "mode_s_code_hex"
|
|
76
|
+
type: string
|
|
77
|
+
description: "Aircraft Mode S transponder code in hexadecimal format (ICAO 24-bit address)"
|
|
78
|
+
display_name: "Mode S Code (Hex)"
|
|
79
|
+
mergeability: not_mergeable
|
|
80
|
+
domain_flavors: ["aircraft"]
|
|
81
|
+
examples: ["A12345", "ABCDEF"]
|
|
82
|
+
passive: true
|
|
83
|
+
|
|
84
|
+
- name: "mode_s_code"
|
|
85
|
+
type: string
|
|
86
|
+
description: "Aircraft Mode S transponder code in octal format"
|
|
87
|
+
display_name: "Mode S Code"
|
|
88
|
+
mergeability: not_mergeable
|
|
89
|
+
domain_flavors: ["aircraft"]
|
|
90
|
+
passive: true
|
|
91
|
+
|
|
92
|
+
- name: "unique_id"
|
|
93
|
+
type: string
|
|
94
|
+
description: "FAA-assigned unique identification number for the registration record"
|
|
95
|
+
display_name: "Unique ID"
|
|
96
|
+
mergeability: not_mergeable
|
|
97
|
+
domain_flavors: ["aircraft"]
|
|
98
|
+
passive: true
|
|
99
|
+
|
|
100
|
+
# Aircraft Details (joined from ACFTREF.txt)
|
|
101
|
+
- name: "manufacturer_name"
|
|
102
|
+
type: string
|
|
103
|
+
description: "Name of the aircraft manufacturer, joined from the FAA aircraft reference table"
|
|
104
|
+
display_name: "Manufacturer Name"
|
|
105
|
+
mergeability: not_mergeable
|
|
106
|
+
domain_flavors: ["aircraft"]
|
|
107
|
+
examples: ["CESSNA", "BOEING", "PIPER", "BEECH"]
|
|
108
|
+
passive: true
|
|
109
|
+
|
|
110
|
+
- name: "model_name"
|
|
111
|
+
type: string
|
|
112
|
+
description: "Aircraft model and series name, joined from the FAA aircraft reference table"
|
|
113
|
+
display_name: "Model Name"
|
|
114
|
+
mergeability: not_mergeable
|
|
115
|
+
domain_flavors: ["aircraft"]
|
|
116
|
+
examples: ["172S", "737-800", "PA-28-181"]
|
|
117
|
+
passive: true
|
|
118
|
+
|
|
119
|
+
- name: "number_of_engines"
|
|
120
|
+
type: string
|
|
121
|
+
description: "Number of engines on the aircraft, from the FAA aircraft reference table"
|
|
122
|
+
display_name: "Number of Engines"
|
|
123
|
+
mergeability: not_mergeable
|
|
124
|
+
domain_flavors: ["aircraft"]
|
|
125
|
+
examples: ["1", "2", "4"]
|
|
126
|
+
passive: true
|
|
127
|
+
|
|
128
|
+
- name: "number_of_seats"
|
|
129
|
+
type: string
|
|
130
|
+
description: "Maximum number of seats in the aircraft, from the FAA aircraft reference table"
|
|
131
|
+
display_name: "Number of Seats"
|
|
132
|
+
mergeability: not_mergeable
|
|
133
|
+
domain_flavors: ["aircraft"]
|
|
134
|
+
examples: ["4", "189", "12"]
|
|
135
|
+
passive: true
|
|
136
|
+
|
|
137
|
+
- name: "aircraft_weight_class"
|
|
138
|
+
type: string
|
|
139
|
+
description: "Maximum gross takeoff weight classification of the aircraft"
|
|
140
|
+
display_name: "Aircraft Weight Class"
|
|
141
|
+
mergeability: not_mergeable
|
|
142
|
+
domain_flavors: ["aircraft"]
|
|
143
|
+
examples: ["Up to 12,499 lbs", "12,500 - 19,999 lbs", "20,000 and over"]
|
|
144
|
+
passive: true
|
|
145
|
+
|
|
146
|
+
- name: "cruising_speed"
|
|
147
|
+
type: string
|
|
148
|
+
description: "Average cruising speed of the aircraft in miles per hour, from the FAA aircraft reference table"
|
|
149
|
+
display_name: "Cruising Speed"
|
|
150
|
+
mergeability: not_mergeable
|
|
151
|
+
domain_flavors: ["aircraft"]
|
|
152
|
+
examples: ["124", "530"]
|
|
153
|
+
passive: true
|
|
154
|
+
|
|
155
|
+
- name: "aircraft_category"
|
|
156
|
+
type: string
|
|
157
|
+
description: "Land, sea, or amphibian classification of the aircraft"
|
|
158
|
+
display_name: "Aircraft Category"
|
|
159
|
+
mergeability: not_mergeable
|
|
160
|
+
domain_flavors: ["aircraft"]
|
|
161
|
+
examples: ["Land", "Sea", "Amphibian"]
|
|
162
|
+
passive: true
|
|
163
|
+
|
|
164
|
+
- name: "builder_certification"
|
|
165
|
+
type: string
|
|
166
|
+
description: "Builder certification classification indicating whether the aircraft is type certificated"
|
|
167
|
+
display_name: "Builder Certification"
|
|
168
|
+
mergeability: not_mergeable
|
|
169
|
+
domain_flavors: ["aircraft"]
|
|
170
|
+
examples: ["Type Certificated", "Not Type Certificated", "Light Sport"]
|
|
171
|
+
passive: true
|
|
172
|
+
|
|
173
|
+
- name: "type_certificate_data_sheet"
|
|
174
|
+
type: string
|
|
175
|
+
description: "FAA Type Certificate Data Sheet reference number"
|
|
176
|
+
display_name: "TC Data Sheet"
|
|
177
|
+
mergeability: not_mergeable
|
|
178
|
+
domain_flavors: ["aircraft"]
|
|
179
|
+
passive: true
|
|
180
|
+
|
|
181
|
+
- name: "type_certificate_holder"
|
|
182
|
+
type: string
|
|
183
|
+
description: "Name of the Type Certificate holder for this aircraft model"
|
|
184
|
+
display_name: "TC Data Holder"
|
|
185
|
+
mergeability: not_mergeable
|
|
186
|
+
domain_flavors: ["aircraft"]
|
|
187
|
+
passive: true
|
|
188
|
+
|
|
189
|
+
- name: "aircraft_type"
|
|
190
|
+
type: string
|
|
191
|
+
description: "Type of aircraft such as fixed wing, rotorcraft, glider, or balloon"
|
|
192
|
+
display_name: "Aircraft Type"
|
|
193
|
+
mergeability: not_mergeable
|
|
194
|
+
domain_flavors: ["aircraft"]
|
|
195
|
+
examples: ["Fixed wing single engine", "Rotorcraft", "Balloon"]
|
|
196
|
+
passive: true
|
|
197
|
+
|
|
198
|
+
- name: "engine_type"
|
|
199
|
+
type: string
|
|
200
|
+
description: "Type of engine installed on the aircraft"
|
|
201
|
+
display_name: "Engine Type"
|
|
202
|
+
mergeability: not_mergeable
|
|
203
|
+
domain_flavors: ["aircraft"]
|
|
204
|
+
examples: ["Reciprocating", "Turbo-fan", "Electric"]
|
|
205
|
+
passive: true
|
|
206
|
+
|
|
207
|
+
- name: "year_manufactured"
|
|
208
|
+
type: string
|
|
209
|
+
description: "Year the aircraft was manufactured"
|
|
210
|
+
display_name: "Year Manufactured"
|
|
211
|
+
mergeability: not_mergeable
|
|
212
|
+
domain_flavors: ["aircraft"]
|
|
213
|
+
examples: ["1978", "2023"]
|
|
214
|
+
passive: true
|
|
215
|
+
|
|
216
|
+
# Joined Engine Details (from ENGINE.txt)
|
|
217
|
+
- name: "engine_manufacturer"
|
|
218
|
+
type: string
|
|
219
|
+
description: "Name of the engine manufacturer, joined from the FAA engine reference table"
|
|
220
|
+
display_name: "Engine Manufacturer"
|
|
221
|
+
mergeability: not_mergeable
|
|
222
|
+
domain_flavors: ["aircraft"]
|
|
223
|
+
examples: ["LYCOMING", "CONT MOTOR", "P&W"]
|
|
224
|
+
passive: true
|
|
225
|
+
|
|
226
|
+
- name: "engine_model"
|
|
227
|
+
type: string
|
|
228
|
+
description: "Engine model name, joined from the FAA engine reference table"
|
|
229
|
+
display_name: "Engine Model"
|
|
230
|
+
mergeability: not_mergeable
|
|
231
|
+
domain_flavors: ["aircraft"]
|
|
232
|
+
examples: ["O-320-D2J", "IO-540"]
|
|
233
|
+
passive: true
|
|
234
|
+
|
|
235
|
+
- name: "engine_horsepower"
|
|
236
|
+
type: string
|
|
237
|
+
description: "Engine horsepower for reciprocating and turboprop engines, from the FAA engine reference table"
|
|
238
|
+
display_name: "Engine Horsepower"
|
|
239
|
+
mergeability: not_mergeable
|
|
240
|
+
domain_flavors: ["aircraft"]
|
|
241
|
+
examples: ["180", "310"]
|
|
242
|
+
passive: true
|
|
243
|
+
|
|
244
|
+
- name: "engine_thrust"
|
|
245
|
+
type: string
|
|
246
|
+
description: "Engine thrust in pounds for turbojet and turbofan engines, from the FAA engine reference table"
|
|
247
|
+
display_name: "Engine Thrust"
|
|
248
|
+
mergeability: not_mergeable
|
|
249
|
+
domain_flavors: ["aircraft"]
|
|
250
|
+
examples: ["27300", "56000"]
|
|
251
|
+
passive: true
|
|
252
|
+
|
|
253
|
+
# Registration Status
|
|
254
|
+
- name: "aircraft_registration_status"
|
|
255
|
+
type: string
|
|
256
|
+
description: "Current FAA registration status of the aircraft"
|
|
257
|
+
display_name: "Registration Status"
|
|
258
|
+
mergeability: not_mergeable
|
|
259
|
+
domain_flavors: ["aircraft"]
|
|
260
|
+
examples: ["Valid Registration", "Registration Expired", "Sale reported"]
|
|
261
|
+
passive: true
|
|
262
|
+
|
|
263
|
+
- name: "registrant_type"
|
|
264
|
+
type: string
|
|
265
|
+
description: "Type of entity that owns the aircraft"
|
|
266
|
+
display_name: "Registrant Type"
|
|
267
|
+
mergeability: not_mergeable
|
|
268
|
+
domain_flavors: ["person", "organization"]
|
|
269
|
+
examples: ["Individual", "Corporation", "LLC", "Government"]
|
|
270
|
+
passive: true
|
|
271
|
+
|
|
272
|
+
- name: "fractional_ownership"
|
|
273
|
+
type: string
|
|
274
|
+
description: "Whether the aircraft registration has fractional ownership"
|
|
275
|
+
display_name: "Fractional Ownership"
|
|
276
|
+
mergeability: not_mergeable
|
|
277
|
+
domain_flavors: ["aircraft"]
|
|
278
|
+
examples: ["true", "false"]
|
|
279
|
+
passive: true
|
|
280
|
+
|
|
281
|
+
# Certification
|
|
282
|
+
- name: "airworthiness_class"
|
|
283
|
+
type: string
|
|
284
|
+
description: "FAA airworthiness certificate classification"
|
|
285
|
+
display_name: "Airworthiness Class"
|
|
286
|
+
mergeability: not_mergeable
|
|
287
|
+
domain_flavors: ["aircraft"]
|
|
288
|
+
examples: ["Standard", "Experimental", "Restricted", "Light Sport"]
|
|
289
|
+
passive: true
|
|
290
|
+
|
|
291
|
+
# Registrant address (on person/organization entities)
|
|
292
|
+
- name: "address"
|
|
293
|
+
type: string
|
|
294
|
+
description: "Physical street address of the entity"
|
|
295
|
+
display_name: "Address"
|
|
296
|
+
mergeability: not_mergeable
|
|
297
|
+
domain_flavors: ["person", "organization"]
|
|
298
|
+
examples: ["1030 DELTA BLVD, ATLANTA, GA 30354"]
|
|
299
|
+
passive: true
|
|
300
|
+
|
|
301
|
+
# Dates
|
|
302
|
+
- name: "last_activity_date"
|
|
303
|
+
type: string
|
|
304
|
+
description: "Date of last registration activity"
|
|
305
|
+
display_name: "Last Activity Date"
|
|
306
|
+
mergeability: not_mergeable
|
|
307
|
+
domain_flavors: ["aircraft"]
|
|
308
|
+
passive: true
|
|
309
|
+
|
|
310
|
+
- name: "certificate_issue_date"
|
|
311
|
+
type: string
|
|
312
|
+
description: "Date the registration certificate was issued"
|
|
313
|
+
display_name: "Certificate Issue Date"
|
|
314
|
+
mergeability: not_mergeable
|
|
315
|
+
domain_flavors: ["aircraft"]
|
|
316
|
+
passive: true
|
|
317
|
+
|
|
318
|
+
- name: "airworthiness_date"
|
|
319
|
+
type: string
|
|
320
|
+
description: "Date of airworthiness certification"
|
|
321
|
+
display_name: "Airworthiness Date"
|
|
322
|
+
mergeability: not_mergeable
|
|
323
|
+
domain_flavors: ["aircraft"]
|
|
324
|
+
passive: true
|
|
325
|
+
|
|
326
|
+
- name: "expiration_date"
|
|
327
|
+
type: string
|
|
328
|
+
description: "Certificate of Registration expiration date"
|
|
329
|
+
display_name: "Expiration Date"
|
|
330
|
+
mergeability: not_mergeable
|
|
331
|
+
domain_flavors: ["aircraft"]
|
|
332
|
+
passive: true
|
|
333
|
+
|
|
334
|
+
# DEREG.txt-specific
|
|
335
|
+
- name: "cancel_date"
|
|
336
|
+
type: string
|
|
337
|
+
description: "Date the aircraft registration was canceled"
|
|
338
|
+
display_name: "Cancel Date"
|
|
339
|
+
mergeability: not_mergeable
|
|
340
|
+
domain_flavors: ["aircraft"]
|
|
341
|
+
passive: true
|
|
342
|
+
|
|
343
|
+
- name: "export_country"
|
|
344
|
+
type: string
|
|
345
|
+
description: "Country the aircraft was exported to upon deregistration"
|
|
346
|
+
display_name: "Export Country"
|
|
347
|
+
mergeability: not_mergeable
|
|
348
|
+
domain_flavors: ["aircraft"]
|
|
349
|
+
examples: ["AUSTRALIA", "CANADA", "BRAZIL"]
|
|
350
|
+
passive: true
|
|
351
|
+
|
|
352
|
+
# Kit Aircraft
|
|
353
|
+
- name: "kit_manufacturer"
|
|
354
|
+
type: string
|
|
355
|
+
description: "Kit manufacturer name for kit-built aircraft"
|
|
356
|
+
display_name: "Kit Manufacturer"
|
|
357
|
+
mergeability: not_mergeable
|
|
358
|
+
domain_flavors: ["aircraft"]
|
|
359
|
+
passive: true
|
|
360
|
+
|
|
361
|
+
- name: "kit_model"
|
|
362
|
+
type: string
|
|
363
|
+
description: "Kit model name for kit-built aircraft"
|
|
364
|
+
display_name: "Kit Model"
|
|
365
|
+
mergeability: not_mergeable
|
|
366
|
+
domain_flavors: ["aircraft"]
|
|
367
|
+
passive: true
|
|
368
|
+
|
|
369
|
+
relationships:
|
|
370
|
+
- name: "owns_aircraft"
|
|
371
|
+
description: "A person or organization owns (is the registered owner of) an aircraft"
|
|
372
|
+
display_name: "Owns Aircraft"
|
|
373
|
+
mergeability: not_mergeable
|
|
374
|
+
domain_flavors: ["person", "organization"]
|
|
375
|
+
target_flavors: ["aircraft"]
|
|
376
|
+
examples: ["DELTA AIR LINES INC owns aircraft N12345"]
|
|
377
|
+
passive: true
|
|
378
|
+
|
|
379
|
+
- name: "is_located_at"
|
|
380
|
+
description: "An entity is located at, operates in, resides in, is headquartered in, was born in, visits, or died in a location"
|
|
381
|
+
display_name: "Located At"
|
|
382
|
+
mergeability: not_mergeable
|
|
383
|
+
domain_flavors: ["person", "organization"]
|
|
384
|
+
target_flavors: ["location"]
|
|
385
|
+
examples: ["DELTA AIR LINES INC is located at ATLANTA, GA"]
|
|
386
|
+
passive: true
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Data Dictionary: LDA (Lobbying Disclosure Act)
|
|
2
|
+
|
|
3
|
+
Last updated: 2026-05-04
|
|
4
|
+
|
|
5
|
+
## Source Overview
|
|
6
|
+
|
|
7
|
+
Lobbying Disclosure Act filings (registrations, quarterly activity, etc.) from the **unified LDA.gov REST API**. The streamer polls `GET /api/v1/filings/`, stores raw JSON pages, and emits v2 `FetchMessage` records.
|
|
8
|
+
|
|
9
|
+
| Item | Value |
|
|
10
|
+
|------|--------|
|
|
11
|
+
| Pipeline / stream | Configured in `streams.yaml` (see deployment) |
|
|
12
|
+
| `Record.Source` | `lda` |
|
|
13
|
+
|
|
14
|
+
Anonymous access is rate-limited; optional API token improves throughput.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Entity Types
|
|
19
|
+
|
|
20
|
+
### `lda_filing`
|
|
21
|
+
|
|
22
|
+
One disclosure identified by API `filing_uuid`.
|
|
23
|
+
|
|
24
|
+
- **Subject name:** `filing_uuid` (stable, unique per disclosure).
|
|
25
|
+
- **Strong id:** `lda_filing_uuid` on the filing subject.
|
|
26
|
+
- **Resolver:** `NOT_MERGEABLE` passive filing entity.
|
|
27
|
+
- **Timestamp:** Parsed from `dt_posted` only (no wall-clock fallback). If `dt_posted` is missing or invalid, the filing is not atomized.
|
|
28
|
+
|
|
29
|
+
### `organization`
|
|
30
|
+
|
|
31
|
+
Either the **registrant** (lobbying firm) or **client** on a filing.
|
|
32
|
+
|
|
33
|
+
- **Subject name:** API `name` (legal / display name).
|
|
34
|
+
- **Strong ids:** `lda_registrant_id` (registrant rows) or `lda_client_internal_id` (client rows).
|
|
35
|
+
- **Role:** Property `lda_party_role` = `registrant` or `client` on the organization **record** (not on the filing).
|
|
36
|
+
- **Resolver:** Named-entity info is `MERGEABLE` (resolver / recordeval ER search) while retaining LDA **strong ids**; flavor-level resolver info remains `NOT_MERGEABLE` per passive schema.
|
|
37
|
+
- **Snippets:** Formatted **address** only when present (no LDA filing UUID prefix).
|
|
38
|
+
|
|
39
|
+
### `location`
|
|
40
|
+
|
|
41
|
+
Geographic label derived from registrant or client address fields for `is_located_at` edges.
|
|
42
|
+
|
|
43
|
+
- **Name:** Typically `City, State` or `City, State, Country`; when city is absent, `State, Country` or state-only per atomizer rules.
|
|
44
|
+
- **Resolver:** `MERGEABLE` named entity (no strong id), for soft clustering with other sources.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Properties
|
|
49
|
+
|
|
50
|
+
### Filing
|
|
51
|
+
|
|
52
|
+
| Property | Description |
|
|
53
|
+
|----------|-------------|
|
|
54
|
+
| `lda_filing_uuid` | API `filing_uuid`. |
|
|
55
|
+
| `lda_filing_type` | Machine code (`filing_type`), e.g. `RR`, `Q1`. |
|
|
56
|
+
| `lda_filing_type_display` | Human label (`filing_type_display`). |
|
|
57
|
+
| `lda_filing_year` | Reporting year (float in schema). |
|
|
58
|
+
| `lda_filing_period_display` | Period label, e.g. quarter. |
|
|
59
|
+
| `lda_income` | Income string when present. |
|
|
60
|
+
| `lda_expenses` | Expenses string when present. |
|
|
61
|
+
| `lda_dt_posted` | Raw ISO `dt_posted` from API. |
|
|
62
|
+
| `lda_filing_document_url` | Public document URL. |
|
|
63
|
+
| `lda_posted_by_name` | Poster name when present. |
|
|
64
|
+
| `lda_lobbying_causes` | Repeated **once per** `lobbying_activities[]` row (`CODE (Display)`). Same pattern as patent **`cpc_code`**: narrative text is quad attribute **`lda_lobbying_cause_description`** on that atom (API `description` field). **Only on filing**; omitted if activities array is empty. |
|
|
65
|
+
|
|
66
|
+
### Organization
|
|
67
|
+
|
|
68
|
+
| Property | Description |
|
|
69
|
+
|----------|-------------|
|
|
70
|
+
| `lda_party_role` | `registrant` or `client`. |
|
|
71
|
+
| `lda_registrant_id` | Registrant API id as string. |
|
|
72
|
+
| `lda_client_internal_id` | Client row id (`client.id`) as string. |
|
|
73
|
+
| `address` | Single-line formatted address (street/city/state/zip + country). |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Entity Relationships
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
lda_filing ──[lda_registrant]──→ organization (registrant)
|
|
81
|
+
lda_filing ──[lda_client]──────→ organization (client)
|
|
82
|
+
|
|
83
|
+
organization ──[is_located_at]──→ location
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
- **`lda_registrant` / `lda_client`:** Target atoms on the **`lda_filing`** record point at the same organization identities emitted as separate **organization** records for that page (strong ids + properties).
|
|
87
|
+
- **`is_located_at`:** On each **organization** record when the atomizer can derive a location name from city/state/country rules.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Records Per Filing
|
|
92
|
+
|
|
93
|
+
For a typical filing with registrant and client, atomization yields **up to three** records: one filing, one registrant organization, one client organization. Either org may be omitted if required API fields are missing.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Citations
|
|
98
|
+
|
|
99
|
+
Primary citation text is the filing `url` when present; otherwise a synthetic label referencing `filing_uuid`.
|
|
100
|
+
|
|
101
|
+
---
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Dataset schema for U.S. Lobbying Disclosure Act (LDA) filings from the
|
|
2
|
+
# Congress/Senate unified REST API (https://lda.gov/api/).
|
|
3
|
+
#
|
|
4
|
+
# Atomizer output uses Record.Source "lda". Filings are passive filing entities
|
|
5
|
+
# keyed by lda_filing_uuid; registrant and client are organization entities linked
|
|
6
|
+
# from the filing via lda_registrant / lda_client relationships.
|
|
7
|
+
name: "lda"
|
|
8
|
+
description: "Lobbying Disclosure Act LD-1/LD-2 filings (registrations and quarterly activity) from the LDA.gov REST API"
|
|
9
|
+
|
|
10
|
+
extraction:
|
|
11
|
+
flavors: closed
|
|
12
|
+
properties: closed
|
|
13
|
+
relationships: closed
|
|
14
|
+
attributes: closed
|
|
15
|
+
events: closed
|
|
16
|
+
|
|
17
|
+
flavors:
|
|
18
|
+
- name: "lda_filing"
|
|
19
|
+
description: "A lobbying disclosure (registration or quarterly activity) identified by filing_uuid"
|
|
20
|
+
display_name: "LDA filing"
|
|
21
|
+
mergeability: not_mergeable
|
|
22
|
+
strong_id_properties: ["lda_filing_uuid"]
|
|
23
|
+
passive: true
|
|
24
|
+
|
|
25
|
+
- name: "organization"
|
|
26
|
+
description: "A particular business, institution, or organization such as a corporation, university, government agency, or non-profit"
|
|
27
|
+
display_name: "Organization"
|
|
28
|
+
mergeability: not_mergeable
|
|
29
|
+
strong_id_properties: ["lda_registrant_id", "lda_client_internal_id"]
|
|
30
|
+
passive: true
|
|
31
|
+
|
|
32
|
+
- name: "location"
|
|
33
|
+
description: "A specific named geographic location such as a city, country, region, or landmark"
|
|
34
|
+
display_name: "Location"
|
|
35
|
+
mergeability: not_mergeable
|
|
36
|
+
examples: ["Washington, DC, US", "Arlington, VA, US"]
|
|
37
|
+
passive: true
|
|
38
|
+
|
|
39
|
+
properties:
|
|
40
|
+
- name: "lda_filing_uuid"
|
|
41
|
+
type: string
|
|
42
|
+
description: "Stable UUID of the filing in the LDA REST API"
|
|
43
|
+
display_name: "LDA Filing UUID"
|
|
44
|
+
mergeability: not_mergeable
|
|
45
|
+
domain_flavors: ["lda_filing"]
|
|
46
|
+
passive: true
|
|
47
|
+
|
|
48
|
+
- name: "lda_filing_type"
|
|
49
|
+
type: string
|
|
50
|
+
description: "Machine filing type code (e.g. RR, Q1) from the API filing_type field; human label is attribute lda_filing_type_display when present"
|
|
51
|
+
display_name: "LDA Filing Type Code"
|
|
52
|
+
mergeability: not_mergeable
|
|
53
|
+
domain_flavors: ["lda_filing"]
|
|
54
|
+
passive: true
|
|
55
|
+
|
|
56
|
+
- name: "lda_filing_year"
|
|
57
|
+
type: float
|
|
58
|
+
description: "Reporting year associated with the filing"
|
|
59
|
+
display_name: "LDA Filing Year"
|
|
60
|
+
mergeability: not_mergeable
|
|
61
|
+
domain_flavors: ["lda_filing"]
|
|
62
|
+
passive: true
|
|
63
|
+
|
|
64
|
+
- name: "lda_filing_period"
|
|
65
|
+
type: string
|
|
66
|
+
description: "Reporting period code from filing_period (string or number in JSON); human label is attribute lda_filing_period_display when present"
|
|
67
|
+
display_name: "LDA Filing Period Code"
|
|
68
|
+
mergeability: not_mergeable
|
|
69
|
+
domain_flavors: ["lda_filing"]
|
|
70
|
+
passive: true
|
|
71
|
+
|
|
72
|
+
- name: "lda_income"
|
|
73
|
+
type: string
|
|
74
|
+
description: "Income amount reported on the filing when present (API decimal as string)"
|
|
75
|
+
display_name: "LDA Reported Income"
|
|
76
|
+
mergeability: not_mergeable
|
|
77
|
+
domain_flavors: ["lda_filing"]
|
|
78
|
+
passive: true
|
|
79
|
+
|
|
80
|
+
- name: "lda_expenses"
|
|
81
|
+
type: string
|
|
82
|
+
description: "Expenses amount reported on the filing when present (API decimal as string)"
|
|
83
|
+
display_name: "LDA Reported Expenses"
|
|
84
|
+
mergeability: not_mergeable
|
|
85
|
+
domain_flavors: ["lda_filing"]
|
|
86
|
+
passive: true
|
|
87
|
+
|
|
88
|
+
- name: "lda_dt_posted"
|
|
89
|
+
type: string
|
|
90
|
+
description: "Date and time the filing was posted (dt_posted), ISO-8601 string from the API"
|
|
91
|
+
display_name: "LDA Date Posted"
|
|
92
|
+
mergeability: not_mergeable
|
|
93
|
+
domain_flavors: ["lda_filing"]
|
|
94
|
+
passive: true
|
|
95
|
+
|
|
96
|
+
- name: "lda_filing_document_url"
|
|
97
|
+
type: string
|
|
98
|
+
description: "Public URL of the filing document (HTML/PDF) from filing_document_url"
|
|
99
|
+
display_name: "LDA Filing Document URL"
|
|
100
|
+
mergeability: not_mergeable
|
|
101
|
+
domain_flavors: ["lda_filing"]
|
|
102
|
+
passive: true
|
|
103
|
+
|
|
104
|
+
- name: "lda_posted_by_name"
|
|
105
|
+
type: string
|
|
106
|
+
description: "Name of the individual who posted the filing (posted_by_name)"
|
|
107
|
+
display_name: "LDA Posted By"
|
|
108
|
+
mergeability: not_mergeable
|
|
109
|
+
domain_flavors: ["lda_filing"]
|
|
110
|
+
passive: true
|
|
111
|
+
|
|
112
|
+
- name: "lda_lobbying_causes"
|
|
113
|
+
type: string
|
|
114
|
+
description: >-
|
|
115
|
+
One atom per lobbying_activities row: "CODE (Display)" from general_issue_code and
|
|
116
|
+
general_issue_code_display. Narrative text is attribute lda_lobbying_cause_description on the
|
|
117
|
+
same atom when present (same pattern as patent cpc_code + cpc_description).
|
|
118
|
+
display_name: "LDA Lobbying Causes"
|
|
119
|
+
mergeability: not_mergeable
|
|
120
|
+
domain_flavors: ["lda_filing"]
|
|
121
|
+
examples:
|
|
122
|
+
- "BUD (Budget/Appropriations)"
|
|
123
|
+
- "HCR (Health Issues)"
|
|
124
|
+
passive: true
|
|
125
|
+
|
|
126
|
+
- name: "lda_party_role"
|
|
127
|
+
type: string
|
|
128
|
+
description: "Whether this organization row is the lobbying registrant or the client on the linked LDA filing"
|
|
129
|
+
display_name: "LDA Party Role"
|
|
130
|
+
mergeability: not_mergeable
|
|
131
|
+
domain_flavors: ["organization"]
|
|
132
|
+
examples: ["registrant", "client"]
|
|
133
|
+
passive: true
|
|
134
|
+
|
|
135
|
+
- name: "lda_registrant_id"
|
|
136
|
+
type: string
|
|
137
|
+
description: "Stable LDA API registrant id (registrant.id) as a string, for entity resolution"
|
|
138
|
+
display_name: "LDA Registrant ID"
|
|
139
|
+
mergeability: not_mergeable
|
|
140
|
+
domain_flavors: ["organization"]
|
|
141
|
+
passive: true
|
|
142
|
+
|
|
143
|
+
- name: "lda_client_internal_id"
|
|
144
|
+
type: string
|
|
145
|
+
description: "Stable LDA API internal client row id (client.id) as a string, for entity resolution"
|
|
146
|
+
display_name: "LDA Client Internal ID"
|
|
147
|
+
mergeability: not_mergeable
|
|
148
|
+
domain_flavors: ["organization"]
|
|
149
|
+
passive: true
|
|
150
|
+
|
|
151
|
+
- name: "address"
|
|
152
|
+
type: string
|
|
153
|
+
description: "Physical street address of the entity"
|
|
154
|
+
display_name: "Address"
|
|
155
|
+
mergeability: not_mergeable
|
|
156
|
+
domain_flavors: ["organization"]
|
|
157
|
+
passive: true
|
|
158
|
+
|
|
159
|
+
relationships:
|
|
160
|
+
- name: "lda_registrant"
|
|
161
|
+
description: "The lobbying registrant firm that filed this LDA disclosure"
|
|
162
|
+
display_name: "LDA Registrant"
|
|
163
|
+
mergeability: not_mergeable
|
|
164
|
+
domain_flavors: ["lda_filing"]
|
|
165
|
+
target_flavors: ["organization"]
|
|
166
|
+
passive: true
|
|
167
|
+
|
|
168
|
+
- name: "lda_client"
|
|
169
|
+
description: "The client organization on whose behalf lobbying is reported for this LDA filing"
|
|
170
|
+
display_name: "LDA Client"
|
|
171
|
+
mergeability: not_mergeable
|
|
172
|
+
domain_flavors: ["lda_filing"]
|
|
173
|
+
target_flavors: ["organization"]
|
|
174
|
+
passive: true
|
|
175
|
+
|
|
176
|
+
- name: "is_located_at"
|
|
177
|
+
description: "An entity is located at, operates in, resides in, is headquartered in, was born in, visits, or died in a location"
|
|
178
|
+
display_name: "Located At"
|
|
179
|
+
mergeability: not_mergeable
|
|
180
|
+
domain_flavors: ["organization"]
|
|
181
|
+
target_flavors: ["location"]
|
|
182
|
+
passive: true
|
|
183
|
+
|
|
184
|
+
attributes:
|
|
185
|
+
- property: "lda_filing_period"
|
|
186
|
+
name: "lda_filing_period_display"
|
|
187
|
+
type: string
|
|
188
|
+
description: "Human-readable reporting period label from filing_period_display on the same atom as the period code"
|
|
189
|
+
display_name: "LDA Filing Period"
|
|
190
|
+
mergeability: not_mergeable
|
|
191
|
+
|
|
192
|
+
- property: "lda_filing_type"
|
|
193
|
+
name: "lda_filing_type_display"
|
|
194
|
+
type: string
|
|
195
|
+
description: "Human-readable filing type label from filing_type_display on the same atom as the type code"
|
|
196
|
+
display_name: "LDA Filing Type"
|
|
197
|
+
mergeability: not_mergeable
|
|
198
|
+
|
|
199
|
+
# Narrative for one lobbying issue row. Stored as a quad attribute on each lda_lobbying_causes atom.
|
|
200
|
+
- property: "lda_lobbying_causes"
|
|
201
|
+
name: "lda_lobbying_cause_description"
|
|
202
|
+
type: string
|
|
203
|
+
description: >-
|
|
204
|
+
lobbying_activities[].description for that row (optional trailing posted timestamp stripped).
|
|
205
|
+
Omitted as an attribute when the description is empty.
|
|
206
|
+
display_name: "LDA Lobbying Cause Description"
|
|
207
|
+
mergeability: not_mergeable
|
|
208
|
+
|
|
209
|
+
events: []
|
|
@@ -51,7 +51,7 @@ flavors:
|
|
|
51
51
|
passive: true
|
|
52
52
|
|
|
53
53
|
- name: "aircraft"
|
|
54
|
-
description: "An
|
|
54
|
+
description: "An aircraft such as a plane, helicopter, glider, or unmanned aerial vehicle"
|
|
55
55
|
display_name: "Aircraft"
|
|
56
56
|
mergeability: not_mergeable
|
|
57
57
|
strong_id_properties: ["sanctions_id"]
|