@yottagraph-app/data-model-skill 0.0.17 → 0.0.19

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yottagraph-app/data-model-skill",
3
- "version": "0.0.17",
3
+ "version": "0.0.19",
4
4
  "description": "Data model skill documentation for AI agents - entity types, properties, and schemas from Lovelace fetch sources",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,157 @@
1
+ # Data Dictionary: DOT Census
2
+
3
+ ## Source Overview
4
+
5
+ The FMCSA Company Census File is a daily snapshot of all motor carriers, brokers, shippers, and hazmat carriers registered with the Federal Motor Carrier Safety Administration (FMCSA), part of the U.S. Department of Transportation.
6
+
7
+ - **Publisher:** FMCSA / U.S. Department of Transportation
8
+ - **URL:** https://data.transportation.gov/Trucking-and-Motorcoaches/Company-Census-File/az4n-8mr2
9
+ - **Format:** CSV (~500K+ rows)
10
+ - **Cadence:** Updated daily from a 24-hour-old FMCSA database snapshot
11
+ - **Source name:** `dotcensus`
12
+
13
+ Each row represents one registered entity identified by a unique USDOT number. The file contains identity, physical location, fleet composition, carrier operation type, and safety ratings.
14
+
15
+ **Limitations:** The census reflects registration data, not real-time operational status. Fleet sizes and driver counts are self-reported by carriers during MCS-150 filings and may be stale. Safety ratings are assigned only after compliance reviews and are absent for most carriers.
16
+
17
+ ---
18
+
19
+ ## Entity Types
20
+
21
+ ### `organization`
22
+
23
+ A motor carrier, broker, shipper, or other entity registered with FMCSA.
24
+
25
+ - Primary key: `usdot_number` (USDOT Number, unique per registrant)
26
+ - Entity resolver: named entity, MERGEABLE. Strong ID = `usdot_number`. Disambiguation snippet includes the physical address when available.
27
+ - Name: uses `DBA_NAME` when it differs from `LEGAL_NAME`; otherwise uses `LEGAL_NAME`.
28
+
29
+ ### `legal_entity`
30
+
31
+ The legal owner of a carrier when `LEGAL_NAME` differs from `DBA_NAME`. Represents the person or organization that legally owns the business operating under the DBA name.
32
+
33
+ - Primary key: none (resolved by name)
34
+ - Entity resolver: named entity, MERGEABLE. Disambiguation snippet includes the entity name.
35
+ - Only produced when `DBA_NAME` is present and differs from `LEGAL_NAME`.
36
+
37
+ ### `location`
38
+
39
+ The physical location (city + state) of a registered carrier.
40
+
41
+ - Primary key: none (resolved by name)
42
+ - Entity resolver: named entity, MERGEABLE. Disambiguation snippet includes the formatted location name.
43
+ - Name format: `"{city}, {state}"` or `"{city}, {state}, {country}"` when country is present.
44
+
45
+ ---
46
+
47
+ ## Properties
48
+
49
+ ### Organization Properties
50
+
51
+ #### Identity and Registration
52
+
53
+ * `usdot_number`
54
+ * Definition: USDOT number assigned by FMCSA, unique per registered entity.
55
+ * Examples: `"12345"`, `"99999"`
56
+ * Derivation: `DOT_NUMBER` column. Emitted as both a strong ID for entity resolution and as a property atom on every record.
57
+
58
+ * `address`
59
+ * Definition: Physical street address of the carrier.
60
+ * Examples: `"21154 HWY EAST, SILOAM SPRINGS, AR 72761"`, `"100 Main St, Dallas, TX 75201"`
61
+ * Derivation: Concatenation of `PHY_STREET`, `PHY_CITY`, `PHY_STATE`, and `PHY_ZIP` columns.
62
+
63
+ * `dot_phone_number`
64
+ * Definition: Primary phone number on file with FMCSA.
65
+ * Examples: `"5551234567"`
66
+ * Derivation: `PHONE` column.
67
+
68
+ * `dot_business_org_type`
69
+ * Definition: Business organization type of the registrant.
70
+ * Examples: `"Individual"`, `"Partnership"`, `"Corporation"`
71
+ * Derivation: `BUSINESS_ORG_ID` column decoded from numeric codes (1=Individual, 2=Partnership, 3=Corporation).
72
+
73
+ * `dot_entity_type`
74
+ * Definition: FMCSA entity type indicating the registrant's role in freight transportation.
75
+ * Examples: `"Carrier"`, `"Carrier; Broker"`, `"Carrier; Shipper"`
76
+ * Derivation: `CARSHIP` column. Semicolon-delimited code list decoded from single-letter codes (C=Carrier, B=Broker, S=Shipper, T=Cargo Tank, R=Registrant).
77
+
78
+ * `dot_operating_authority`
79
+ * Definition: Operating authority classification describing the carrier's authorization type.
80
+ * Examples: `"AUTHORIZED FOR HIRE"`, `"PRIVATE PROPERTY"`, `"EXEMPT FOR HIRE"`
81
+ * Derivation: `CLASSDEF` column, passed through as-is.
82
+
83
+ #### Carrier Status and Operations
84
+
85
+ * `dot_carrier_status`
86
+ * Definition: FMCSA carrier registration status.
87
+ * Examples: `"A (Active)"`, `"I (Inactive)"`, `"N (Not Authorized)"`
88
+ * Derivation: `STATUS_CODE` column decoded from single-letter codes.
89
+
90
+ * `dot_carrier_operation_type`
91
+ * Definition: Type of carrier operation based on registration.
92
+ * Examples: `"A (Interstate)"`, `"B (Intrastate Hazmat)"`, `"C (Intrastate Non-Hazmat)"`
93
+ * Derivation: `CARRIER_OPERATION` column decoded from single-letter codes.
94
+ * Note: The B/C distinction reflects the carrier's registration type, not actual hazmat activity. A carrier registered as C (non-hazmat) can still transport hazmat (see `dot_hazmat_indicator`).
95
+
96
+ * `dot_hazmat_indicator`
97
+ * Definition: Whether the carrier transports hazardous materials.
98
+ * Examples: `1.0` (yes), `0.0` (no)
99
+ * Derivation: `HM_Ind` column. `"Y"` → 1.0, `"N"` → 0.0. Omitted when blank.
100
+
101
+ #### Fleet Composition
102
+
103
+ * `dot_total_drivers`
104
+ * Definition: Total number of drivers reported by the carrier.
105
+ * Examples: `10.0`, `250.0`
106
+ * Derivation: `TOTAL_DRIVERS` column, parsed as float. Omitted when zero or blank.
107
+
108
+ * `dot_total_power_units`
109
+ * Definition: Total number of power units (trucks, tractors) operated by the carrier.
110
+ * Examples: `5.0`, `1200.0`
111
+ * Derivation: `POWER_UNITS` column, parsed as float. Omitted when zero or blank.
112
+
113
+ * `dot_total_bus_units`
114
+ * Definition: Total number of bus units operated by the carrier.
115
+ * Examples: `2.0`, `50.0`
116
+ * Derivation: `BUS_UNITS` column, parsed as float. Omitted when zero or blank.
117
+
118
+ * `dot_fleet_size_category`
119
+ * Definition: Fleet size category assigned by FMCSA based on total power units.
120
+ * Examples: `"A (1-6 power units)"`, `"D (20-100 power units)"`, `"F (1000+ power units)"`
121
+ * Derivation: `FLEETSIZE` column decoded from single-letter codes. Omitted when `"0"` (none reported).
122
+
123
+ #### Safety
124
+
125
+ * `dot_safety_rating`
126
+ * Definition: FMCSA safety rating assigned during a compliance review.
127
+ * Examples: `"Satisfactory"`, `"Conditional"`, `"Unsatisfactory"`
128
+ * Derivation: `SAFETY_RATING` column decoded from single-letter codes (S, C, U).
129
+ * Note: Most carriers have no safety rating — it is only assigned after a compliance review.
130
+
131
+ * `dot_safety_rating_date`
132
+ * Definition: Date the safety rating was assigned.
133
+ * Examples: `"2024-01-01"`
134
+ * Derivation: `SAFETY_RATING_DATE` column parsed from `YYYYMMDD` format, output as `YYYY-MM-DD`.
135
+
136
+ #### Filing Dates
137
+
138
+ * `dot_last_mcs150_filing_date`
139
+ * Definition: Date the carrier last filed or updated their MCS-150 Motor Carrier Identification Report.
140
+ * Examples: `"2024-01-01"`
141
+ * Derivation: `MCS150_DATE` column parsed from `YYYYMMDD HHMM` format, output as `YYYY-MM-DD`.
142
+
143
+ ### Timestamp Derivation
144
+
145
+ Record timestamps are derived in priority order: `ADD_DATE` (carrier registration date), then `MCS150_DATE` (last MCS-150 filing). Rows where neither date parses successfully are dropped.
146
+
147
+ ---
148
+
149
+ ## Entity Relationships Summary
150
+
151
+ ```
152
+ legal_entity ──[doing_business_as]──→ organization
153
+ organization ──[is_located_at]──────→ location
154
+ ```
155
+
156
+ - `doing_business_as`: Links the legal owner (`LEGAL_NAME`) to the business operating name (`DBA_NAME`). Only produced when the two names differ.
157
+ - `is_located_at`: Links the carrier to its physical location. Only produced when both `PHY_CITY` and `PHY_STATE` are present.
@@ -0,0 +1,196 @@
1
+ # Dataset schema for FMCSA Company Census File (DOT Motor Carrier Census).
2
+ #
3
+ # Source: https://data.transportation.gov/Trucking-and-Motorcoaches/Company-Census-File/az4n-8mr2
4
+ # Updated daily by FMCSA from a 24-hour-old database snapshot.
5
+ #
6
+ # This schema describes motor carrier entities registered with the Federal
7
+ # Motor Carrier Safety Administration, including identity, physical location,
8
+ # fleet composition, and safety ratings.
9
+ name: "dotcensus"
10
+ description: "FMCSA motor carrier company census data including registration, fleet size, carrier operations, and safety ratings from the DOT Company Census File"
11
+
12
+ extraction:
13
+ flavors: closed
14
+ properties: closed
15
+ relationships: closed
16
+ attributes: closed
17
+ events: closed
18
+
19
+ flavors:
20
+ - name: "organization"
21
+ description: "A particular business, institution, or organization such as a corporation, university, government agency, or non-profit"
22
+ display_name: "Organization"
23
+ mergeability: not_mergeable
24
+ strong_id_properties: ["usdot_number"]
25
+ passive: true
26
+
27
+ - name: "person"
28
+ description: "A named individual such as a business owner, executive, or public figure"
29
+ display_name: "Person"
30
+ mergeability: not_mergeable
31
+ passive: true
32
+
33
+ - name: "location"
34
+ description: "A specific named geographic location such as a city, country, region, or landmark"
35
+ display_name: "Location"
36
+ mergeability: not_mergeable
37
+ examples: ["New York City", "San Francisco", "North America", "Bakery Square"]
38
+ passive: true
39
+
40
+ properties:
41
+ - name: "usdot_number"
42
+ type: string
43
+ description: "USDOT number assigned by FMCSA, uniquely identifying a registered motor carrier, broker, or shipper"
44
+ display_name: "USDOT Number"
45
+ mergeability: not_mergeable
46
+ domain_flavors: ["organization"]
47
+ examples: ["12345", "99999"]
48
+ passive: true
49
+
50
+ - name: "address"
51
+ type: string
52
+ description: "Physical street address of the entity"
53
+ display_name: "Address"
54
+ mergeability: not_mergeable
55
+ domain_flavors: ["organization"]
56
+ examples: ["21154 HWY EAST, SILOAM SPRINGS, AR 72761"]
57
+ passive: true
58
+
59
+ - name: "dot_carrier_status"
60
+ type: string
61
+ description: "FMCSA carrier registration status"
62
+ display_name: "Carrier Status"
63
+ mergeability: not_mergeable
64
+ domain_flavors: ["organization"]
65
+ examples: ["A (Active)", "I (Inactive)", "N (Not Authorized)"]
66
+ passive: true
67
+
68
+ - name: "dot_phone_number"
69
+ type: string
70
+ description: "Primary phone number of the carrier"
71
+ display_name: "Phone Number"
72
+ mergeability: not_mergeable
73
+ domain_flavors: ["organization"]
74
+ examples: ["5551234567"]
75
+ passive: true
76
+
77
+ - name: "dot_carrier_operation_type"
78
+ type: string
79
+ description: "Type of carrier operation"
80
+ display_name: "Carrier Operation Type"
81
+ mergeability: not_mergeable
82
+ domain_flavors: ["organization"]
83
+ examples: ["A (Interstate)", "B (Intrastate Hazmat)", "C (Intrastate Non-Hazmat)"]
84
+ passive: true
85
+
86
+ - name: "dot_safety_rating"
87
+ type: string
88
+ description: "FMCSA safety rating assigned during compliance review"
89
+ display_name: "Safety Rating"
90
+ mergeability: not_mergeable
91
+ domain_flavors: ["organization"]
92
+ examples: ["Satisfactory", "Conditional", "Unsatisfactory"]
93
+ passive: true
94
+
95
+ - name: "dot_safety_rating_date"
96
+ type: string
97
+ description: "Date the safety rating was assigned, derived from the SAFETY_RATING_DATE field"
98
+ display_name: "Safety Rating Date"
99
+ mergeability: not_mergeable
100
+ domain_flavors: ["organization"]
101
+ passive: true
102
+
103
+ - name: "dot_last_mcs150_filing_date"
104
+ type: string
105
+ description: "Date the carrier last filed or updated their MCS-150 Motor Carrier Identification Report with FMCSA"
106
+ display_name: "Last MCS-150 Filing Date"
107
+ mergeability: not_mergeable
108
+ domain_flavors: ["organization"]
109
+ passive: true
110
+
111
+ - name: "dot_hazmat_indicator"
112
+ type: float
113
+ description: "Whether the carrier transports hazardous materials (1.0 = yes, 0.0 = no), derived from the HM_Ind field"
114
+ display_name: "Hazmat Indicator"
115
+ mergeability: not_mergeable
116
+ domain_flavors: ["organization"]
117
+ passive: true
118
+
119
+ - name: "dot_total_drivers"
120
+ type: float
121
+ description: "Total number of drivers reported by the carrier"
122
+ display_name: "Total Drivers"
123
+ mergeability: not_mergeable
124
+ domain_flavors: ["organization"]
125
+ passive: true
126
+
127
+ - name: "dot_total_power_units"
128
+ type: float
129
+ description: "Total number of power units (trucks, tractors) operated by the carrier"
130
+ display_name: "Total Power Units"
131
+ mergeability: not_mergeable
132
+ domain_flavors: ["organization"]
133
+ passive: true
134
+
135
+ - name: "dot_total_bus_units"
136
+ type: float
137
+ description: "Total number of bus units operated by the carrier"
138
+ display_name: "Total Bus Units"
139
+ mergeability: not_mergeable
140
+ domain_flavors: ["organization"]
141
+ passive: true
142
+
143
+ - name: "dot_fleet_size_category"
144
+ type: string
145
+ description: "Fleet size category assigned by FMCSA based on the number of power units"
146
+ display_name: "Fleet Size Category"
147
+ mergeability: not_mergeable
148
+ domain_flavors: ["organization"]
149
+ examples: ["A (1-6 power units)", "D (20-100 power units)", "F (1000+ power units)"]
150
+ passive: true
151
+
152
+ - name: "dot_business_org_type"
153
+ type: string
154
+ description: "Business organization type of the carrier"
155
+ display_name: "Business Organization Type"
156
+ mergeability: not_mergeable
157
+ domain_flavors: ["organization"]
158
+ examples: ["Individual", "Partnership", "Corporation"]
159
+ passive: true
160
+
161
+ - name: "dot_entity_type"
162
+ type: string
163
+ description: "FMCSA entity type indicating whether the entity operates as a carrier, broker, shipper, or combination"
164
+ display_name: "Entity Type"
165
+ mergeability: not_mergeable
166
+ domain_flavors: ["organization"]
167
+ examples: ["Carrier", "Carrier; Broker", "Carrier; Shipper"]
168
+ passive: true
169
+
170
+ - name: "dot_operating_authority"
171
+ type: string
172
+ description: "Operating authority classification describing the carrier's authorization type"
173
+ display_name: "Operating Authority"
174
+ mergeability: not_mergeable
175
+ domain_flavors: ["organization"]
176
+ examples: ["AUTHORIZED FOR HIRE", "PRIVATE PROPERTY", "EXEMPT FOR HIRE"]
177
+ passive: true
178
+
179
+ relationships:
180
+ - name: "doing_business_as"
181
+ description: "A legal entity is doing business as (DBA) an organization"
182
+ display_name: "Doing Business As"
183
+ mergeability: not_mergeable
184
+ domain_flavors: ["person", "organization"]
185
+ target_flavors: ["organization"]
186
+ examples: ["LUIS GALVAN doing business as G & G TRANSPORTATION CO"]
187
+ passive: true
188
+
189
+ - name: "is_located_at"
190
+ description: "An entity is located at, operates in, resides in, is headquartered in, was born in, visits, or died in a location"
191
+ display_name: "Located At"
192
+ mergeability: not_mergeable
193
+ domain_flavors: ["organization"]
194
+ target_flavors: ["location"]
195
+ examples: ["DAYSPRING CARDS INC is located at SILOAM SPRINGS, AR"]
196
+ passive: true
@@ -149,6 +149,14 @@ flavors:
149
149
  strong_id_properties: ["accession_number"]
