@yottagraph-app/data-model-skill 0.0.24 → 0.0.26

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.24",
3
+ "version": "0.0.26",
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",
@@ -21,15 +21,15 @@ This is a companion dataset to DOT Census (`dotcensus`), which covers company re
21
21
  A motor carrier, broker, or freight forwarder registered with FMCSA.
22
22
 
23
23
  - Primary key: `usdot_number` (USDOT number assigned by FMCSA)
24
- - Entity resolver: named entity. Strong ID = `usdot_number`. Disambiguation via legal name and business address.
25
- - Entity name: DBA name if present (with legal name as the owner entity); otherwise the legal name.
24
+ - Entity resolver: named entity. Strong ID = `usdot_number` when present. Disambiguation via legal name, optional DBA, and business address.
25
+ - Entity name: `LEGAL_NAME` from the source row. When `DBA_NAME` differs, it is emitted as the `dotauthority::doing_business_as` string property on this subject, not as a separate entity.
26
26
 
27
27
  ### `person`
28
28
 
29
- A named individual who is the legal owner of a carrier operating under a DBA name.
29
+ A named individual registered as a motor carrier (for example a sole proprietor).
30
30
 
31
- - Only created when the carrier has a DBA name different from the legal name, and the legal name appears to be a person (not an organization).
32
- - Entity resolver: named entity. No strong ID.
31
+ - Record subject when `LEGAL_NAME` matches person-like name heuristics; otherwise the subject uses the `organization` flavor.
32
+ - Entity resolver: named entity. When a USDOT number is present it is still attached as a strong ID for merging with census data.
33
33
 
34
34
  ### `location`
35
35
 
@@ -42,6 +42,8 @@ The business location of a carrier, derived from city, state, and country fields
42
42
 
43
43
  ## Properties
44
44
 
45
+ FMCSA-specific fields use the DataSchema `namespace: dotauthority` (matching dataset `name` in `schema.yaml`). Fetch atoms use the qualified property key `dotauthority::<local_name>` (for example `dotauthority::doing_business_as`).
46
+
45
47
  ### Organization: Identity and Registration
46
48
 
47
49
  * `usdot_number`
@@ -49,11 +51,16 @@ The business location of a carrier, derived from city, state, and country fields
49
51
  * Examples: `1234567`, `3456789`
50
52
  * Derivation: `dot_number` field from the Socrata API. Carriers with DOT number `00000000` or empty are treated as not having a DOT number.
51
53
 
52
- * `dot_docket_number`
54
+ * `dotauthority::docket_number`
53
55
  * Definition: FMCSA docket number (MC/FF/MX number) for the carrier's operating authority.
54
56
  * Examples: `MC012892`, `MC599911`
55
57
  * Derivation: `docket_number` field from the Socrata API.
56
58
 
59
+ * `dotauthority::doing_business_as`
60
+ * Definition: Trade name or "doing business as" (DBA) name from FMCSA when it differs from the legal name.
61
+ * Examples: `ACME EXPRESS`, `SMITH TRUCKING`
62
+ * Derivation: `dba_name` when non-empty and not equal to `legal_name` (case-sensitive string comparison as in the streamer).
63
+
57
64
  ### Organization: Business Contact
58
65
 
59
66
  * `address`
@@ -61,53 +68,53 @@ The business location of a carrier, derived from city, state, and country fields
61
68
  * Examples: `1200 SEABOARD DR, HIALEAH, FL 33010`
62
69
  * Derivation: Composed from `bus_street_po`, `bus_city`, `bus_state_code`, `bus_zip_code`, and `bus_ctry_code` fields, formatted as "Street, City, State Zip".
63
70
 
64
- * `dot_phone_number`
71
+ * `dotauthority::phone_number`
65
72
  * Definition: Primary business phone number of the carrier.
66
73
  * Examples: `5551234567`
67
74
  * Derivation: `bus_telno` field from the Socrata API.
68
75
 
69
76
  ### Organization: Authority Status
70
77
 
71
- * `dot_common_authority_status`
78
+ * `dotauthority::common_authority_status`
72
79
  * Definition: Status of the carrier's common carrier authority.
73
80
  * Examples: `A (Active)`, `I (Inactive)`, `N (None)`
74
81
  * Derivation: `common_stat` field. Single-letter code expanded to include the human-readable label.
75
82
 
76
- * `dot_contract_authority_status`
83
+ * `dotauthority::contract_authority_status`
77
84
  * Definition: Status of the carrier's contract carrier authority.
78
85
  * Examples: `A (Active)`, `I (Inactive)`, `N (None)`
