@yottagraph-app/data-model-skill 0.0.13 → 0.0.15

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.13",
3
+ "version": "0.0.15",
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",
@@ -51,6 +51,16 @@ Each SEC form type is a separate flavor, namespaced under `sec`. All share the s
51
51
  | `sec::sc_13g` | SC 13G | Beneficial ownership report (passive) |
52
52
  | `sec::13f_hr` | 13F-HR | Institutional investment manager holdings |
53
53
  | `sec::def_14a` | DEF 14A | Definitive proxy statement |
54
+ | `sec::6_k` | 6-K | Foreign private issuer current report (XBRL only, no form download) |
55
+ | `sec::40_f` | 40-F | Canadian cross-border annual report (XBRL only, no form download) |
56
+ | `sec::filing` | SEC Filing | Generic filing — defined in `schema.yaml` but **never produced**: `SecFormFlavor()` returns `""` for unmodeled forms, causing them to be skipped in `AtomizeFilingsV2` |
57
+
58
+ ### `industry`
59
+
60
+ A Standard Industrial Classification (SIC) category assigned by the SEC.
61
+
62
+ - Primary key: `sic_code`
63
+ - Entity resolver: named entity. Strong ID = `sic_code`.
54
64
 
55
65
  ### Sub-Records (8-K Events, Form 4 Transactions, Form 3 Holdings)
56
66
 
@@ -84,7 +94,7 @@ organization --[filed]--> 8-K filing --[linked, distance 1]--> event sub-records
84
94
  A corporate insider (officer, director, or significant owner) from Form 3 or Form 4.
85
95
 
86
96
  - Primary key: `person_cik` when available; otherwise named entity resolution.
87
- - Entity resolver: named entity, mergeable. Strong ID = `person_cik` when present.
97
+ - Entity resolver: named entity, not mergeable. Strong ID = `person_cik` when present.
88
98
 
89
99
  ### `financial_instrument`
90
100
 
@@ -178,12 +188,28 @@ The six core financial properties appear on both the **organization** and its **
178
188
  * `total_liabilities` — Sum of all liabilities. May be computed fallback. Unit: USD. On: organization + document
179
189
  * `shareholders_equity` — Total stockholders' equity. Unit: USD. On: organization + document
180
190
  * `shares_outstanding` — Common shares outstanding. Unit: shares. On: organization + document
181
- * `eps_basic` — Basic earnings per share (10-K only). Unit: USD. On: document only
182
- * `eps_diluted` — Diluted earnings per share (10-K only). Unit: USD. On: document only
191
+ * `eps_basic` — Basic earnings per share. Unit: USD. On: document only (10-K, 10-Q, 20-F)
192
+ * `eps_diluted` — Diluted earnings per share. Unit: USD. On: document only (10-K, 10-Q, 20-F)
183
193
  * `entity_shell_company` — Whether the entity is a shell company. Values: `"true"`, `"false"`. On: organization only
184
194
  * `reporting_currency` — ISO 4217 currency code (20-F only). Examples: `"JPY"`, `"EUR"`. On: document only
185
195
  * `country_of_incorporation` — Country of incorporation (20-F only). Examples: `"Japan"`, `"Israel"`. On: document only
186
196
 
197
+ #### DEI Cover Page Properties (source: `edgar_10k`, `edgar_10q`)
198
+
199
+ Data source: iXBRL DEI (Document and Entity Information) cover page elements. On organization only unless noted.
200
+
201
+ * `entity_number_of_employees` — Workforce size (10-K only). Unit: count
202
+ * `entity_filer_category_dei` — Filer category from DEI. Examples: `"Large Accelerated Filer"`, `"Non-accelerated Filer"`
203
+ * `entity_small_business` — Whether the entity is a smaller reporting company. Values: `"true"`, `"false"`
204
+ * `entity_emerging_growth_company` — Whether the entity is an emerging growth company (JOBS Act). Values: `"true"`, `"false"`
205
+ * `entity_voluntary_filers` — Voluntary vs mandatory filer status (10-K only). Values: `"Yes"`, `"No"`
206
+ * `entity_well_known_seasoned_issuer` — WKSI flag — shelf registration eligible (10-K only). Values: `"Yes"`, `"No"`
207
+ * `entity_tax_id_number` — IRS tax identification number from DEI (10-K only)
208
+ * `security_12b_title` — Title of listed security class. Example: `"Common Stock, $0.00001 par value per share"`
209
+ * `entity_listing_exchange` — Securities exchange from DEI. Examples: `"NASDAQ"`, `"NYSE"`
210
+ * `document_fiscal_period_focus` — Fiscal period. Values: `"FY"`, `"Q1"`, `"Q2"`, `"Q3"`. On: organization + document
211
+ * `entity_incorporation_state_dei` — State or country of incorporation from DEI (cross-check vs submissions API)
212
+
187
213
  #### 8-K Corporate Events (source: `edgar_8k`)
188
214
 
189
215
  Data source: 8-K current report filings.
@@ -225,6 +251,9 @@ Data source: SC 13D/G XML filings. Properties on the filer organization.
225
251
  * `shares_declared` — Shares by individual group member. Unit: shares