150
150
  passive: true
151
151
 
152
+ - name: "form_d"
153
+ namespace: "sec"
154
+ description: "Regulation D offering notice (Form D or D/A) filed with the SEC to claim an exemption from registration for a private placement. Covers VC/PE funds, hedge funds, and operating company raises."
155
+ display_name: "Form D"
156
+ mergeability: not_mergeable
157
+ strong_id_properties: ["accession_number"]
158
+ passive: true
159
+
152
160
  - name: "valuation_method_change"
153
161
  namespace: "sec"
154
162
  description: "A material change to fund valuation methodology disclosed under N-CEN Item B.20. Each entity records one valuationMethodsChange record (date, asset type, regulatory basis, free-text explanation) and links to the disclosing N-CEN filing plus any per-series fund(s) affected."
@@ -166,7 +174,7 @@ flavors:
166
174
  passive: true
167
175
 
168
176
  - name: "person"
169
- description: "A real person as opposed to a fictional character, such as a CEO, politician, or public figure"
177
+ description: "A real person as opposed to a fictional character, such as a CEO, politician, or public figure. Also used for individual registered broker-dealer representatives identified by their FINRA CRD number."
170
178
  display_name: "Person"
171
179
  mergeability: not_mergeable
172
180
  # crd_number is FINRA's individual Central Registration Depository