79
86
  * Derivation: `contract_stat` field. Same code expansion as common authority.
80
87
 
81
- * `dot_broker_authority_status`
88
+ * `dotauthority::broker_authority_status`
82
89
  * Definition: Status of the carrier's broker authority.
83
90
  * Examples: `A (Active)`, `I (Inactive)`, `N (None)`
84
91
  * Derivation: `broker_stat` field. Same code expansion as common authority.
85
92
 
86
- * `dot_authority_type`
93
+ * `dotauthority::authority_type`
87
94
  * Definition: Authority type flags indicating which categories the carrier is authorized for.
88
95
  * Examples: `Property`, `Passenger`, `Household Goods`, `Property; Passenger`
89
96
  * Derivation: Composed from five checkbox fields (`property_chk`, `passenger_chk`, `hhg_chk`, `private_auth_chk`, `enterprise_chk`). Values with `Y` are included, joined with `; `.
90
97
 
91
98
  ### Organization: Insurance and Bonding
92
99
 
93
- * `dot_min_coverage_amount`
100
+ * `dotauthority::min_coverage_amount`
94
101
  * Definition: Minimum insurance coverage amount required, in thousands of dollars.
95
102
  * Examples: `00750`, `05000`
96
103
  * Derivation: `min_cov_amount` field. Values of `00000` are suppressed.
97
104
 
98
- * `dot_cargo_insurance_required`
105
+ * `dotauthority::cargo_insurance_required`
99
106
  * Definition: Whether cargo insurance is required for this carrier.
100
107
  * Examples: `1.0` (yes), `0.0` (no)
101
108
  * Derivation: `cargo_req` field. `Y` → 1.0, `N` → 0.0. Other values are not emitted.
102
109
  * Note: Stored as float per KG boolean convention.
103
110
 
104
- * `dot_bond_required`
111
+ * `dotauthority::bond_required`
105
112
  * Definition: Whether a surety bond is required for this carrier.
106
113
  * Examples: `1.0` (yes), `0.0` (no)
107
114
  * Derivation: `bond_req` field. `Y` → 1.0, `N` → 0.0. Other values are not emitted.
108
115
  * Note: Stored as float per KG boolean convention.
109
116
 
110
- * `dot_bipd_insurance_on_file`
117
+ * `dotauthority::bipd_insurance_on_file`
111
118
  * Definition: Bodily injury / property damage insurance filing amount on file.
112
119
  * Examples: `01000`, `05000`
113
120
  * Derivation: `bipd_file` field. Values of `00000` are suppressed.
@@ -118,12 +125,9 @@ The business location of a carrier, derived from city, state, and country fields
118
125
 
119
126
  ```
120
127
  organization ──[is_located_at]──→ location
121
- person ──[doing_business_as]──→ organization
122
- organization ──[doing_business_as]──→ organization
128
+ person ──[is_located_at]──→ location
123
129
  ```
124
130
 
125
- The `doing_business_as` relationship is created when a carrier's legal name differs from its DBA name. The legal entity (person or organization, determined by name heuristics) is the subject; the DBA organization is the target. The DBA organization is also the primary record subject carrying all authority properties.
126
-
127
131
  The `is_located_at` relationship is created when both city and state are present. The target is a location entity named "City, State" (or "City, State, Country" if the country code is present).
128
132
 
129
133
  ---
@@ -25,9 +25,10 @@ flavors:
25
25
  passive: true
26
26
 
27
27
  - name: "person"
28
- description: "A named individual such as a business owner, executive, or public figure"
28
+ description: "A real person as opposed to a fictional character, such as a CEO, politician, or public figure"
29
29
  display_name: "Person"
30
30
  mergeability: not_mergeable
31
+ strong_id_properties: ["usdot_number"]
31
32
  passive: true
32
33
 
33
34
  - name: "location"
@@ -43,15 +44,16 @@ properties:
43
44
  description: "USDOT number assigned by FMCSA, uniquely identifying a registered motor carrier, broker, or shipper"
44
45
  display_name: "USDOT Number"
45
46
  mergeability: not_mergeable
46
- domain_flavors: ["organization"]
47
+ domain_flavors: ["organization", "person"]
47
48
  passive: true
48
49
 
49
- - name: "dot_docket_number"
50
+ - name: "docket_number"
51
+ namespace: "dotauthority"
50
52
  type: string
51
53
  description: "FMCSA docket number (MC number) for operating authority"
52
54
  display_name: "Docket Number"
53
55
  mergeability: not_mergeable