226
252
  * `ownership_percent` — Percentage by individual member or SC 13G filer
227
253
  * `investment_purpose` — Stated purpose from Item 4. Examples: `"Investment"`, `"Strategic investment"`
254
+ * `intends_to_buy_more` — Filer stated intent to acquire additional shares. Float: `1.0` when true (only stored when true)
255
+ * `intends_to_sell_all` — Filer stated intent to dispose of all shares. Float: `1.0` when true (only stored when true)
256
+ * `intends_to_influence` — Filer stated intent to influence board or management. Float: `1.0` when true (only stored when true)
228
257
  * `is_passive_investor` — Always `1.0` on SC 13G records
229
258
  * `aggregate_amount_beneficially_owned` — Total shares beneficially owned. Unit: shares
230
259
  * `sole_voting_power` / `shared_voting_power` — Sole/shared voting authority. Unit: shares
@@ -242,6 +271,10 @@ Data source: co-registrant entries and EX-21 exhibit subsidiary tables.
242
271
  * `is_part_of` — Relationship: subsidiary → parent
243
272
  * `citizenship_or_state_of_organization` — Subsidiary jurisdiction (EX-21 only)
244
273
 
274
+ #### 8-K Counterparties (source: `edgar_8k`)
275
+
276
+ * `relationship_type` — Relationship between a counterparty organization and the issuer from 8-K (e.g. `"acquirer"`, `"creditor"`). On: counterparty organization entity
277
+
245
278
  ### Document Properties
246
279
 
247
280
  #### Filing Metadata (all pipelines)
@@ -279,6 +312,8 @@ Data source: Form 3/4 XML.
279
312
 
280
313
  * `person_cik` — SEC CIK for the reporting person (10-digit zero-padded). From `<rptOwnerCik>`.
281
314
  * `job_title` — Officer title. Examples: `"Chief Executive Officer"`, `"Director"`. From `<officerTitle>`.
315
+ * `owner_address` — Reporting owner address from Form 3/4 XML (city, state)
316
+ * `change_type` — Type of officer/director change from 8-K Item 5.02 (source: `edgar_8k`, not Form 3/4). Examples: `"appointed"`, `"resigned"`, `"terminated"`
282
317
  * `is_officer` — Relationship: person → organization (when `<isOfficer>1`)
283
318
  * `is_director` — Relationship: person → organization (when `<isDirector>1`)
284
319
  * `is_ten_percent_owner` — Relationship: person → organization (when `<isTenPercentOwner>1`)
@@ -303,13 +338,18 @@ Data source: Form 3/4 XML.
303
338
  * `price_per_share` — Transaction price. Unit: USD
304
339
  * `shares_owned_after` — Post-transaction shares. Unit: shares
305
340
  * `exercise_price` — Derivative exercise price (USD, derivatives only)
341
+ * `underlying_security_type` — Title of the underlying security for derivative holdings
342
+ * `underlying_security_shares` — Shares of the underlying security for derivative holdings. Unit: shares
306
343
  * `direct_or_indirect_ownership` — `"Direct"` or `"Indirect"`
307
344
  * `is_10b5_1_plan` — `"true"` when under a Rule 10b5-1 plan
345
+ * `equity_swap_involved` — Whether the transaction involves an equity swap. Values: `"true"`, `"false"`
346
+ * `footnote_text` — Footnote text providing transaction context (plan details, vesting schedules)
347
+ * `insider_trade_event` — Derived event classification. Values: `"INSIDER_BUY"`, `"INSIDER_SELL"`
308
348
 
309
349
  #### DEF 14A Proxy (source: `edgar_def_14a`)
310
350
 
311
351
  * `board_committee` — Committee membership. Examples: `"Audit"`, `"Compensation"`
312
- * `is_independent` — Independence classification. Values: `"true"`, `"false"`
352
+ * `is_independent` — Independence classification. Float: `1.0` = independent, `0.0` = not independent
313
353
  * `director_since` — Year. Example: `"2018"`
314
354
  * `total_compensation` — Summary Compensation Table total. Unit: USD
315
355
  * `board_size` — Number of directors (also on document)
@@ -331,6 +371,8 @@ Data source: 13F-HR XML information table.
331
371
  * `put_call` — `"PUT"`, `"CALL"`, or empty for equity
332
372
  * `voting_authority_sole` / `voting_authority_shared` / `voting_authority_none` — Voting authority breakdown. Unit: shares
333
373
  * `investment_discretion` — `"SOLE"`, `"DFND"`, or `"OTR"` (on organization)
374
+ * `report_period_date` — Quarter-end date for the 13F-HR report period (YYYY-MM-DD). On: document only
375
+ * `confidential_treatment_flag` — Whether the manager requested confidential treatment. On: document only
334
376
  * `holds_position` — Relationship: investment manager → financial instrument
335
377
 
336
378
  ---