@@ -204,7 +212,7 @@ properties:
204
212
  description: "SEC Central Index Key, 10-digit zero-padded"
205
213
  display_name: "CIK"
206
214
  mergeability: not_mergeable
207
- domain_flavors: ["organization", "sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen"]
215
+ domain_flavors: ["organization", "sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::form_d"]
208
216
  passive: true
209
217
 
210
218
  - name: "ticker"
@@ -241,7 +249,7 @@ properties:
241
249
 
242
250
  - name: "state_of_incorporation"
243
251
  type: string
244
- description: "Two-letter US state or country code of incorporation"
252
+ description: "State or country of incorporation or formation. Submission-derived values are two-letter US state / ISO country codes (e.g. DE, KY); Form D reports the same concept as a full uppercase jurisdiction name (e.g. DELAWARE, CAYMAN ISLANDS) and is emitted as-is. Consumers should treat the value as an opaque jurisdiction string and match by case-insensitive equality after normalising whitespace."
245
253
  display_name: "State of Incorporation"
246
254
  mergeability: not_mergeable
247
255
  domain_flavors: ["organization"]
@@ -626,7 +634,7 @@ properties:
626
634
  description: "SEC accession number uniquely identifying a filing"
627
635
  display_name: "Accession Number"
628
636
  mergeability: not_mergeable