54
- domain_flavors: ["organization"]
56
+ domain_flavors: ["organization", "person"]
55
57
  examples: ["MC012892", "MC599911"]
56
58
  passive: true
57
59
 
@@ -60,102 +62,113 @@ properties:
60
62
  description: "Physical street address of the entity"
61
63
  display_name: "Address"
62
64
  mergeability: not_mergeable
63
- domain_flavors: ["organization"]
65
+ domain_flavors: ["organization", "person"]
64
66
  examples: ["1200 SEABOARD DR, HIALEAH, FL 33010"]
65
67
  passive: true
66
68
 
67
- - name: "dot_phone_number"
69
+ - name: "phone_number"
70
+ namespace: "dotauthority"
68
71
  type: string
69
72
  description: "Primary phone number of the carrier"
70
73
  display_name: "Phone Number"
71
74
  mergeability: not_mergeable
72
- domain_flavors: ["organization"]
75
+ domain_flavors: ["organization", "person"]
73
76
  examples: ["5551234567"]
74
77
  passive: true
75
78
 
76
- - name: "dot_common_authority_status"
79
+ - name: "common_authority_status"
80
+ namespace: "dotauthority"
77
81
  type: string
78
82
  description: "Status of common carrier authority (A=Active, I=Inactive, N=None)"
79
83
  display_name: "Common Authority Status"
80
84
  mergeability: not_mergeable
81
- domain_flavors: ["organization"]
85
+ domain_flavors: ["organization", "person"]
82
86
  examples: ["A (Active)", "I (Inactive)", "N (None)"]
83
87
  passive: true
84
88
 
85
- - name: "dot_contract_authority_status"
89
+ - name: "contract_authority_status"
90
+ namespace: "dotauthority"
86
91
  type: string
87
92
  description: "Status of contract carrier authority (A=Active, I=Inactive, N=None)"
88
93
  display_name: "Contract Authority Status"
89
94
  mergeability: not_mergeable
90
- domain_flavors: ["organization"]
95
+ domain_flavors: ["organization", "person"]
91
96
  examples: ["A (Active)", "I (Inactive)", "N (None)"]
92
97
  passive: true
93
98
 
94
- - name: "dot_broker_authority_status"
99
+ - name: "broker_authority_status"
100
+ namespace: "dotauthority"
95
101
  type: string
96
102
  description: "Status of broker authority (A=Active, I=Inactive, N=None)"
97
103
  display_name: "Broker Authority Status"
98
104
  mergeability: not_mergeable
99
- domain_flavors: ["organization"]
105
+ domain_flavors: ["organization", "person"]
100
106
  examples: ["A (Active)", "I (Inactive)", "N (None)"]
101
107
  passive: true
102
108
 
103
- - name: "dot_authority_type"
109
+ - name: "authority_type"
110
+ namespace: "dotauthority"
104
111
  type: string
105
112
  description: "Carrier authority type flags indicating property, passenger, household goods, private, or enterprise authorization"
106
113
  display_name: "Authority Type"
107
114
  mergeability: not_mergeable
108
- domain_flavors: ["organization"]
115
+ domain_flavors: ["organization", "person"]
109
116
  examples: ["Property", "Passenger", "Household Goods", "Property; Passenger"]
110
117
  passive: true
111
118
 
112
- - name: "dot_min_coverage_amount"
119
+ - name: "min_coverage_amount"
120
+ namespace: "dotauthority"
113
121
  type: string
114
122
  description: "Minimum insurance coverage amount required (in thousands of dollars)"
115
123
  display_name: "Minimum Coverage Amount"
116
124
  mergeability: not_mergeable
117
- domain_flavors: ["organization"]
125
+ domain_flavors: ["organization", "person"]
118
126
  examples: ["00750", "05000"]
119
127
  passive: true
120
128
 
121
- - name: "dot_cargo_insurance_required"
129
+ - name: "cargo_insurance_required"
130
+ namespace: "dotauthority"
122
131
  type: float
123
132
  description: "Whether cargo insurance is required (1.0 = yes, 0.0 = no)"
124
133
  display_name: "Cargo Insurance Required"
125
134
  mergeability: not_mergeable
126
- domain_flavors: ["organization"]
135
+ domain_flavors: ["organization", "person"]
127
136
  passive: true
128
137
 
129
- - name: "dot_bond_required"
138
+ - name: "bond_required"
139
+ namespace: "dotauthority"
130
140
  type: float
131
141
  description: "Whether a surety bond is required (1.0 = yes, 0.0 = no)"
132
142
  display_name: "Bond Required"
133
143
  mergeability: not_mergeable
