@yottagraph-app/data-model-skill 0.0.5 → 0.0.7

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.5",
3
+ "version": "0.0.7",
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",
@@ -52,7 +52,32 @@ Each SEC form type is a separate flavor, namespaced under `sec`. All share the s
52
52
  | `sec::13f_hr` | 13F-HR | Institutional investment manager holdings |
53
53
  | `sec::def_14a` | DEF 14A | Definitive proxy statement |
54
54
 
55
- Sub-records (8-K events, Form 4 transactions, Form 3 holdings) use their parent filing's flavor.
55
+ ### Sub-Records (8-K Events, Form 4 Transactions, Form 3 Holdings)
56
+
57
+ Sub-records are **separate graph entities**, not nested properties on the parent filing. Each sub-record has its own NEID and can be queried independently. They use the same flavor as their parent filing (e.g., `sec::8_k` for 8-K events, `sec::form_4` for Form 4 transactions).
58
+
59
+ **Entity naming pattern:**
60
+ - 8-K events: `{accession_number}_evt_{n}` (e.g., `0000320193-24-000067_evt_1`)
61
+ - Form 4 transactions: `{accession_number}_trx_{n}` (e.g., `0000320193-24-000067_trx_1`)
62
+ - Form 3 holdings: `{accession_number}_holding_{n}`
63
+
64
+ **Relationships on sub-records:**
65
+ - `filed` — points to the parent filing's accession number
66
+ - `issued_by` — points to the company
67
+
68
+ **Critical querying note:** Properties like `form_8k_event`, `form_8k_item_code`, `transaction_type`, `shares_transacted`, and other sub-record-specific properties do NOT appear on the parent filing entity or the organization entity. You must traverse the graph to the sub-record entities to access them.
69
+
70
+ **Traversal path:**
71
+ ```
72
+ organization --[filed]--> 8-K filing --[linked, distance 1]--> event sub-records
73
+ ```
74
+
75
+ **Example: Finding 8-K event sub-records for a company:**
76
+ 1. Get filing NEIDs from the organization's `filed` property
77
+ 2. Filter to 8-K filings by checking `form_type == "8-K"`
78
+ 3. For each 8-K filing, use a `linked` expression (distance 1, direction both) to find connected entities
79
+ 4. Exclude the organization and the filing itself from results — the remaining entities are the event sub-records
80
+ 5. Query those sub-record NEIDs for `form_8k_event` and `form_8k_item_code`
56
81
 
57
82
  ### `person`
58
83
 
@@ -161,12 +186,34 @@ The six core financial properties appear on both the **organization** and its **
161
186
 
162
187
  #### 8-K Corporate Events (source: `edgar_8k`)
163
188
 