629
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::filing"]
637
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::form_d", "sec::filing"]
630
638
  passive: true
631
639
 
632
640
  - name: "form_type"
@@ -634,7 +642,7 @@ properties:
634
642
  description: "Normalized SEC form type (e.g. 10-K, SC 13D, 4)"
635
643
  display_name: "Form Type"
636
644
  mergeability: not_mergeable
637
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::filing"]
645
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::form_d", "sec::filing"]
638
646
  passive: true
639
647
 
640
648
  - name: "filing_date"
@@ -642,7 +650,7 @@ properties:
642
650
  description: "Date the filing was submitted to the SEC (YYYY-MM-DD)"
643
651
  display_name: "Filing Date"
644
652
  mergeability: not_mergeable
645
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::filing"]
653
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::form_d", "sec::filing"]
646
654
  passive: true
647
655
 
648
656
  - name: "report_date"
@@ -650,7 +658,7 @@ properties:
650
658
  description: "End date of the primary reporting period (YYYY-MM-DD)"
651
659
  display_name: "Report Date"
652
660
  mergeability: not_mergeable
653
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::filing"]
661
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::form_d", "sec::filing"]
654
662
  passive: true
655
663
 
656
664
  # ── XBRL Financial Facts (key concepts) ──
@@ -2098,6 +2106,158 @@ properties:
2098
2106
  domain_flavors: ["financial_instrument"]