134
- domain_flavors: ["organization"]
144
+ domain_flavors: ["organization", "person"]
135
145
  passive: true
136
146
 
137
- - name: "dot_bipd_insurance_on_file"
147
+ - name: "bipd_insurance_on_file"
148
+ namespace: "dotauthority"
138
149
  type: string
139
150
  description: "Bodily injury / property damage insurance filing amount"
140
151
  display_name: "BIPD Insurance On File"
141
152
  mergeability: not_mergeable
142
- domain_flavors: ["organization"]
153
+ domain_flavors: ["organization", "person"]
143
154
  examples: ["01000", "05000"]
144
155
  passive: true
145
156
 
146
- relationships:
147
157
  - name: "doing_business_as"
148
- description: "A legal entity is doing business as (DBA) an organization"
149
- display_name: "Doing Business As"
158
+ namespace: "dotauthority"
159
+ type: string
160
+ description: "FMCSA trade name or 'doing business as' (DBA) name when it differs from the legal name; stored as a string attribute on the legal-name entity, not a link to another entity"
161
+ display_name: "DOT Doing Business As"
150
162
  mergeability: not_mergeable
151
- domain_flavors: ["person", "organization"]
152
- target_flavors: ["organization"]
163
+ domain_flavors: ["organization", "person"]
164
+ examples: ["ACME EXPRESS", "SMITH TRUCKING", "CJ TRUCKING"]
153
165
  passive: true
154
166
 
167
+ relationships:
155
168
  - name: "is_located_at"
156
169
  description: "An entity is located at, operates in, resides in, is headquartered in, was born in, visits, or died in a location"
157
170
  display_name: "Located At"
158
171
  mergeability: not_mergeable
159
- domain_flavors: ["organization"]
172
+ domain_flavors: ["organization", "person"]
160
173
  target_flavors: ["location"]
161
174
  passive: true
@@ -23,16 +23,12 @@ Each row represents one registered entity identified by a unique USDOT number. T
23
23
  A motor carrier, broker, shipper, or other entity registered with FMCSA.
24
24
 
25
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`.
26
+ - Entity resolver: named entity, MERGEABLE. Strong ID = `usdot_number`. Disambiguation snippet includes DBA (when present) and physical address when available.
27
+ - Name: `LEGAL_NAME`. When `DBA_NAME` differs, it is emitted as the `dotcensus::doing_business_as` string property on this subject, not as a separate entity.
28
28
 
29
- ### `legal_entity`
29
+ ### `person`
30
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`.
31
+ Used as the record subject when `LEGAL_NAME` matches person-like name heuristics (sole proprietorships). Same USDOT strong ID and census properties as organization subjects.
36
32
 
37
33
  ### `location`
38
34
 
@@ -46,6 +42,8 @@ The physical location (city + state) of a registered carrier.
46
42
 
47
43
  ## Properties
48
44
 
45
+ FMCSA-specific fields use the DataSchema `namespace: dotcensus` (matching dataset `name` in `schema.yaml`). Fetch atoms use the qualified property key `dotcensus::<local_name>` (for example `dotcensus::doing_business_as`).
46
+
49
47
  ### Organization Properties
50
48
 
51
49
  #### Identity and Registration
@@ -55,87 +53,92 @@ The physical location (city + state) of a registered carrier.
55
53
  * Examples: `"12345"`, `"99999"`
56
54
  * Derivation: `DOT_NUMBER` column. Emitted as both a strong ID for entity resolution and as a property atom on every record.
57
55
 
56
+ * `dotcensus::doing_business_as`
57
+ * Definition: Trade name or "doing business as" (DBA) from FMCSA when it differs from the legal name.
58
+ * Examples: `"Acme Transport"`, `"G & G TRANSPORTATION CO"`
59
+ * Derivation: `DBA_NAME` when non-empty and not equal to `LEGAL_NAME`.
60
+
58
61
  * `address`
59
62
  * Definition: Physical street address of the carrier.
60
63
  * Examples: `"21154 HWY EAST, SILOAM SPRINGS, AR 72761"`, `"100 Main St, Dallas, TX 75201"`
61
64
  * Derivation: Concatenation of `PHY_STREET`, `PHY_CITY`, `PHY_STATE`, and `PHY_ZIP` columns.
62
65
 
63
- * `dot_phone_number`
66
+ * `dotcensus::phone_number`
64
67
  * Definition: Primary phone number on file with FMCSA.
65
68
  * Examples: `"5551234567"`
66
69
  * Derivation: `PHONE` column.
67
70
 
68
- * `dot_business_org_type`
71
+ * `dotcensus::business_org_type`
69
72
  * Definition: Business organization type of the registrant.