@@ -342,10 +384,12 @@ Data source: 13F-HR XML information table.
342
384
  ```
343
385
  organization ──[filed]────────────────────→ document
344
386
  organization ──[filing_reference]─────────→ document
387
+ organization ──[is_issuer_of]─────────────→ document (Forms 3/4, SC 13D/G: issuer → ownership filing)
345
388
  organization ──[owns_stake_in]────────────→ organization (SC 13D/G)
346
389
  organization ──[has_subsidiary]───────────→ organization (co-registrant, EX-21)
347
390
  organization ──[is_part_of]───────────────→ organization (subsidiary → parent)
348
391
  organization ──[holds_position]───────────→ financial_instrument (13F-HR)
392
+ organization ──[issues_security]──────────→ financial_instrument (SC 13D/G: issuer → CUSIP)
349
393
  document ──[issued_by]────────────────→ organization
350
394
  document ──[refers_to]────────────────→ organization
351
395
  document ──[filer]────────────────────→ organization (SC 13D/G)
@@ -357,6 +401,7 @@ person ──[is_officer]─────────────
357
401
  person ──[is_director]──────────────→ organization
358
402
  person ──[is_ten_percent_owner]─────→ organization
359
403
  person ──[works_at]─────────────────→ organization
404
+ person ──[owns_stake_in]────────────→ organization (SC 13D/G: person beneficial owner)
360
405
  person ──[filing_reference]─────────→ document
361
406
  financial_instrument ──[filing_reference]─────────→ document
362
407
  ```
@@ -647,7 +647,7 @@ properties:
647
647
  description: "Total revenues (USD). XBRL: us-gaap:Revenues"
648
648
  display_name: "Revenues"
649
649
  mergeability: not_mergeable
650
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "organization"]
650
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::def_14a", "organization"]
651
651
  passive: true
652
652
 
653
653
  - name: "us_gaap:net_income_loss"
@@ -655,7 +655,7 @@ properties:
655
655
  description: "Net income or loss (USD). XBRL: us-gaap:NetIncomeLoss"
656
656
  display_name: "Net Income/Loss"
657
657
  mergeability: not_mergeable
658
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "organization"]
658
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::def_14a", "organization"]
659
659
  passive: true
660
660
 
661
661
  - name: "us_gaap:operating_income_loss"
@@ -799,7 +799,7 @@ properties:
799
799
  description: "Profit or loss including noncontrolling interest (USD). XBRL: us-gaap:ProfitLoss"
800
800
  display_name: "Profit/Loss"
801
801
  mergeability: not_mergeable
802
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "organization"]
802
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::def_14a", "organization"]
803
803
  passive: true
804
804
 
805
805
  - name: "us_gaap:cogs"
@@ -815,7 +815,7 @@ properties:
815
815
  description: "Depreciation, depletion and amortization (USD). XBRL: us-gaap:DepreciationDepletionAndAmortization"
816
816
  display_name: "D&A"
817
817
  mergeability: not_mergeable
818
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "organization"]
818
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::def_14a", "organization"]
819
819
  passive: true
820
820
 
821
821
  - name: "us_gaap:interest_expense"
@@ -823,7 +823,7 @@ properties:
823
823
  description: "Interest expense (USD). XBRL: us-gaap:InterestExpense"
824
824
  display_name: "Interest Expense"
825
825
  mergeability: not_mergeable
826
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "organization"]
826
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::def_14a", "organization"]
827
827
  passive: true
828
828
 
829
829
  - name: "us_gaap:interest_expense_nonoperating"
@@ -1067,7 +1067,7 @@ properties:
1067
1067
  description: "Income tax expense or benefit (USD). XBRL: us-gaap:IncomeTaxExpenseBenefit"
1068
1068
  display_name: "Income Tax Expense"
1069
1069
  mergeability: not_mergeable
1070
- domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "organization"]
1070
+ domain_flavors: ["sec::10_k", "sec::10_q", "sec::20_f", "sec::8_k", "sec::6_k", "sec::40_f", "sec::def_14a", "organization"]
1071
1071
  passive: true
1072
1072
 
1073
1073
  - name: "us_gaap:operating_expenses"
@@ -19,24 +19,91 @@ flavors:
19
19
  description: "A real person as opposed to a fictional character, such as a CEO, politician, or public figure"
20
20
  display_name: "Person"
21
21
  mergeability: not_mergeable
22
+ strong_id_properties: ["sanctions_id"]
22
23
  passive: true
23
24
 
24
25
  - name: "organization"
25
26
  description: "A particular business, institution, or organization such as a corporation, university, government agency, or non-profit"
26
27
  display_name: "Organization"
27
28
  mergeability: not_mergeable
29
+ strong_id_properties: ["sanctions_id"]
30
+ passive: true
31
+
32
+ - name: "legal_entity"
33
+ description: "An entity with legal personality whose type (person vs organization) is unknown in the source data, common in leak-derived datasets like ICIJ Offshore Leaks"
34
+ display_name: "Legal Entity"
35
+ mergeability: not_mergeable
36
+ strong_id_properties: ["sanctions_id"]
28
37
  passive: true
29
38
 
30
39
  - name: "sanction_program"
31
40
  description: "A government or international sanctions program under which entities are designated"
32
41
  display_name: "Sanction Program"