2099
2107
  passive: true
2100
2108
 
2109
+ # ── Form D: Issuer Attributes (on organization) ──
2110
+
2111
+ # Form-D-specific issuer attributes are scoped with form_d_ prefixes when
2112
+ # they overlap conceptually with broader properties (industry_group →
2113
+ # form_d_industry_group disambiguates from sic_code and the 'industry'
2114
+ # flavor). Truly Form-D-only attributes (legal_entity_form,
2115
+ # private_fund_type, year_of_inc) keep simple names. Fields that change
2116
+ # over time relative to the filing date (e.g. "incorporated within the
2117
+ # last 5 years") are deliberately not stored: they're derivable from
2118
+ # year_of_inc + filing_date and would otherwise accumulate conflicting
2119
+ # answers across filings.
2120
+
2121
+ - name: "legal_entity_form"
2122
+ type: string
2123
+ description: "Legal entity structure as reported in Form D: e.g. Limited Partnership, Limited Liability Company, Corporation, Business Trust"
2124
+ display_name: "Legal Entity Form"
2125
+ mergeability: not_mergeable
2126
+ domain_flavors: ["organization"]
2127
+ examples: ["Limited Partnership", "Limited Liability Company", "Corporation"]
2128
+ passive: true
2129
+
2130
+ - name: "form_d_industry_group"
2131
+ type: string
2132
+ description: "Form D's coarse industry classification (e.g. Pooled Investment Fund, Technology, Real Estate, Banking). Distinct from the SIC taxonomy carried by sic_code/sic_description and the 'industry' flavor — Form D's enum is much coarser and self-reported by the issuer."
2133
+ display_name: "Form D Industry Group"
2134
+ mergeability: not_mergeable
2135
+ domain_flavors: ["organization"]
2136
+ examples: ["Pooled Investment Fund", "Technology", "Real Estate"]
2137
+ passive: true
2138
+
2139
+ - name: "private_fund_type"
2140
+ type: string
2141
+ description: "Fund type for pooled investment fund issuers in Form D: Venture Capital Fund, Hedge Fund, Private Equity Fund, Real Estate Fund, etc."
2142
+ display_name: "Private Fund Type"
2143
+ mergeability: not_mergeable
2144
+ domain_flavors: ["organization"]
2145
+ examples: ["Venture Capital Fund", "Hedge Fund", "Private Equity Fund"]
2146
+ passive: true
2147
+
2148
+ - name: "year_of_inc"
2149
+ type: string
2150
+ description: "Year the issuer was incorporated or formed (from Form D)"
2151
+ display_name: "Year of Incorporation"
2152
+ mergeability: not_mergeable
2153
+ domain_flavors: ["organization"]
2154
+ examples: ["2024", "1985"]
2155
+ passive: true
2156
+
2157
+ # ── Form D: Offering Attributes (on sec::form_d) ──
2158
+ #
2159
+ # Offering-level facts use the `offering_` prefix to scope them clearly
2160
+ # to the offering record (sec::form_d) and avoid collisions with future
2161
+ # broader concepts of "amount" or "investors" on other filing types.
2162
+ # Booleans derivable from other properties (e.g. is_amendment, recoverable
2163
+ # from form_type ending in "/A") are intentionally omitted — see the
2164
+ # Form D handler for the derivation contract.
2165
+
2166
+ - name: "date_of_first_sale"
2167
+ type: string
2168
+ description: "Date on which the first securities were sold in this offering (from Form D)"
2169
+ display_name: "Date of First Sale"
2170
+ mergeability: not_mergeable
2171
+ domain_flavors: ["sec::form_d"]
2172
+ examples: ["2026-02-26"]
2173
+ passive: true
2174
+
2175
+ - name: "offering_total_amount"
2176
+ type: float
2177
+ description: "Total target offering size in USD (from Form D). Empty when the offering amount is Indefinite — see offering_amount_indefinite."
2178
+ display_name: "Offering Total Amount"
2179
+ mergeability: not_mergeable
2180
+ domain_flavors: ["sec::form_d"]
2181
+ passive: true
2182
+
2183
+ - name: "offering_amount_sold"
2184
+ type: float
2185
+ description: "Total amount already sold/raised from investors in USD (from Form D)"
2186
+ display_name: "Offering Amount Sold"
2187
+ mergeability: not_mergeable
2188
+ domain_flavors: ["sec::form_d"]
2189
+ passive: true
2190
+
2191
+ - name: "offering_total_investors"
2192
+ type: float
2193
+ description: "Number of investors who have already participated in this offering (from Form D). Typed as float to match the schema-wide convention for numeric counts (entity_number_of_employees, board_size, us_gaap:number_of_segments)."
2194
+ display_name: "Offering Total Investors"
2195
+ mergeability: not_mergeable
2196
+ domain_flavors: ["sec::form_d"]
2197
+ passive: true
2198
+
2199
+ - name: "offering_min_investment"
2200
+ type: float
2201
+ description: "Minimum investment accepted from a single investor in USD (from Form D)"
2202
+ display_name: "Offering Min Investment"
2203
+ mergeability: not_mergeable
2204
+ domain_flavors: ["sec::form_d"]
2205
+ passive: true
2206
+
2207
+ - name: "federal_exemption"
2208
+ type: string
2209
+ description: "Primary Reg D federal exemption claimed: 06b (Rule 506(b) accredited), 06c (Rule 506(c) general solicitation), 04a5, 04a6, etc."
2210
+ display_name: "Federal Exemption"
2211
+ mergeability: not_mergeable
2212
+ domain_flavors: ["sec::form_d"]
2213
+ examples: ["06b", "06c", "04a5"]
2214
+ passive: true
2215
+
2216
+ - name: "offering_amount_indefinite"
2217
+ type: string
2218
+ description: "Whether the total offering amount is Indefinite (open-ended offering with no fixed cap): Y or N"
2219
+ display_name: "Indefinite Offering"
2220
+ mergeability: not_mergeable
2221
+ domain_flavors: ["sec::form_d"]
2222
+ examples: ["Y", "N"]
2223
+ passive: true
2224
+
2225
+ - name: "issuer_size_range"
2226
+ type: string
2227
+ description: "Verbal size range of the issuer from Form D: aggregateNetAssetValueRange for funds or revenueRange for operating companies"
2228
+ display_name: "Issuer Size Range"
2229
+ mergeability: not_mergeable
2230
+ domain_flavors: ["sec::form_d"]
2231
+ examples: ["$1 - $5,000,000", "Over $1,000,000,000", "Decline to Disclose"]
2232
+ passive: true
2233
+
2234
+ - name: "more_than_one_year"
2235
+ type: string
2236
+ description: "Whether the offering is expected to last more than one year: true or false (from Form D durationOfOffering)"
2237
+ display_name: "Multi-Year Offering"
2238
+ mergeability: not_mergeable
2239
+ domain_flavors: ["sec::form_d"]
2240
+ examples: ["true", "false"]
2241
+ passive: true
2242
+
2243
+ - name: "has_non_accredited_investors"
2244
+ type: string
2245
+ description: "Whether the offering has sold securities to any non-accredited investors: true or false (from Form D)"
2246
+ display_name: "Non-Accredited Investors"
2247
+ mergeability: not_mergeable
2248
+ domain_flavors: ["sec::form_d"]
2249
+ examples: ["true", "false"]
2250
+ passive: true
2251
+
2252
+ - name: "is_40_act_fund"
2253
+ type: string
2254
+ description: "Whether the issuer is a fund registered under the Investment Company Act of 1940: true or false. Registered funds are subject to stricter regulation than exempt funds under 3(c)(1) or 3(c)(7). This is the issuer's own assertion at Form D filing time; the canonical durable registrant attribute for the same concept is investment_company_type on organization (a non-empty value there implies 1940 Act registration)."
2255
+ display_name: "40 Act Registered"
2256
+ mergeability: not_mergeable
2257
+ domain_flavors: ["sec::form_d"]
2258
+ examples: ["true", "false"]
2259
+ passive: true
2260
+
2101
2261
  # ── Financial Instrument: N-PORT Fund Financials ──