70
73
  * Examples: `"Individual"`, `"Partnership"`, `"Corporation"`
71
74
  * Derivation: `BUSINESS_ORG_ID` column decoded from numeric codes (1=Individual, 2=Partnership, 3=Corporation).
72
75
 
73
- * `dot_entity_type`
76
+ * `dotcensus::entity_type`
74
77
  * Definition: FMCSA entity type indicating the registrant's role in freight transportation.
75
78
  * Examples: `"Carrier"`, `"Carrier; Broker"`, `"Carrier; Shipper"`
76
79
  * Derivation: `CARSHIP` column. Semicolon-delimited code list decoded from single-letter codes (C=Carrier, B=Broker, S=Shipper, T=Cargo Tank, R=Registrant).
77
80
 
78
- * `dot_operating_authority`
81
+ * `dotcensus::operating_authority`
79
82
  * Definition: Operating authority classification describing the carrier's authorization type.
80
83
  * Examples: `"AUTHORIZED FOR HIRE"`, `"PRIVATE PROPERTY"`, `"EXEMPT FOR HIRE"`
81
84
  * Derivation: `CLASSDEF` column, passed through as-is.
82
85
 
83
86
  #### Carrier Status and Operations
84
87
 
85
- * `dot_carrier_status`
88
+ * `dotcensus::carrier_status`
86
89
  * Definition: FMCSA carrier registration status.
87
90
  * Examples: `"A (Active)"`, `"I (Inactive)"`, `"N (Not Authorized)"`
88
91
  * Derivation: `STATUS_CODE` column decoded from single-letter codes.
89
92
 
90
- * `dot_carrier_operation_type`
93
+ * `dotcensus::carrier_operation_type`
91
94
  * Definition: Type of carrier operation based on registration.
92
95
  * Examples: `"A (Interstate)"`, `"B (Intrastate Hazmat)"`, `"C (Intrastate Non-Hazmat)"`
93
96
  * 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`).
97
+ * 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 `dotcensus::hazmat_indicator`).
95
98
 
96
- * `dot_hazmat_indicator`
99
+ * `dotcensus::hazmat_indicator`
97
100
  * Definition: Whether the carrier transports hazardous materials.
98
101
  * Examples: `1.0` (yes), `0.0` (no)
99
102
  * Derivation: `HM_Ind` column. `"Y"` → 1.0, `"N"` → 0.0. Omitted when blank.
100
103
 
101
104
  #### Fleet Composition
102
105
 
103
- * `dot_total_drivers`
106
+ * `dotcensus::total_drivers`
104
107
  * Definition: Total number of drivers reported by the carrier.
105
108
  * Examples: `10.0`, `250.0`
106
109
  * Derivation: `TOTAL_DRIVERS` column, parsed as float. Omitted when zero or blank.
107
110
 
108
- * `dot_total_power_units`
111
+ * `dotcensus::total_power_units`
109
112
  * Definition: Total number of power units (trucks, tractors) operated by the carrier.
110
113
  * Examples: `5.0`, `1200.0`
111
114
  * Derivation: `POWER_UNITS` column, parsed as float. Omitted when zero or blank.
112
115
 
113
- * `dot_total_bus_units`
116
+ * `dotcensus::total_bus_units`
114
117
  * Definition: Total number of bus units operated by the carrier.
115
118
  * Examples: `2.0`, `50.0`
116
119
  * Derivation: `BUS_UNITS` column, parsed as float. Omitted when zero or blank.
117
120
 
118
- * `dot_fleet_size_category`
121
+ * `dotcensus::fleet_size_category`
119
122
  * Definition: Fleet size category assigned by FMCSA based on total power units.
120
123
  * Examples: `"A (1-6 power units)"`, `"D (20-100 power units)"`, `"F (1000+ power units)"`
121
124
  * Derivation: `FLEETSIZE` column decoded from single-letter codes. Omitted when `"0"` (none reported).
122
125
 
123
126
  #### Safety
124
127
 
125
- * `dot_safety_rating`
128
+ * `dotcensus::safety_rating`
126
129
  * Definition: FMCSA safety rating assigned during a compliance review.
127
130
  * Examples: `"Satisfactory"`, `"Conditional"`, `"Unsatisfactory"`
128
131
  * Derivation: `SAFETY_RATING` column decoded from single-letter codes (S, C, U).
129
132
  * Note: Most carriers have no safety rating — it is only assigned after a compliance review.
130
133
 
131
- * `dot_safety_rating_date`
134
+ * `dotcensus::safety_rating_date`
132
135
  * Definition: Date the safety rating was assigned.
133
136
  * Examples: `"2024-01-01"`
134
137
  * Derivation: `SAFETY_RATING_DATE` column parsed from `YYYYMMDD` format, output as `YYYY-MM-DD`.
135
138
 
136
139
  #### Filing Dates
137
140
 
138
- * `dot_last_mcs150_filing_date`
141
+ * `dotcensus::last_mcs150_filing_date`
139
142
  * Definition: Date the carrier last filed or updated their MCS-150 Motor Carrier Identification Report.
140
143
  * Examples: `"2024-01-01"`
141
144
  * Derivation: `MCS150_DATE` column parsed from `YYYYMMDD HHMM` format, output as `YYYY-MM-DD`.
@@ -149,9 +152,8 @@ Record timestamps are derived in priority order: `ADD_DATE` (carrier registratio
149
152
  ## Entity Relationships Summary
150
153
 
151
154
  ```