33
42
  mergeability: not_mergeable
43
+ strong_id_properties: ["program_id"]
34
44
  passive: true
35
45
 
36
- - name: "country"
37
- description: "A country referenced by sanctioned organizations, identified by ISO country code"
38
- display_name: "Country"
46
+ - name: "ship"
47
+ description: "A vessel (boat or ship) identified in sanctions designations"
48
+ display_name: "Vessel"
49
+ mergeability: not_mergeable
50
+ strong_id_properties: ["sanctions_id"]
51
+ passive: true
52
+
53
+ - name: "aircraft"
54
+ description: "An airplane identified in sanctions designations"
55
+ display_name: "Aircraft"
39
56
  mergeability: not_mergeable
57
+ strong_id_properties: ["sanctions_id"]
58
+ passive: true
59
+
60
+ - name: "financial_instrument"
61
+ description: "A specific asset that can be traded, such as a stock, ETF, bond, CD, or fund. Companies are organizations, NOT financial instruments. Specific currency amounts are NOT financial instruments."
62
+ display_name: "Security"
63
+ mergeability: not_mergeable
64
+ strong_id_properties: ["sanctions_id", "cusip_number", "isin"]
65
+ passive: true
66
+
67
+ - name: "crypto_wallet"
68
+ description: "A cryptocurrency wallet address identified in sanctions designations"
69
+ display_name: "Crypto Wallet"
70
+ mergeability: not_mergeable
71
+ strong_id_properties: ["sanctions_id", "public_key"]
72
+ passive: true
73
+
74
+ - name: "location"
75
+ description: "A specific named geographic location such as a city, country, region, or landmark"
76
+ display_name: "Address"
77
+ mergeability: not_mergeable
78
+ strong_id_properties: ["sanctions_id"]
79
+ passive: true
80
+
81
+ - name: "political_position"
82
+ description: "A political office or government position held by a PEP"
83
+ display_name: "Political Position"
84
+ mergeability: not_mergeable
85
+ strong_id_properties: ["sanctions_id"]
86
+ passive: true
87
+
88
+ - name: "physical_asset"
89
+ description: "A physical asset such as real estate or business property linked to a sanctioned person"
90
+ display_name: "Physical Asset"
91
+ mergeability: not_mergeable
92
+ strong_id_properties: ["sanctions_id"]
93
+ passive: true
94
+
95
+ - name: "article"
96
+ description: "A news article or press release being processed"
97
+ display_name: "Article"
98
+ mergeability: not_mergeable
99
+ strong_id_properties: ["sanctions_id"]
100
+ passive: true
101
+
102
+ - name: "identity_document"
103
+ description: "An identity document (passport, national ID) linked to a sanctioned person"
104
+ display_name: "Identity Document"
105
+ mergeability: not_mergeable
106
+ strong_id_properties: ["sanctions_id"]
40
107
  passive: true
41
108
 
42
109
  properties:
@@ -45,7 +112,7 @@ properties:
45
112
  description: "Unique identifier assigned to this entity by the upstream sanctions data provider (OpenSanctions entity ID)"
46
113
  display_name: "Sanctions ID"
47
114
  mergeability: not_mergeable
48
- domain_flavors: ["person", "organization"]
115
+ domain_flavors: ["person", "organization", "legal_entity", "ship", "aircraft", "financial_instrument", "crypto_wallet", "location", "political_position", "physical_asset", "article", "identity_document"]
49
116
  examples: ["ch-seco-94982", "us-ofac-12345"]
50
117
  passive: true
51
118
 
@@ -54,7 +121,7 @@ properties:
54
121
  description: "Display name of the entity"
55
122
  display_name: "Name"
56
123
  mergeability: not_mergeable
57
- domain_flavors: ["person", "organization"]
124
+ domain_flavors: ["person", "organization", "legal_entity", "sanction_program", "ship", "aircraft", "financial_instrument", "crypto_wallet", "location", "political_position", "physical_asset", "article"]
58
125
  examples: ["Zhongheng Lin", "Vladimir Putin"]
59
126
  passive: true
60
127
 
@@ -63,7 +130,7 @@ properties:
63
130
  description: "An alternative name or spelling for this entity, one atom per alias"
64
131
  display_name: "Alias"
65
132
  mergeability: not_mergeable
66
- domain_flavors: ["person", "organization"]
133
+ domain_flavors: ["person", "organization", "legal_entity", "ship", "aircraft", "financial_instrument", "crypto_wallet"]
67
134
  passive: true
68
135
 
69
136
  - name: "birth_date"
@@ -98,7 +165,7 @@ properties:
98
165
  description: "Classification tag indicating the type of sanctions designation, one atom per topic"
99
166
  display_name: "Sanctions Topic"
100
167
  mergeability: not_mergeable
101
- domain_flavors: ["person", "organization"]
168
+ domain_flavors: ["person", "organization", "legal_entity", "ship", "aircraft", "financial_instrument", "crypto_wallet"]
102
169
  examples: ["sanction", "poi", "debarment", "entity.associate"]
103
170
  passive: true
104
171
 