2102
2262
 
2103
2263
  - name: "fund_total_assets"
@@ -2375,8 +2535,8 @@ relationships:
2375
2535
  description: "Link from a company or person to an SEC filing document they filed, or from a sub-record (event, transaction, holding) to its parent filing"
2376
2536
  display_name: "Filed"
2377
2537
  mergeability: not_mergeable
2378
- domain_flavors: ["organization", "person", "sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::filing"]
2379
- target_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::filing"]
2538
+ domain_flavors: ["organization", "person", "sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::form_d", "sec::filing"]
2539
+ target_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::form_d", "sec::filing"]
2380
2540
  passive: true
2381
2541
 
2382
2542
  - name: "is_issuer_of"
@@ -2392,7 +2552,7 @@ relationships:
2392
2552
  display_name: "Filing Reference"
2393
2553
  mergeability: not_mergeable
2394
2554
  domain_flavors: ["organization", "person", "financial_instrument"]
2395
- target_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen"]
2555
+ target_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::form_d"]
2396
2556
  passive: true
2397
2557
 
2398
2558
  # ── Filing → Organization ──
@@ -2401,7 +2561,7 @@ relationships:
2401
2561
  description: "Link from a filing or financial instrument to the company it pertains to (the filer for most forms; the issuer for ownership forms and 13F holdings)"