152
- legal_entity ──[doing_business_as]──→ organization
153
155
  organization ──[is_located_at]──────→ location
156
+ person ──[is_located_at]──────→ location
154
157
  ```
155
158
 
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
159
  - `is_located_at`: Links the carrier to its physical location. Only produced when both `PHY_CITY` and `PHY_STATE` are present.
@@ -25,9 +25,10 @@ flavors:
25
25
  passive: true
26
26
 
27
27
  - name: "person"
28
- description: "A named individual such as a business owner, executive, or public figure"
28
+ description: "A real person as opposed to a fictional character, such as a CEO, politician, or public figure"
29
29
  display_name: "Person"
30
30
  mergeability: not_mergeable
31
+ strong_id_properties: ["usdot_number"]
31
32
  passive: true
32
33
 
33
34
  - name: "location"
@@ -43,7 +44,7 @@ properties:
43
44
  description: "USDOT number assigned by FMCSA, uniquely identifying a registered motor carrier, broker, or shipper"
44
45
  display_name: "USDOT Number"
45
46
  mergeability: not_mergeable
46
- domain_flavors: ["organization"]
47
+ domain_flavors: ["organization", "person"]
47
48
  examples: ["12345", "99999"]
48
49
  passive: true
49
50
 
@@ -52,145 +53,160 @@ properties:
52
53
  description: "Physical street address of the entity"
53
54
  display_name: "Address"
54
55
  mergeability: not_mergeable
55
- domain_flavors: ["organization"]
56
+ domain_flavors: ["organization", "person"]
56
57
  examples: ["21154 HWY EAST, SILOAM SPRINGS, AR 72761"]
57
58
  passive: true
58
59
 
59
- - name: "dot_carrier_status"
60
+ - name: "carrier_status"
61
+ namespace: "dotcensus"
60
62
  type: string
61
63
  description: "FMCSA carrier registration status"
62
64
  display_name: "Carrier Status"
63
65
  mergeability: not_mergeable
64
- domain_flavors: ["organization"]
66
+ domain_flavors: ["organization", "person"]
65
67
  examples: ["A (Active)", "I (Inactive)", "N (Not Authorized)"]
66
68
  passive: true
67
69
 
68
- - name: "dot_phone_number"
70
+ - name: "phone_number"
71
+ namespace: "dotcensus"
69
72
  type: string
70
73
  description: "Primary phone number of the carrier"
71
74
  display_name: "Phone Number"
72
75
  mergeability: not_mergeable
73
- domain_flavors: ["organization"]
76
+ domain_flavors: ["organization", "person"]
74
77
  examples: ["5551234567"]
75
78
  passive: true
76
79
 
77
- - name: "dot_carrier_operation_type"
80
+ - name: "carrier_operation_type"
81
+ namespace: "dotcensus"
78
82
  type: string
79
83
  description: "Type of carrier operation"
80
84
  display_name: "Carrier Operation Type"
81
85
  mergeability: not_mergeable
82
- domain_flavors: ["organization"]
86
+ domain_flavors: ["organization", "person"]
83
87
  examples: ["A (Interstate)", "B (Intrastate Hazmat)", "C (Intrastate Non-Hazmat)"]
84
88
  passive: true
85
89
 
86
- - name: "dot_safety_rating"
90
+ - name: "safety_rating"
91
+ namespace: "dotcensus"
87
92
  type: string
88
93
  description: "FMCSA safety rating assigned during compliance review"
89
94
  display_name: "Safety Rating"
90
95
  mergeability: not_mergeable
91
- domain_flavors: ["organization"]
96
+ domain_flavors: ["organization", "person"]
92
97
  examples: ["Satisfactory", "Conditional", "Unsatisfactory"]
93
98
  passive: true
94
99
 
95
- - name: "dot_safety_rating_date"
100
+ - name: "safety_rating_date"
101
+ namespace: "dotcensus"
96
102
  type: string
97
103
  description: "Date the safety rating was assigned, derived from the SAFETY_RATING_DATE field"
98
104
  display_name: "Safety Rating Date"
99
105
  mergeability: not_mergeable
100
- domain_flavors: ["organization"]
106
+ domain_flavors: ["organization", "person"]
101
107
  passive: true
102
108
 
103
- - name: "dot_last_mcs150_filing_date"
109
+ - name: "last_mcs150_filing_date"
110
+ namespace: "dotcensus"
104
111
  type: string
105
112
  description: "Date the carrier last filed or updated their MCS-150 Motor Carrier Identification Report with FMCSA"
106
113
  display_name: "Last MCS-150 Filing Date"
107
114
  mergeability: not_mergeable
108
- domain_flavors: ["organization"]
115
+ domain_flavors: ["organization", "person"]
109
116
  passive: true
110
117
 
111
- - name: "dot_hazmat_indicator"
118
+ - name: "hazmat_indicator"
119
+ namespace: "dotcensus"
112
120
  type: float
113
121
  description: "Whether the carrier transports hazardous materials (1.0 = yes, 0.0 = no), derived from the HM_Ind field"
114
122
  display_name: "Hazmat Indicator"
115
123
  mergeability: not_mergeable
116
- domain_flavors: ["organization"]
124
+ domain_flavors: ["organization", "person"]
117
125
  passive: true
118
126
 
119
- - name: "dot_total_drivers"
127
+ - name: "total_drivers"
128
+ namespace: "dotcensus"
120
129
  type: float
121
130
  description: "Total number of drivers reported by the carrier"
122
131
  display_name: "Total Drivers"
123
132
  mergeability: not_mergeable
124
- domain_flavors: ["organization"]
133
+ domain_flavors: ["organization", "person"]
125
134
  passive: true
126
135
 
127
- - name: "dot_total_power_units"
136
+ - name: "total_power_units"
137
+ namespace: "dotcensus"
128
138
  type: float
129
139
  description: "Total number of power units (trucks, tractors) operated by the carrier"
130
140
  display_name: "Total Power Units"
131
141
  mergeability: not_mergeable
132
- domain_flavors: ["organization"]
142
+ domain_flavors: ["organization", "person"]
133
143
  passive: true
134
144
 
135
- - name: "dot_total_bus_units"
145
+ - name: "total_bus_units"
146
+ namespace: "dotcensus"
136
147
  type: float
137
148
  description: "Total number of bus units operated by the carrier"
138
149
  display_name: "Total Bus Units"
139
150
  mergeability: not_mergeable
140
- domain_flavors: ["organization"]
151
+ domain_flavors: ["organization", "person"]
141
152
  passive: true
142
153
 
143
- - name: "dot_fleet_size_category"
154
+ - name: "fleet_size_category"
155
+ namespace: "dotcensus"
144
156
  type: string
145
157
  description: "Fleet size category assigned by FMCSA based on the number of power units"
146
158
  display_name: "Fleet Size Category"
147
159
  mergeability: not_mergeable
148
- domain_flavors: ["organization"]
160
+ domain_flavors: ["organization", "person"]
149
161
  examples: ["A (1-6 power units)", "D (20-100 power units)", "F (1000+ power units)"]
150
162
  passive: true
151
163
 
152
- - name: "dot_business_org_type"
164
+ - name: "business_org_type"
165
+ namespace: "dotcensus"
153
166
  type: string
154
167
  description: "Business organization type of the carrier"
155
168
  display_name: "Business Organization Type"
156
169
  mergeability: not_mergeable
157
- domain_flavors: ["organization"]
170
+ domain_flavors: ["organization", "person"]
158
171
  examples: ["Individual", "Partnership", "Corporation"]
159
172
  passive: true
160
173
 
161
- - name: "dot_entity_type"
174
+ - name: "entity_type"
175
+ namespace: "dotcensus"
162
176
  type: string
163
177
  description: "FMCSA entity type indicating whether the entity operates as a carrier, broker, shipper, or combination"
164
178
  display_name: "Entity Type"
165
179
  mergeability: not_mergeable
166
- domain_flavors: ["organization"]
180
+ domain_flavors: ["organization", "person"]
167
181
  examples: ["Carrier", "Carrier; Broker", "Carrier; Shipper"]
168
182
  passive: true
169
183
 
170
- - name: "dot_operating_authority"
184
+ - name: "operating_authority"
185
+ namespace: "dotcensus"
171
186
  type: string
172
187
  description: "Operating authority classification describing the carrier's authorization type"
173
188
  display_name: "Operating Authority"
174
189
  mergeability: not_mergeable
175
- domain_flavors: ["organization"]
190
+ domain_flavors: ["organization", "person"]
176
191
  examples: ["AUTHORIZED FOR HIRE", "PRIVATE PROPERTY", "EXEMPT FOR HIRE"]
177
192
  passive: true
178
193
 
179
- relationships:
180
194
  - name: "doing_business_as"
181
- description: "A legal entity is doing business as (DBA) an organization"
182
- display_name: "Doing Business As"
195
+ namespace: "dotcensus"
196
+ type: string
197
+ description: "FMCSA trade name or 'doing business as' (DBA) name when it differs from the legal name; stored as a string attribute on the legal-name entity, not a link to another entity"
198
+ display_name: "DOT Doing Business As"
183
199
  mergeability: not_mergeable
184
- domain_flavors: ["person", "organization"]
185
- target_flavors: ["organization"]
186
- examples: ["LUIS GALVAN doing business as G & G TRANSPORTATION CO"]
200
+ domain_flavors: ["organization", "person"]
201
+ examples: ["Acme Express", "G & G TRANSPORTATION CO", "CJ TRUCKING"]
187
202
  passive: true
188
203
 
204
+ relationships:
189
205
  - name: "is_located_at"
190
206
  description: "An entity is located at, operates in, resides in, is headquartered in, was born in, visits, or died in a location"
191
207
  display_name: "Located At"
192
208
  mergeability: not_mergeable
193
- domain_flavors: ["organization"]
209
+ domain_flavors: ["organization", "person"]
194
210
  target_flavors: ["location"]
195
211
  examples: ["DAYSPRING CARDS INC is located at SILOAM SPRINGS, AR"]
196
212
  passive: true
@@ -2631,6 +2631,22 @@ relationships:
2631
2631
  target_flavors: ["organization"]
2632
2632
  passive: true
2633
2633
 
2634
+ - name: "has_major_customer"
2635
+ description: "Link from a reporting company to a customer that represents a material concentration of revenue or receivables, as disclosed in the 10-K XBRL concentration risk schedule (srt:MajorCustomersAxis). The relationship attribute customer_revenue_concentration holds the disclosed percentage."
2636
+ display_name: "Has Major Customer"
2637
+ mergeability: not_mergeable
2638
+ domain_flavors: ["organization"]
2639
+ target_flavors: ["organization"]
2640
+ passive: true
2641
+
2642
+ - name: "is_major_customer_of"
2643
+ description: "Inverse of has_major_customer. Link from a customer organization to the reporting company for which it is a major customer."
2644
+ display_name: "Is Major Customer Of"
2645
+ mergeability: not_mergeable
2646
+ domain_flavors: ["organization"]
2647
+ target_flavors: ["organization"]
2648
+ passive: true
2649
+
2634
2650
  - name: "is_part_of"
2635
2651
  description: "An organization is a part of a larger organization, e.g., a subdivision or subsidiary within a larger company"
2636
2652
  display_name: "Part Of"
@@ -3073,6 +3089,22 @@ attributes:
3073
3089
  display_name: "Lending Value"
3074
3090
  mergeability: not_mergeable
3075
3091
 
3092
+ # ── has_major_customer relationship attributes (10-K XBRL) ──
3093
+
3094
+ - property: "has_major_customer"
3095
+ name: "customer_revenue_concentration"
3096
+ type: string
3097
+ description: "Fraction of revenue (or receivables) attributable to this customer, as reported (e.g. \"0.18\" = 18%). Stored as a decimal string consistent with other numeric relationship attributes. Source: us-gaap:ConcentrationRiskPercentage1."
3098
+ display_name: "Customer Revenue Concentration"
3099
+ mergeability: not_mergeable
3100
+
3101
+ - property: "has_major_customer"
3102
+ name: "concentration_benchmark"
3103
+ type: string
3104
+ description: "What the concentration percentage is measured against (e.g. 'Revenue', 'Trade receivables'). Derived from the ConcentrationRiskByBenchmarkAxis member label."
3105
+ display_name: "Concentration Benchmark"
3106
+ mergeability: not_mergeable
3107
+
3076
3108
  # ── custodied_by relationship attributes (N-CEN) ──
3077
3109
 
3078
3110
  - property: "custodied_by"