@@ -107,47 +174,512 @@ properties:
107
174
  description: "Descriptive notes or commentary associated with the entity"
108
175
  display_name: "Notes"
109
176
  mergeability: not_mergeable
110
- domain_flavors: ["person", "organization"]
177
+ domain_flavors: ["person", "organization", "legal_entity", "ship", "aircraft", "physical_asset", "crypto_wallet"]
111
178
  passive: true
112
179
 
113
- - name: "sanctioned"
114
- type: float
115
- description: "Boolean flag indicating this entity is a sanctions target, emitted only when no notes are present as a fallback marker"
116
- display_name: "Sanctioned"
180
+ - name: "sanction_source_url"
181
+ type: string
182
+ description: "URL of the original source document for this sanctions listing, one atom per URL"
183
+ display_name: "Sanction Source URL"
184
+ mergeability: not_mergeable
185
+ domain_flavors: ["person", "organization", "legal_entity", "ship", "aircraft", "financial_instrument", "crypto_wallet", "article"]
186
+ examples: ["https://www.federalreserve.gov/boarddocs/press/enforcement/2005/20050607/default.htm"]
187
+ passive: true
188
+
189
+ - name: "sanction_start_date"
190
+ type: string
191
+ description: "ISO 8601 date when this entity first appeared in the sanctions dataset (from OpenSanctions first_seen)"
192
+ display_name: "Sanction Start Date"
117
193
  mergeability: not_mergeable
118
- domain_flavors: ["person", "organization"]
194
+ domain_flavors: ["person", "organization", "legal_entity", "ship", "aircraft", "financial_instrument", "crypto_wallet", "political_position", "location", "article"]
195
+ examples: ["2022-02-25", "2023-06-14"]
196
+ passive: true
197
+
198
+ - name: "sanction_end_date"
199
+ type: string
200
+ description: "ISO 8601 date when this entity was removed from the sanctions dataset; absent while actively sanctioned"
201
+ display_name: "Sanction End Date"
202
+ mergeability: not_mergeable
203
+ domain_flavors: ["person", "organization", "legal_entity", "ship", "aircraft", "financial_instrument", "crypto_wallet"]
204
+ examples: ["2026-04-06"]
205
+ passive: true
206
+
207
+ - name: "last_fetched"
208
+ type: string
209
+ description: "ISO 8601 date of the last dataset snapshot in which this entity or relationship was present"
210
+ display_name: "Last Fetched"
211
+ mergeability: not_mergeable
212
+ domain_flavors: ["person", "organization", "legal_entity", "ship", "aircraft", "financial_instrument", "crypto_wallet", "physical_asset", "political_position", "location", "article"]
213
+ examples: ["2026-04-09"]
119
214
  passive: true
120
215
 
121
216
  - name: "address"
122
217
  type: string
123
- description: "Physical address of the sanctioned organization as stated in the sanctions listing"
218
+ description: "Physical street address of the entity"
124
219
  display_name: "Address"
125
220
  mergeability: not_mergeable
126
- domain_flavors: ["organization"]
221
+ domain_flavors: ["organization", "legal_entity"]
127
222
  passive: true
128
223
 
129
- - name: "sector"
224
+ - name: "sanction_sector"
130
225
  type: string
131
226
  description: "Business sector or industry classification of the sanctioned organization"
132
- display_name: "Sector"
227
+ display_name: "Sanction Sector"
133
228
  mergeability: not_mergeable
134
229
  domain_flavors: ["organization"]
135
230
  examples: ["Energy", "Banking", "Defense"]
136
231
  passive: true
137
232
 