2402
2562
  display_name: "Issued By"
2403
2563
  mergeability: not_mergeable
2404
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::filing", "financial_instrument"]
2564
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::form_d", "sec::filing", "financial_instrument"]
2405
2565
  target_flavors: ["organization"]
2406
2566
  passive: true
2407
2567
 
@@ -2417,7 +2577,23 @@ relationships:
2417
2577
  description: "Link from a filing to the entity (person or organization) who filed it"
2418
2578
  display_name: "Filer"
2419
2579
  mergeability: not_mergeable
2420
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::filing"]
2580
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::form_3", "sec::form_4", "sec::sc_13d", "sec::sc_13g", "sec::13f_hr", "sec::def_14a", "sec::nport_p", "sec::ncen", "sec::form_d", "sec::filing"]
2581
+ target_flavors: ["organization", "person"]
2582
+ passive: true
2583
+
2584
+ # placed_offering is a per-offering transactional edge from the Form D
2585
+ # filing to a sales compensation recipient — distinct from the N-CEN
2586
+ # service-provider edges (audited_by, advised_by, has_principal_underwriter,
2587
+ # has_transfer_agent, custodied_by, sub_advised_by, has_securities_lending_
2588
+ # agent), which are durable registrant-↔-provider relationships that live
2589
+ # on the organization or financial_instrument. A single broker-dealer may
2590
+ # appear as `placed_offering` from many Form D filings while never
2591
+ # appearing on an N-CEN service-provider edge for those same issuers.
2592
+ - name: "placed_offering"
2593
+ description: "Link from a Form D filing to a broker-dealer, investment adviser, or registered representative receiving sales compensation for placing the Reg D offering"
2594
+ display_name: "Placed Offering"
2595
+ mergeability: not_mergeable
2596
+ domain_flavors: ["sec::form_d"]
2421
2597
  target_flavors: ["organization", "person"]
2422
2598
  passive: true
2423
2599