@yottagraph-app/data-model-skill 0.0.1

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/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # @yottagraph-app/data-model-skill
2
+
3
+ Data model skill documentation for AI agents - entity types, properties, and schemas from Lovelace fetch sources.
4
+
5
+ ## Overview
6
+
7
+ This package provides documentation about the data model used by Lovelace's fetch sources. Each source (EDGAR, FRED, FDIC, etc.) contributes entity types, properties, and relationships to the knowledge graph. This skill helps AI agents understand what data is available and how it's structured.
8
+
9
+ ## Installation
10
+
11
+ This package is published to public npm:
12
+
13
+ ```bash
14
+ npm install @yottagraph-app/data-model-skill
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```javascript
20
+ const dataModel = require('@yottagraph-app/data-model-skill');
21
+
22
+ // Get the main skill file path
23
+ console.log(dataModel.skillPath);
24
+
25
+ // List available sources
26
+ console.log(dataModel.sources); // ['edgar', 'fdic', 'fred', ...]
27
+
28
+ // Get a specific source file
29
+ const edgarSchema = dataModel.getSourceFile('edgar', 'schema.yaml');
30
+ const edgarDict = dataModel.getSourceFile('edgar', 'DATA_DICTIONARY.md');
31
+ ```
32
+
33
+ ## Contents
34
+
35
+ The `skill/` directory contains:
36
+
37
+ - `SKILL.md` - Main skill entry point with overview and navigation
38
+ - `overview.md` - Detailed concepts and per-source summary
39
+ - `<source>/` - Per-source directories containing:
40
+ - `DATA_DICTIONARY.md` - Human-readable documentation of entity types, properties, and relationships
41
+ - `schema.yaml` - Machine-readable schema definition
42
+
43
+ ## Sources
44
+
45
+ | Source | Description |
46
+ |--------|-------------|
47
+ | edgar | SEC EDGAR filings (10-K, 10-Q, 8-K, ownership forms, etc.) |
48
+ | fdic | FDIC BankFind Suite (insured institutions, failures) |
49
+ | fred | Federal Reserve Economic Data (GDP, employment, rates) |
50
+ | newsdata | News articles and press releases |
51
+ | polymarket | Polymarket prediction markets |
52
+ | sanctions | OpenSanctions (OFAC, EU, UN sanctions lists) |
53
+
54
+ ## Development
55
+
56
+ To sync the skill files from the source repository:
57
+
58
+ ```bash
59
+ npm run sync
60
+ ```
61
+
62
+ This copies `DATA_DICTIONARY.md` and `schema.yaml` files from `moongoose/fetch/fetchtypes/` into the `skill/` directory.
63
+
64
+ ### Exclusion Config
65
+
66
+ Edit `sync-config.json` to exclude sources:
67
+
68
+ ```json
69
+ {
70
+ "exclude": ["gdelt", "wikipedia"]
71
+ }
72
+ ```
73
+
74
+ ## License
75
+
76
+ MIT
package/index.js ADDED
@@ -0,0 +1,51 @@
1
+ const path = require('path');
2
+ const fs = require('fs');
3
+
4
+ const skillDir = path.join(__dirname, 'skill');
5
+
6
+ // Get list of source directories (subdirs in skill/ that aren't files)
7
+ function getSources() {
8
+ if (!fs.existsSync(skillDir)) return [];
9
+ return fs.readdirSync(skillDir).filter(f => {
10
+ const fullPath = path.join(skillDir, f);
11
+ return fs.statSync(fullPath).isDirectory();
12
+ });
13
+ }
14
+
15
+ // Top-level skill assets: markdown and shared YAML (e.g. system_schema.yaml)
16
+ function getTopLevelSkillFiles() {
17
+ if (!fs.existsSync(skillDir)) return [];
18
+ return fs.readdirSync(skillDir).filter(f => {
19
+ const fullPath = path.join(skillDir, f);
20
+ if (!fs.statSync(fullPath).isFile()) return false;
21
+ return f.endsWith('.md') || f.endsWith('.yaml');
22
+ });
23
+ }
24
+
25
+ module.exports = {
26
+ // Main skill entry point
27
+ skillPath: path.join(skillDir, 'SKILL.md'),
28
+
29
+ // All skill file paths
30
+ paths: {
31
+ skill: path.join(skillDir, 'SKILL.md'),
32
+ overview: path.join(skillDir, 'overview.md'),
33
+ systemSchema: path.join(skillDir, 'system_schema.yaml'),
34
+ dir: skillDir
35
+ },
36
+
37
+ // List of data sources (edgar, fdic, fred, etc.)
38
+ sources: getSources(),
39
+
40
+ // List of top-level skill files (.md and root-level .yaml, e.g. system_schema.yaml)
41
+ files: getTopLevelSkillFiles(),
42
+
43
+ // Helper to get path to a specific source file
44
+ getSourceFile: (source, filename) => path.join(skillDir, source, filename),
45
+
46
+ // Helper to get path to a source directory
47
+ getSourceDir: (source) => path.join(skillDir, source),
48
+
49
+ // Package metadata
50
+ version: require('./package.json').version
51
+ };
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@yottagraph-app/data-model-skill",
3
+ "version": "0.0.1",
4
+ "description": "Data model skill documentation for AI agents - entity types, properties, and schemas from Lovelace fetch sources",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/Lovelace-AI/lovelace.git"
8
+ },
9
+ "publishConfig": {
10
+ "registry": "https://registry.npmjs.org",
11
+ "access": "public"
12
+ },
13
+ "files": [
14
+ "skill/",
15
+ "index.js"
16
+ ],
17
+ "main": "index.js",
18
+ "license": "MIT",
19
+ "scripts": {
20
+ "sync": "node scripts/sync-skill.js",
21
+ "test": "echo 'No tests configured for this package' && exit 1",
22
+ "validate": "node -e \"const pkg = require('./index.js'); console.log('Loaded:', Object.keys(pkg));\""
23
+ }
24
+ }
package/skill/SKILL.md ADDED
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: data-model
3
+ description: Understand the Lovelace data model - entity types, properties, relationships, and schemas from fetch sources like EDGAR, FRED, FDIC, and more.
4
+ ---
5
+
6
+ # Data Model Skill
7
+
8
+ This skill provides documentation for the Lovelace data model, describing the entity types, properties, and relationships that each fetch source contributes to the knowledge graph.
9
+
10
+ ## When to Use This Skill
11
+
12
+ Use this skill when you need to:
13
+ - Understand what entity types exist (organizations, people, filings, etc.)
14
+ - Know what properties are available on entities
15
+ - Understand relationships between entity types
16
+ - Look up the schema definition for a data source
17
+
18
+ ## Quick Start
19
+
20
+ 1. **Identify the source**: Determine which data source is relevant (EDGAR for SEC filings, FRED for economic data, etc.)
21
+ 2. **Read the DATA_DICTIONARY.md**: Get human-readable documentation of entities, properties, and relationships
22
+ 3. **Check schema.yaml**: For machine-readable schema definitions including flavors, properties, and extraction rules
23
+
24
+ ## Available Sources
25
+
26
+ | Source | Description | Files |
27
+ |--------|-------------|-------|
28
+ | [edgar](edgar/) | SEC EDGAR filings - 10-K, 10-Q, 8-K, ownership forms, institutional holdings | DATA_DICTIONARY.md, schema.yaml |
29
+ | [fdic](fdic/) | FDIC BankFind Suite - insured institutions, branch data, failures | DATA_DICTIONARY.md, schema.yaml |
30
+ | [fred](fred/) | Federal Reserve Economic Data - GDP, employment, inflation, rates | DATA_DICTIONARY.md, schema.yaml |
31
+ | [gleif](gleif/) | Global Legal Entity Identifier Foundation - LEI records, corporate ownership | DATA_DICTIONARY.md, schema.yaml |
32
+ | [newsdata](newsdata/) | News articles and press releases with LLM extraction | schema.yaml |
33
+ | [polymarket](polymarket/) | Polymarket prediction markets via Gamma API | DATA_DICTIONARY.md, schema.yaml |
34
+ | [sanctions](sanctions/) | OpenSanctions - OFAC, EU, UN, HM Treasury sanctions lists | DATA_DICTIONARY.md, schema.yaml |
35
+ | [stocks](stocks/) | US equity OHLCV price data from Alpha Vantage (NYSE, NASDAQ, AMEX) | DATA_DICTIONARY.md, schema.yaml |
36
+ | [wikipedia](wikipedia/) | People, locations, and organizations from English Wikipedia | DATA_DICTIONARY.md, schema.yaml |
37
+
38
+ ## File Types
39
+
40
+ ### DATA_DICTIONARY.md
41
+
42
+ Human-readable documentation containing:
43
+ - **Source Overview**: What the source is and how data flows through the pipeline
44
+ - **Entity Types**: What flavors (entity types) this source creates, with primary keys and resolver behavior
45
+ - **Properties**: Field definitions with examples and derivation notes
46
+ - **Relationships**: How entities connect to each other
47
+
48
+ ### schema.yaml
49
+
50
+ Machine-readable schema definition containing:
51
+ - **flavors**: Entity type definitions with mergeability and strong ID properties
52
+ - **properties**: Field definitions with types, descriptions, and domain flavors
53
+ - **relationships**: Link definitions with domain and target flavors
54
+ - **extraction**: Whether the schema is open or closed for each category
55
+
56
+ ## See Also
57
+
58
+ - [overview.md](overview.md) - Core concepts and how to navigate the documentation
@@ -0,0 +1,306 @@
1
+ # Data Dictionary: EDGAR
2
+
3
+ ## Source Overview
4
+
5
+ SEC EDGAR (Electronic Data Gathering, Analysis, and Retrieval) filings via two pipelines:
6
+ - **Company facts / XBRL**: structured financial data from `companyfacts.zip` and `submissions.zip` bulk APIs
7
+ - **Form parsing**: regulatory forms (10-K, 10-Q, 20-F, 8-K, Form 3/4, SC 13D/G, 13F-HR, DEF 14A) parsed from HTML, XML, and SGML documents
8
+
9
+ Financial figures from XBRL may be computed fallbacks when a company does not file the authoritative tag. Not all companies report all fields.
10
+
11
+ | Pipeline | `Record.Source` |
12
+ |----------|----------------|
13
+ | Company facts / XBRL / submissions | `edgar` |
14
+ | 10-K annual report | `edgar_10k` |
15
+ | 10-Q quarterly report | `edgar_10q` |
16
+ | 20-F foreign issuer annual report | `edgar_20f` |
17
+ | 8-K current report | `edgar_8k` |
18
+ | Form 3 initial ownership | `edgar_3` |
19
+ | Form 4 ownership changes | `edgar_4` |
20
+ | SC 13D beneficial ownership (active) | `edgar_sc_13d` |
21
+ | SC 13G beneficial ownership (passive) | `edgar_sc_13g` |
22
+ | Co-registrant / subsidiary | `edgar_coregistrant` |
23
+ | 13F-HR institutional holdings | `edgar_13fhr` |
24
+ | DEF 14A proxy statement | `edgar_def_14a` |
25
+
26
+ ---
27
+
28
+ ## Entity Types
29
+
30
+ ### `organization`
31
+
32
+ A public company, institutional investor, or corporate filer registered with the SEC.
33
+
34
+ - Primary key: `company_cik` (10-digit zero-padded CIK)
35
+ - Entity resolver: named entity. Strong ID = `company_cik`. Disambiguation via company name, city, state, SIC description, EIN. Ticker and former names as aliases.
36
+ - Financial metrics from XBRL are dual-homed on both the filing document and the organization, with a `filing_period` attribute (`FY`, `Q1`, `Q2`, `Q3`) to distinguish annual from quarterly values.
37
+
38
+ ### SEC Filing Types (namespace: `sec`)
39
+
40
+ Each SEC form type is a separate flavor, namespaced under `sec`. All share the same strong ID (`accession_number`) and are not mergeable.
41
+
42
+ | Flavor | Display Name | Description |
43
+ |--------|-------------|-------------|
44
+ | `sec::10_k` | 10-K | Annual report |
45
+ | `sec::10_q` | 10-Q | Quarterly report |
46
+ | `sec::20_f` | 20-F | Foreign private issuer annual report |
47
+ | `sec::8_k` | 8-K | Current report (material events) |
48
+ | `sec::form_3` | Form 3 | Initial statement of beneficial ownership |
49
+ | `sec::form_4` | Form 4 | Statement of changes in beneficial ownership |
50
+ | `sec::sc_13d` | SC 13D | Beneficial ownership report (activist) |
51
+ | `sec::sc_13g` | SC 13G | Beneficial ownership report (passive) |
52
+ | `sec::13f_hr` | 13F-HR | Institutional investment manager holdings |
53
+ | `sec::def_14a` | DEF 14A | Definitive proxy statement |
54
+
55
+ Sub-records (8-K events, Form 4 transactions, Form 3 holdings) use their parent filing's flavor.
56
+
57
+ ### `person`
58
+
59
+ A corporate insider (officer, director, or significant owner) from Form 3 or Form 4.
60
+
61
+ - Primary key: `person_cik` when available; otherwise named entity resolution.
62
+ - Entity resolver: named entity, mergeable. Strong ID = `person_cik` when present.
63
+
64
+ ### `financial_instrument`
65
+
66
+ A tradeable security identified by CUSIP, from 13F-HR filings.
67
+
68
+ - Primary key: `cusip_number`
69
+ - Entity resolver: named entity. Strong ID = `cusip_number`.
70
+
71
+ ---
72
+
73
+ ## Properties
74
+
75
+ ### Organization Properties
76
+
77
+ #### Identity and Registration (source: `edgar`)
78
+
79
+ Data source: `https://data.sec.gov/submissions/CIK{cik}.json`
80
+
81
+ * `company_cik`
82
+ * Definition: SEC Central Index Key, 10-digit zero-padded.
83
+ * Examples: `"0000320193"` (Apple), `"0000789019"` (Microsoft)
84
+ * Derivation: `cik` field from submissions API, zero-padded.
85
+
86
+ * `ticker`
87
+ * Definition: Primary stock ticker symbol. Only set for listed companies.
88
+ * Examples: `"AAPL"`, `"MSFT"`, `"BRK-A"`
89
+ * Derivation: first entry from `tickers` array.
90
+
91
+ * `exchange`
92
+ * Definition: Securities exchange listing.
93
+ * Examples: `"Nasdaq"`, `"NYSE"`, `"OTC"`
94
+ * Derivation: first entry from `exchanges` array.
95
+
96
+ * `sic_code`
97
+ * Definition: Four-digit Standard Industrial Classification code.
98
+ * Examples: `"3571"`, `"6022"`
99
+ * Derivation: `sic` field.
100
+
101
+ * `sic_description`
102
+ * Definition: Human-readable SIC code description.
103
+ * Examples: `"Electronic Computers"`, `"State Commercial Banks"`
104
+ * Derivation: `sicDescription` field.
105
+
106
+ * `state_of_incorporation`
107
+ * Definition: Two-letter US state or country code of incorporation.
108
+ * Examples: `"CA"`, `"DE"`, `"NY"`
109
+ * Derivation: `stateOfIncorporation` field.
110
+
111
+ * `fiscal_year_end`
112
+ * Definition: Fiscal year end as MMDD string.
113
+ * Examples: `"0930"`, `"1231"`
114
+ * Derivation: `fiscalYearEnd` field.
115
+
116
+ * `ein`
117
+ * Definition: IRS Employer Identification Number (9 digits). Known bogus EINs filtered.
118
+ * Example: `"942404110"`
119
+ * Derivation: `ein` field, validated against bogus list.
120
+
121
+ * `business_phone`
122
+ * Definition: Primary business phone number.
123
+ * Example: `"4089961010"`
124
+ * Derivation: `addresses.business.phone` field.
125
+
126
+ * `filer_category`
127
+ * Definition: SEC filer size category.
128
+ * Examples: `"Large accelerated filer"`, `"Non-accelerated filer"`
129
+ * Derivation: `category` field.
130
+
131
+ * `physical_address`
132
+ * Definition: Business address as formatted string.
133
+ * Example: `"One Apple Park Way, Cupertino, CA 95014"`
134
+ * Derivation: `addresses.business` fields concatenated.
135
+
136
+ * `mailing_address`
137
+ * Definition: Mailing address as formatted string. May differ from physical address.
138
+ * Derivation: `addresses.mailing` fields concatenated.
139
+
140
+ * `former_name`
141
+ * Definition: Previous legal name. One value per entry in former names list.
142
+ * Example: `"Apple Computer, Inc."`
143
+ * Derivation: `formerNames` array. Also used as aliases for entity resolution.
144
+
145
+ #### Financial Data (source: `edgar_10k`, `edgar_10q`, `edgar_20f`)
146
+
147
+ Data source: iXBRL inline financial statements. All values USD unless noted.
148
+ The six core financial properties appear on both the **organization** and its **document** (filing) entity so that revenue/income/balance-sheet values are queryable on the company directly.
149
+
150
+ * `total_revenue` — Total revenues. Unit: USD. On: organization + document
151
+ * `net_income` — Net income or loss. Unit: USD. On: organization + document
152
+ * `total_assets` — Sum of all balance sheet assets. Unit: USD. On: organization + document
153
+ * `total_liabilities` — Sum of all liabilities. May be computed fallback. Unit: USD. On: organization + document
154
+ * `shareholders_equity` — Total stockholders' equity. Unit: USD. On: organization + document
155
+ * `shares_outstanding` — Common shares outstanding. Unit: shares. On: organization + document
156
+ * `eps_basic` — Basic earnings per share (10-K only). Unit: USD. On: document only
157
+ * `eps_diluted` — Diluted earnings per share (10-K only). Unit: USD. On: document only
158
+ * `entity_shell_company` — Whether the entity is a shell company. Values: `"true"`, `"false"`. On: organization only
159
+ * `reporting_currency` — ISO 4217 currency code (20-F only). Examples: `"JPY"`, `"EUR"`. On: document only
160
+ * `country_of_incorporation` — Country of incorporation (20-F only). Examples: `"Japan"`, `"Israel"`. On: document only
161
+
162
+ #### 8-K Corporate Events (source: `edgar_8k`)
163
+
164
+ Data source: 8-K current report filings. Properties on document sub-records.
165
+
166
+ * `form_8k_event` — Snake_case event identifier. Examples: `"material_agreement"`, `"officer_director_change"`
167
+ * `form_8k_item_code` — Raw SEC item number. Examples: `"1.01"`, `"5.02"`
168
+ * `category` — Sub-classification of Item 8.01 Other Events. Examples: `"cybersecurity_incident"`
169
+
170
+ #### Beneficial Ownership (source: `edgar_sc_13d`, `edgar_sc_13g`)
171
+
172
+ Data source: SC 13D/G XML filings. Properties on the filer organization.
173
+
174
+ * `owns_stake_in` — Relationship: filer → issuer whose shares are held
175
+ * `group_shares_declared` — Total shares owned by the filing group. Unit: shares
176
+ * `group_ownership_percent` — Percentage of share class owned by the group
177
+ * `is_group_filing` — Float: `1.0` = group filing, `0.0` = single filer
178
+ * `shares_declared` — Shares by individual group member. Unit: shares
179
+ * `ownership_percent` — Percentage by individual member or SC 13G filer
180
+ * `investment_purpose` — Stated purpose from Item 4. Examples: `"Investment"`, `"Strategic investment"`
181
+ * `is_passive_investor` — Always `1.0` on SC 13G records
182
+ * `aggregate_amount_beneficially_owned` — Total shares beneficially owned. Unit: shares
183
+ * `sole_voting_power` / `shared_voting_power` — Sole/shared voting authority. Unit: shares
184
+ * `sole_dispositive_power` / `shared_dispositive_power` — Sole/shared dispositive power. Unit: shares
185
+ * `type_of_reporting_person` — SEC entity code. Examples: `"CO"`, `"IN"`, `"IA"`
186
+ * `citizenship_or_state_of_organization` — Jurisdiction. Examples: `"Delaware"`, `"Cayman Islands"`
187
+ * `source_of_funds` — Acquisition fund source. Examples: `"WC"`, `"OO"`, `"BK"`
188
+ * `cusip_number` — CUSIP of the subject securities. Example: `"037833100"`
189
+
190
+ #### Subsidiary Relationships (source: `edgar_coregistrant`, `edgar_10k`)
191
+
192
+ Data source: co-registrant entries and EX-21 exhibit subsidiary tables.
193
+
194
+ * `has_subsidiary` — Relationship: parent → subsidiary
195
+ * `is_part_of` — Relationship: subsidiary → parent
196
+ * `citizenship_or_state_of_organization` — Subsidiary jurisdiction (EX-21 only)
197
+
198
+ ### Document Properties
199
+
200
+ #### Filing Metadata (all pipelines)
201
+
202
+ * `accession_number` — SEC accession number. Example: `"0000320193-24-000123"`
203
+ * `form_type` — Normalized form type. Examples: `"10-K"`, `"SC 13D"`, `"4"`
204
+ * `filing_date` — Submission date (YYYY-MM-DD)
205
+ * `issued_by` — Relationship: filing → company the filing pertains to. For annual/quarterly/current reports, this is the filer. For ownership forms (Form 3/4, SC 13D/G), this is the issuer company whose securities are the subject of the filing.
206
+ * Derivation (ownership forms): XML `<issuerCik>` / `<issuerName>` elements, with fallback to SEC submissions API index metadata for Forms 3/4/5 or the SGML header `<SUBJECT-COMPANY>` section for SC 13D/G. Omitted when no reliable issuer data is available.
207
+ * `refers_to` — Relationship: filing → company the document is about. Same derivation as `issued_by` for ownership forms.
208
+
209
+ #### XBRL Financial Facts (source: `edgar`)
210
+
211
+ Data source: `https://data.sec.gov/api/xbrl/companyfacts/CIK{cik}.json`. ~75 XBRL properties tracked across US-GAAP, DEI, and IFRS taxonomies. Atom timestamp = XBRL period end date, not filing date. Computed fallbacks carry `"Computed from ..."` citation.
212
+
213
+ Key US-GAAP properties: `us_gaap:assets`, `us_gaap:liabilities`, `us_gaap:stockholders_equity`, `us_gaap:revenues`, `us_gaap:net_income_loss`, `us_gaap:operating_income_loss`, `us_gaap:operating_cash_flow`, `us_gaap:investing_cash_flow`, `us_gaap:financing_cash_flow`, `us_gaap:gross_profit`, `us_gaap:long_term_debt`, `us_gaap:common_shares_outstanding`, `us_gaap:goodwill`, `us_gaap:pp_and_e_net`, `us_gaap:operating_expenses`, `us_gaap:sg_and_a`, `us_gaap:research_and_development`, `us_gaap:income_tax_expense`, `us_gaap:eps_basic_xbrl`, `us_gaap:eps_diluted_xbrl`, `us_gaap:weighted_avg_shares_basic`, `us_gaap:weighted_avg_shares_diluted`, `us_gaap:share_repurchases`, `us_gaap:dividends_common`, `us_gaap:debt_repayments`, `us_gaap:acquisition_payments`, `us_gaap:comprehensive_income`, `us_gaap:asset_impairment`, `us_gaap:goodwill_impairment`, `us_gaap:number_of_segments`.
214
+
215
+ DEI properties: `dei:public_float`, `dei:common_shares_outstanding`, `dei:number_of_employees`.
216
+
217
+ IFRS properties (foreign private issuers): `ifrs:assets`, `ifrs:cash_and_cash_equivalents`, `ifrs:equity`, `ifrs:profit_loss`, `ifrs:operating_cash_flow`, `ifrs:current_assets`, `ifrs:current_liabilities`, `ifrs:liabilities`, `ifrs:revenue`.
218
+
219
+ Full mapping in `XBRLConceptMappings`.
220
+
221
+ #### SC 13D on Document (source: `edgar_sc_13d`)
222
+
223
+ * `filer` — Relationship: document → beneficial owner
224
+ * `group_member` — Relationship: document → group members (excluding primary filer)
225
+ * `group_shares_declared`, `group_ownership_percent`, `is_group_filing` — Filing-level ownership facts
226
+
227
+ ### Person Properties
228
+
229
+ #### Insider Identity (source: `edgar_3`, `edgar_4`)
230
+
231
+ Data source: Form 3/4 XML.
232
+
233
+ * `person_cik` — SEC CIK for the reporting person (10-digit zero-padded). From `<rptOwnerCik>`.
234
+ * `job_title` — Officer title. Examples: `"Chief Executive Officer"`, `"Director"`. From `<officerTitle>`.
235
+ * `is_officer` — Relationship: person → organization (when `<isOfficer>1`)
236
+ * `is_director` — Relationship: person → organization (when `<isDirector>1`)
237
+ * `is_ten_percent_owner` — Relationship: person → organization (when `<isTenPercentOwner>1`)
238
+ * `works_at` — Relationship: person → issuer company
239
+ * `filing_reference` — Relationship: person → source Form 3/4 document
240
+
241
+ #### Form 4 Transactions (source: `edgar_4`)
242
+
243
+ Properties on document sub-records, one per transaction.
244
+
245
+ * `transaction_type` — Human-readable code description. Examples: `"Open market or private purchase"`, `"Grant, award, or other acquisition"`
246
+ * `transaction_date` — Transaction date (YYYY-MM-DD)
247
+ * `acquired_disposed_code` — `"A"` (acquired) or `"D"` (disposed)
248
+ * `security_type` — Security class. Examples: `"Common Stock"`, `"Stock Option (Right to Buy)"`
249
+ * `shares_transacted` — Shares transferred. Unit: shares
250
+ * `price_per_share` — Transaction price. Unit: USD
251
+ * `shares_owned_after` — Post-transaction shares. Unit: shares
252
+ * `exercise_price` — Derivative exercise price (USD, derivatives only)
253
+ * `direct_or_indirect_ownership` — `"Direct"` or `"Indirect"`
254
+ * `is_10b5_1_plan` — `"true"` when under a Rule 10b5-1 plan
255
+
256
+ #### DEF 14A Proxy (source: `edgar_def_14a`)
257
+
258
+ * `board_committee` — Committee membership. Examples: `"Audit"`, `"Compensation"`
259
+ * `is_independent` — Independence classification. Values: `"true"`, `"false"`
260
+ * `director_since` — Year. Example: `"2018"`
261
+ * `total_compensation` — Summary Compensation Table total. Unit: USD
262
+ * `board_size` — Number of directors (also on document)
263
+ * `compares_to` — Relationship: document → peer companies
264
+ * `auditor` — Accounting firm name. Example: `"Ernst & Young LLP"`
265
+ * `audit_fees` — Auditor fees. Unit: USD
266
+
267
+ ### Financial Instrument Properties
268
+
269
+ #### 13F-HR Holdings (source: `edgar_13fhr`)
270
+
271
+ Data source: 13F-HR XML information table.
272
+
273
+ * `cusip_number` — CUSIP identifier. Example: `"037833100"`
274
+ * `security_type` — Security class. Examples: `"COM"`, `"SHS"`, `"COM CL A"`
275
+ * `position_value` — Market value (USD)
276
+ * `shares_held` — Shares or principal amount held
277
+ * `instrument_type` — `"SH"` (shares) or `"PRN"` (principal amount)
278
+ * `put_call` — `"PUT"`, `"CALL"`, or empty for equity
279
+ * `voting_authority_sole` / `voting_authority_shared` / `voting_authority_none` — Voting authority breakdown. Unit: shares
280
+ * `investment_discretion` — `"SOLE"`, `"DFND"`, or `"OTR"` (on organization)
281
+ * `holds_position` — Relationship: investment manager → financial instrument
282
+
283
+ ---
284
+
285
+ ## Entity Relationships
286
+
287
+ ```
288
+ organization ──[filed]────────────────────→ document
289
+ organization ──[filing_reference]─────────→ document
290
+ organization ──[owns_stake_in]────────────→ organization (SC 13D/G)
291
+ organization ──[has_subsidiary]───────────→ organization (co-registrant, EX-21)
292
+ organization ──[is_part_of]───────────────→ organization (subsidiary → parent)
293
+ organization ──[holds_position]───────────→ financial_instrument (13F-HR)
294
+ document ──[issued_by]────────────────→ organization
295
+ document ──[refers_to]────────────────→ organization
296
+ document ──[filer]────────────────────→ organization (SC 13D/G)
297
+ document ──[group_member]─────────────→ organization (SC 13D)
298
+ document ──[compares_to]──────────────→ organization (DEF 14A)
299
+ document ──[filed]────────────────────→ document (sub-record → parent)
300
+ person ──[is_officer]───────────────→ organization
301
+ person ──[is_director]──────────────→ organization
302
+ person ──[is_ten_percent_owner]─────→ organization
303
+ person ──[works_at]─────────────────→ organization
304
+ person ──[filing_reference]─────────→ document
305
+ financial_instrument ──[filing_reference]─────────→ document
306
+ ```