233
+ # Vessel properties
234
+ - name: "imo_number"
235
+ type: string
236
+ description: "IMO number of the vessel"
237
+ display_name: "IMO Number"
238
+ mergeability: not_mergeable
239
+ domain_flavors: ["ship"]
240
+ examples: ["IMO9553359"]
241
+ passive: true
242
+
243
+ - name: "mmsi"
244
+ type: string
245
+ description: "Maritime Mobile Service Identity of the vessel"
246
+ display_name: "MMSI"
247
+ mergeability: not_mergeable
248
+ domain_flavors: ["ship"]
249
+ passive: true
250
+
251
+ - name: "callsign"
252
+ type: string
253
+ description: "Radio call sign of the vessel"
254
+ display_name: "Call Sign"
255
+ mergeability: not_mergeable
256
+ domain_flavors: ["ship"]
257
+ passive: true
258
+
259
+ - name: "shipAndCargoType"
260
+ type: string
261
+ description: "Type classification of the vessel"
262
+ display_name: "Ship / Cargo Type"
263
+ mergeability: not_mergeable
264
+ domain_flavors: ["ship"]
265
+ examples: ["General cargo/multipurpose", "Oil tanker"]
266
+ passive: true
267
+
268
+ - name: "grossTonnage"
269
+ type: float
270
+ description: "Gross registered tonnage of the vessel"
271
+ display_name: "Gross Tonnage"
272
+ mergeability: not_mergeable
273
+ domain_flavors: ["ship"]
274
+ passive: true
275
+
276
+ # Aircraft properties
277
+ - name: "serial_number"
278
+ type: string
279
+ description: "Manufacturer serial number of the aircraft"
280
+ display_name: "Serial Number"
281
+ mergeability: not_mergeable
282
+ domain_flavors: ["aircraft"]
283
+ passive: true
284
+
285
+ - name: "tailNumber"
286
+ type: string
287
+ description: "Registration number (tail number) of the aircraft"
288
+ display_name: "Tail Number"
289
+ mergeability: not_mergeable
290
+ domain_flavors: ["aircraft"]
291
+ passive: true
292
+
293
+ - name: "model"
294
+ type: string
295
+ description: "Aircraft model"
296
+ display_name: "Model"
297
+ mergeability: not_mergeable
298
+ domain_flavors: ["aircraft"]
299
+ examples: ["Gulfstream 200", "Boeing 737"]
300
+ passive: true
301
+
302
+ # Security properties
303
+ - name: "isin"
304
+ type: string
305
+ description: "International Securities Identification Number (ISO 6166) uniquely identifying this financial instrument"
306
+ display_name: "ISIN"
307
+ mergeability: not_mergeable
308
+ domain_flavors: ["financial_instrument"]
309
+ passive: true
310
+
311
+ - name: "cusip_number"
312
+ type: string
313
+ description: "CUSIP identifier for the security"
314
+ display_name: "CUSIP Number"
315
+ mergeability: not_mergeable
316
+ domain_flavors: ["financial_instrument"]
317
+ passive: true
318
+
319
+ - name: "ticker"
320
+ type: string
321
+ description: "Primary stock ticker symbol"
322
+ display_name: "Ticker"
323
+ mergeability: not_mergeable
324
+ domain_flavors: ["financial_instrument"]
325
+ passive: true
326
+
327
+ - name: "currency"
328
+ type: string
329
+ description: "Currency denomination of the security or crypto wallet"
330
+ display_name: "Currency"
331
+ mergeability: not_mergeable
332
+ domain_flavors: ["financial_instrument", "crypto_wallet"]
333
+ passive: true
334
+
335
+ - name: "figi"
336
+ type: string
337
+ description: "Financial Instrument Global Identifier (Bloomberg OpenFIGI)"
338
+ display_name: "FIGI"
339
+ mergeability: not_mergeable
340
+ domain_flavors: ["financial_instrument"]
341
+ passive: true
342
+
343
+ # issuer is modeled as the instrument_issuer relationship (see relationships section)
344
+
345
+ # CryptoWallet properties
346
+ - name: "public_key"
347
+ type: string
348
+ description: "Blockchain public key or wallet address"
349
+ display_name: "Public Key"
350
+ mergeability: not_mergeable
351
+ domain_flavors: ["crypto_wallet"]
352
+ passive: true
353
+
354
+ # Document properties
355
+ - name: "document_number"
356
+ type: string
357
+ description: "Passport or identity document number"
358
+ display_name: "Document Number"
359
+ mergeability: not_mergeable
360
+ domain_flavors: ["identity_document"]
361
+ passive: true
362
+
363
+ - name: "document_country"
364
+ type: string
365
+ description: "Issuing country of the identity document"
366
+ display_name: "Document Country"
367
+ mergeability: not_mergeable
368
+ domain_flavors: ["identity_document"]
369
+ passive: true
370
+
371
+ # Article properties
372
+ - name: "title"
373
+ type: string
374
+ description: "Title of the entity"
375
+ display_name: "Title"
376
+ mergeability: not_mergeable
377
+ domain_flavors: ["article"]
378
+ passive: true
379
+
380
+ - name: "published_at"
381
+ type: string
382
+ description: "Publication date of the article"
383
+ display_name: "Published At"
384
+ mergeability: not_mergeable
385
+ domain_flavors: ["article"]
386
+ passive: true
387
+
388
+ # Sanction program properties
389
+ - name: "program_description"
390
+ type: string
391
+ description: "Description of the sanctions program and its legal basis"
392
+ display_name: "Program Description"
393
+ mergeability: not_mergeable
394
+ domain_flavors: ["sanction_program"]
395
+ passive: true
396
+
397
+ - name: "program_url"
398
+ type: string
399
+ description: "URL of the official sanctions program page"
400
+ display_name: "Program URL"
401
+ mergeability: not_mergeable
402
+ domain_flavors: ["sanction_program"]
403
+ passive: true
404
+
405
+ - name: "program_issuer"
406
+ type: string
407
+ description: "Government body or authority that administers the sanctions program"
408
+ display_name: "Program Issuer"
409
+ mergeability: not_mergeable
410
+ domain_flavors: ["sanction_program"]
411
+ passive: true
412
+
413
+ - name: "program_measures"
414
+ type: string
415
+ description: "Type of sanctions measures imposed by the program, one atom per measure"
416
+ display_name: "Program Measures"
417
+ mergeability: not_mergeable
418
+ domain_flavors: ["sanction_program"]
419
+ passive: true
420
+
138
421
  relationships:
139
422
  - name: "sanction_program"
140
423
  description: "Links a sanctioned entity to the sanctions program under which it is designated"