164
- Data source: 8-K current report filings. Properties on document sub-records.
189
+ Data source: 8-K current report filings.
190
+
191
+ > **Important:** These properties are on **event sub-record entities**, not on the parent 8-K filing or the organization. See the [Sub-Records section](#sub-records-8-k-events-form-4-transactions-form-3-holdings) above for how to find them.
165
192
 
193
+ **Core event properties:**
166
194
  * `form_8k_event` — Snake_case event identifier. Examples: `"material_agreement"`, `"officer_director_change"`
167
195
  * `form_8k_item_code` — Raw SEC item number. Examples: `"1.01"`, `"5.02"`
196
+ * `event_severity` — Event importance classification. Values: `"critical"`, `"high"`, `"medium"`, `"low"`
168
197
  * `category` — Sub-classification of Item 8.01 Other Events. Examples: `"cybersecurity_incident"`
169
198
 
199
+ **Sub-record identity and relationships:**
200
+ * `accession_number` — Synthetic sub-record identifier. Example: `"0000320193-24-000067_evt_1"`
201
+ * `filed` — Relationship: event sub-record → parent 8-K filing
202
+ * `issued_by` — Relationship: event sub-record → company
203
+
204
+ **Item 8.01 keyword flags** (set to `"true"` when matched):
205
+ * `8k_cybersecurity_keyword` — Cybersecurity-related disclosure detected
206
+ * `8k_litigation_keyword` — Litigation-related disclosure detected
207
+ * `8k_regulatory_keyword` — Regulatory-related disclosure detected
208
+ * `8k_operational_keyword` — Operational issue disclosure detected
209
+
210
+ **ABS event flags** (Items 6.01–6.05, set to `"true"` when applicable):
211
+ * `abs_servicing_event` — Item 6.01: ABS servicing event
212
+ * `abs_servicer_change` — Item 6.02: ABS servicer change
213
+ * `abs_credit_enhancement_change` — Item 6.03: ABS credit enhancement change
214
+ * `abs_failure_event` — Item 6.04: ABS failure to make distribution
215
+ * `abs_securities_act` — Item 6.05: ABS Securities Act updating disclosure
216
+
170
217
  #### Beneficial Ownership (source: `edgar_sc_13d`, `edgar_sc_13g`)
171
218
 
172
219
  Data source: SC 13D/G XML filings. Properties on the filer organization.
@@ -240,8 +287,14 @@ Data source: Form 3/4 XML.
240
287
 
241
288
  #### Form 4 Transactions (source: `edgar_4`)
242
289
 
243
- Properties on document sub-records, one per transaction.
290
+ > **Important:** These properties are on **transaction sub-record entities**, not on the parent Form 4 filing. See the [Sub-Records section](#sub-records-8-k-events-form-4-transactions-form-3-holdings) above for how to find them.
291
+
292
+ **Sub-record identity and relationships:**
293
+ * `accession_number` — Synthetic sub-record identifier. Example: `"0000320193-24-000067_trx_1"`
294
+ * `filed` — Relationship: transaction sub-record → parent Form 4 filing
295
+ * `issued_by` — Relationship: transaction sub-record → issuer company
244
296
 
297
+ **Transaction properties:**
245
298
  * `transaction_type` — Human-readable code description. Examples: `"Open market or private purchase"`, `"Grant, award, or other acquisition"`
246
299
  * `transaction_date` — Transaction date (YYYY-MM-DD)
247
300
  * `acquired_disposed_code` — `"A"` (acquired) or `"D"` (disposed)
@@ -284,6 +337,8 @@ Data source: 13F-HR XML information table.
284
337
 
285
338
  ## Entity Relationships
286
339
 
340
+ > **Sub-record traversal:** Sub-records (8-K events, Form 4 transactions, Form 3 holdings) are separate document entities. To find them, traverse from the parent filing using a `linked` expression (distance 1). The sub-record's `filed` property points back to the parent filing, and `issued_by` points to the company.
341
+
287
342
  ```
288
343
  organization ──[filed]────────────────────→ document
289
344
  organization ──[filing_reference]─────────→ document
@@ -296,7 +351,8 @@ document ──[refers_to]──────────────
296
351
  document ──[filer]────────────────────→ organization (SC 13D/G)
297
352
  document ──[group_member]─────────────→ organization (SC 13D)
298
353
  document ──[compares_to]──────────────→ organization (DEF 14A)
299
- document ──[filed]────────────────────→ document (sub-record → parent)
354
+ document (sub-record)──[filed]────────────────────→ document (8-K event → parent 8-K filing)
355
+ document (sub-record)──[issued_by]────────────────→ organization (8-K event / Form 4 txn → company)
300
356
  person ──[is_officer]───────────────→ organization
301
357
  person ──[is_director]──────────────→ organization
302
358
  person ──[is_ten_percent_owner]─────→ organization
@@ -126,6 +126,14 @@ flavors:
126
126
  strong_id_properties: ["accession_number"]
127
127
  passive: true
128
128
 
129
+ - name: "filing"
130
+ namespace: "sec"
131
+ description: "SEC filing (generic, for form types without a specific modeled flavor)"
132
+ display_name: "SEC Filing"
133
+ mergeability: not_mergeable
134
+ strong_id_properties: ["accession_number"]
135
+ passive: true
136
+
129
137
  - name: "person"
130
138
  description: "A real person as opposed to a fictional character, such as a CEO, politician, or public figure"
131
139
  display_name: "Person"
@@ -574,7 +582,7 @@ properties:
574
582
  description: "SEC accession number uniquely identifying a filing"
575
583
  display_name: "Accession Number"
576
584
  mergeability: not_mergeable
577
- 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"]
585
+ 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::filing"]
578
586
  passive: true
579
587
 
580
588
  - name: "form_type"
@@ -582,7 +590,7 @@ properties:
582
590
  description: "Normalized SEC form type (e.g. 10-K, SC 13D, 4)"
583
591
  display_name: "Form Type"
584
592
  mergeability: not_mergeable
585
- 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"]
593
+ 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::filing"]
586
594
  passive: true
587
595
 
588
596
  - name: "filing_date"
@@ -590,7 +598,7 @@ properties:
590
598
  description: "Date the filing was submitted to the SEC (YYYY-MM-DD)"
591
599
  display_name: "Filing Date"
592
600
  mergeability: not_mergeable
593
- 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"]
601
+ 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::filing"]
594
602
  passive: true
595
603
 
596
604
  - name: "report_date"
@@ -598,7 +606,7 @@ properties:
598
606
  description: "End date of the primary reporting period (YYYY-MM-DD)"
599
607
  display_name: "Report Date"
600
608
  mergeability: not_mergeable
601
- 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"]
609
+ 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::filing"]
602
610
  passive: true
603
611
 
604
612
  # ── XBRL Financial Facts (key concepts) ──
@@ -1720,8 +1728,16 @@ relationships:
1720
1728
  description: "Link from a company to an SEC filing document it filed, or from a sub-record (event, transaction, holding) to its parent filing"
1721
1729
  display_name: "Filed"
1722
1730
  mergeability: not_mergeable
1723
- 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"]
1724
- 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"]
1731
+ 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::filing"]
1732
+ 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::filing"]
1733
+ passive: true
1734
+
1735
+ - name: "is_issuer_of"
1736
+ description: "Link from an issuer organization to a Section 16 ownership filing (Forms 3/4) where the CIK is the issuer, not the filer. The actual filer (insider) is resolved from the raw document header."
1737
+ display_name: "Is Issuer Of"
1738
+ mergeability: not_mergeable
1739
+ domain_flavors: ["organization"]
1740
+ target_flavors: ["sec::form_3", "sec::form_4", "sec::filing"]
1725
1741
  passive: true
1726
1742
 
1727
1743
  - name: "filing_reference"
@@ -1738,7 +1754,7 @@ relationships:
1738
1754
  description: "Link from a filing to the company it pertains to (the filer for most forms; the issuer for ownership forms)"
1739
1755
  display_name: "Issued By"
1740
1756
  mergeability: not_mergeable
1741
- 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"]
1757
+ 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::filing"]
1742
1758
  target_flavors: ["organization"]
1743
1759
  passive: true
1744
1760