141
424
  display_name: "Sanction Program"
142
425
  mergeability: not_mergeable
143
- domain_flavors: ["person", "organization"]
144
- target_flavors: ["sanction_program"]
426
+ domain_flavors: ["person", "organization", "legal_entity", "ship", "aircraft", "financial_instrument", "crypto_wallet", "location", "physical_asset"]
427
+ target_flavors: ["sanction_program", "organization"]
428
+ passive: true
429
+
430
+ - name: "flag"
431
+ description: "Links a vessel to its flag state country"
432
+ display_name: "Flag"
433
+ mergeability: not_mergeable
434
+ domain_flavors: ["ship"]
435
+ target_flavors: ["location"]
145
436
  passive: true
146
437
 
147
438
  - name: "country"
148
439
  description: "Links a sanctioned organization to its associated country"
149
440
  display_name: "Country"
150
441
  mergeability: not_mergeable
151
- domain_flavors: ["organization"]
152
- target_flavors: ["country"]
442
+ domain_flavors: ["organization", "legal_entity", "ship", "financial_instrument", "physical_asset", "political_position"]
443
+ target_flavors: ["location"]
444
+ passive: true
445
+
446
+ - name: "owns"
447
+ description: "A person or organization owns or controls another organization or location (such as real estate)."
448
+ display_name: "Owns"
449
+ mergeability: not_mergeable
450
+ domain_flavors: ["person", "organization", "legal_entity"]
451
+ target_flavors: ["organization", "legal_entity", "ship", "aircraft", "financial_instrument", "crypto_wallet", "physical_asset", "location"]
452
+ passive: true
453
+
454
+ - name: "is_director"
455
+ description: "A person or entity is on the board of directors of an organization. Not to be used for heads of organizations."
456
+ display_name: "Is Director"
457
+ mergeability: not_mergeable
458
+ domain_flavors: ["person", "legal_entity", "organization"]
459
+ target_flavors: ["organization", "legal_entity"]
460
+ passive: true
461
+
462
+ - name: "holds_political_position"
463
+ description: "Links a politically exposed person to the position they hold"
464
+ display_name: "Holds Political Position"
465
+ mergeability: not_mergeable
466
+ domain_flavors: ["person", "legal_entity"]
467
+ target_flavors: ["political_position"]
468
+ passive: true
469
+
470
+ - name: "is_holder"
471
+ description: "Links a person to an identity document (passport, national ID)"
472
+ display_name: "Is Holder"
473
+ mergeability: not_mergeable
474
+ domain_flavors: ["person", "legal_entity"]
475
+ target_flavors: ["identity_document"]
476
+ passive: true
477
+
478
+ - name: "instrument_issuer"
479
+ description: "Links a financial instrument to the organization that issued it"
480
+ display_name: "Instrument Issuer"
481
+ mergeability: not_mergeable
482
+ domain_flavors: ["financial_instrument"]
483
+ target_flavors: ["organization", "legal_entity"]
484
+ passive: true
485
+
486
+ - name: "appears_in"
487
+ description: "An entity or event appears in a source document"
488
+ display_name: "Appears In"
489
+ mergeability: not_mergeable
490
+ domain_flavors: ["person", "organization", "legal_entity"]
491
+ target_flavors: ["article"]
492
+ passive: true
493
+
494
+ - name: "family_member"
495
+ description: "Links a person to a family member (spouse, parent, child, sibling)"
496
+ display_name: "Family Member"
497
+ mergeability: not_mergeable
498
+ domain_flavors: ["person", "legal_entity"]
499
+ target_flavors: ["person", "legal_entity"]
500
+ passive: true
501
+
502
+ - name: "associated_with"
503
+ description: "A generic association between two entities, from UnknownLink or Associate schemas"
504
+ display_name: "Associated With"
505
+ mergeability: not_mergeable
506
+ domain_flavors: ["person", "organization", "legal_entity", "ship", "aircraft", "financial_instrument", "crypto_wallet", "physical_asset"]
507
+ target_flavors: ["person", "organization", "legal_entity", "ship", "aircraft", "financial_instrument", "crypto_wallet", "physical_asset"]
508
+ passive: true
509
+
510
+ - name: "succeeds"
511
+ description: "Links a successor entity to its predecessor (positions or organizations)"
512
+ display_name: "Succeeds"
513
+ mergeability: not_mergeable
514
+ domain_flavors: ["person", "organization", "legal_entity", "political_position"]
515
+ target_flavors: ["person", "organization", "legal_entity", "political_position"]
516
+ passive: true
517
+
518
+ - name: "represents"
519
+ description: "A person or entity legally or diplomatically represents another entity"
520
+ display_name: "Represents"
521
+ mergeability: not_mergeable
522
+ domain_flavors: ["person", "organization", "legal_entity"]
523
+ target_flavors: ["person", "organization", "legal_entity"]
524
+ passive: true
525
+
526
+ - name: "is_member"
527
+ description: "A person is a member of an organization"
528
+ display_name: "Is Member"
529
+ mergeability: not_mergeable
530
+ domain_flavors: ["person", "legal_entity"]
531
+ target_flavors: ["organization", "legal_entity"]
532
+ passive: true
533
+
534
+ - name: "employed_by"
535
+ description: "A person is employed by an organization"
536
+ display_name: "Employed By"
537
+ mergeability: not_mergeable
538
+ domain_flavors: ["person", "legal_entity"]
539
+ target_flavors: ["organization", "legal_entity"]
540
+ passive: true
541
+
542
+ - name: "paid"
543
+ description: "One entity made a payment to another"
544
+ display_name: "Paid"
545
+ mergeability: not_mergeable
546
+ domain_flavors: ["person", "organization", "legal_entity", "physical_asset"]
547
+ target_flavors: ["person", "organization", "legal_entity", "physical_asset"]
548
+ passive: true
549
+
550
+ - name: "owes_debt"
551
+ description: "One entity owes a debt to another"
552
+ display_name: "Owes Debt"
553
+ mergeability: not_mergeable
554
+ domain_flavors: ["person", "organization", "legal_entity", "physical_asset"]
555
+ target_flavors: ["person", "organization", "legal_entity", "physical_asset"]
556
+ passive: true
557
+
558
+ attributes:
559
+ - property: "sanction_program"
560
+ name: "authority"
561
+ type: string
562
+ description: "Name of the sanctioning authority"
563
+ display_name: "Authority"
564
+ mergeability: not_mergeable
565
+ passive: true
566
+
567
+ - property: "sanction_program"
568
+ name: "reason"
569
+ type: string
570
+ description: "Reason(s) for the sanctions designation"
571
+ display_name: "Reason"
572
+ mergeability: not_mergeable
573
+ passive: true
574
+
575
+ - property: "sanction_program"
576
+ name: "listing_date"
577
+ type: string
578
+ description: "Date when the entity was listed under this program"
579
+ display_name: "Listing Date"
580
+ mergeability: not_mergeable
581
+ passive: true
582
+
583
+ - property: "sanction_program"
584
+ name: "start_date"
585
+ type: string
586
+ description: "Start date of the sanctions measures"
587
+ display_name: "Start Date"
588
+ mergeability: not_mergeable
589
+ passive: true
590
+
591
+ - property: "sanction_program"
592
+ name: "end_date"
593
+ type: string
594
+ description: "End date of the sanctions measures, if lifted"
595
+ display_name: "End Date"
596
+ mergeability: not_mergeable
597
+ passive: true
598
+
599
+ - property: "sanction_program"
600
+ name: "status"
601
+ type: string
602
+ description: "Current status of the designation"
603
+ display_name: "Status"
604
+ mergeability: not_mergeable
605
+ passive: true
606
+
607
+ - property: "sanction_program"
608
+ name: "provisions"
609
+ type: string
610
+ description: "Legal provisions under which the entity is designated"
611
+ display_name: "Provisions"
612
+ mergeability: not_mergeable
613
+ passive: true
614
+
615
+ - property: "sanction_program"
616
+ name: "summary"
617
+ type: string
618
+ description: "Summary of the sanctions designation"
619
+ display_name: "Summary"
620
+ mergeability: not_mergeable
621
+ passive: true
622
+
623
+ - property: "family_member"
624
+ name: "relationship_type"
625
+ type: string
626
+ description: "Type of family relationship (e.g. spouse, child, parent, sibling)"
627
+ display_name: "Relationship Type"
628
+ mergeability: not_mergeable
629
+ passive: true
630
+
631
+ - property: "associated_with"
632
+ name: "role"
633
+ type: string
634
+ description: "Role or nature of the association"
635
+ display_name: "Role"
636
+ mergeability: not_mergeable
637
+ passive: true
638
+
639
+ - property: "associated_with"
640
+ name: "relationship_type"
641
+ type: string
642
+ description: "Type of association (e.g. partner in business, significant person)"
643
+ display_name: "Relationship Type"
644
+ mergeability: not_mergeable
645
+ passive: true
646
+
647
+ - property: "represents"
648
+ name: "role"
649
+ type: string
650
+ description: "Nature of the representation (e.g. lawyer, diplomat)"
651
+ display_name: "Role"
652
+ mergeability: not_mergeable
653
+ passive: true
654
+
655
+ - property: "is_member"
656
+ name: "role"
657
+ type: string
658
+ description: "Role within the organization"
659
+ display_name: "Role"
660
+ mergeability: not_mergeable
661
+ passive: true
662
+
663
+ - property: "employed_by"
664
+ name: "role"
665
+ type: string
666
+ description: "Job title or role"
667
+ display_name: "Role"
668
+ mergeability: not_mergeable
669
+ passive: true
670
+
671
+ - property: "paid"
672
+ name: "summary"
673
+ type: string
674
+ description: "Description of the payment"
675
+ display_name: "Summary"
676
+ mergeability: not_mergeable
677
+ passive: true
678
+
679
+ - property: "owes_debt"
680
+ name: "summary"
681
+ type: string
682
+ description: "Description of the debt"
683
+ display_name: "Summary"
684
+ mergeability: not_mergeable
153
685
  passive: true