Skip to main content

Edge/Relationship Definitions

This section defines all relationship (edge) types organized alphabetically. Each definition includes a description, relational analogy, directionality and cardinality (in UML-style syntax), and any standard properties applied to that relationship type.

Legend: UML Notation for Cardinality and Composition

Symbol Meaning
Composition — the "parent" node must exist for the "child" node to exist (e.g., a Song contains LyricLines).
Aggregation — a looser grouping; the child may exist independently.
──> Directed edge/relationship from left (source) to right (target).
@[n..m] Cardinality at that end (1 = exactly one, 0..1 = zero or one, 0..* = zero or many).
⟵ @[n..m] Cardinality at the opposite (target) end.

All property names follow camelCase (e.g., sectionIndex), and all relationship types are UPPER_CASE (e.g., HAS_LINE).

ABOUT

Description: Connects a Reaction node to an Album, Artist, Concept, Event, LyricLine, Organization, Person, Place, Recording, Song, or SongSection node to indicate topical relevance or subject matter. Used for modeling reactions that discuss or comment on specific works, performances, or entities.

Analogy: Equivalent to a join table linking a “Reactions” table to multiple possible target tables via a foreign key pair and optional metadata.

Relevant Nodes, Directions, and Cardinality:
[  Reaction  ] ──[ :ABOUT ]──> @[0..*] [  Album  |  Artist  |  Concept  |  Event  |  LyricLine  |  Organization  |  Person  |  Place  |  Reaction  |  Recording  |  Song  |  SongSection  ] ⟵ @[0..*]
• Each Reaction can reference zero or many related entities.
• Each referenced entity can be the topic of zero or many Reactions.

Edge Properties:

propertyName type req? uniq? description example(s)
confidence float no no model or analyst
certainty (0–1)
0.92
method string no no brief desription needed "manual aggregation", "model:...", "panel consensus"
model string no no specific model(s) used
on run
"goemotions:base",
"goemotions:base"
runID string no no uid of ModelRun,
if model-derived
"run-20251012-1245"

Example Visualization:

ABOUT edge visualization example. Created with Arrows.app.

ALIGNS_WITH

Description: Connects a Theme node to a Concept node when an analyst has identified conceptual equivalence between an interpretive theme and a more formal concept (e.g., from Wikidata).

Analogy: A join row or table linking a 'Themes' table to a 'Concepts' table for semantic alignment.

Relevant Nodes, Directions, and Cardinality:
[  Theme  ] ──[ :ALIGNS_WITH ]──> @[0..*] [  Concept  ] ⟵ @[0..*]
• A Theme may align with zero or many Concepts.
• A Concept may align with zero or many Themes.

Edge Properties:

propertyName type req? uniq? description example(s)
confidence float no no analyst's confidence
in the alignment (0–1)
0.72

Example Visualization:

ALIGNS_WITH edge visualization example. Created with Arrows.app.

ALLUDES_TO

Description: Connects creative text nodes (LyricLine, Song, or SongSection) or Reaction nodes to other contextual entities (Concept, Event, Person, or Place) when the reference is indirect, metaphorical, or interpretive rather than explicit.

Analogy: Join row or table linking textual expressions to inferred references or symbolic associations.

Relevant Nodes, Directions, and Cardinality:
[  LyricLine  |  Reaction  |  Song  |  SongSection  ] ──[ :ALLUDES_TO ]──> @[0..*] [  Concept  |  Event  |  Person  |  Place  ] ⟵ @[0..*]
• Each expressive node may allude to zero or many external entities.
• Each referenced entity may be alluded to by zero or many sources.

Edge Properties:

propertyName type req? uniq? description example(s)
confidence float no no likelihood of
interpretive link (0–1)
0.77
method string no no origin of identification
(“analyst”, “model”)
"analyst"

Example Visualization:

ALLUDES_TO edge visualization example. Created with Arrows.app.

CREDITED_ON

Description: Connects an Artist identity to a Recording to record formal artist credits on that performance (excluding individual Person performer roles, which use PERFORMED_ON).

Analogy: Join row or table linking 'Artists' to 'Recordings' with role metadata.

Relevant Nodes, Directions, and Cardinality:
[  Artist  ] ──[ :CREDITED_ON ]──> @[0..*] [  Recording  ] ⟵ @[1..*]
• Each Artist may be credited on many Recordings.
• Each Recording must have at least one credited Artist.

Edge Properties:

propertyName type req? uniq? description example(s)
role [string] yes no credited role(s) (e.g.,
"primary artist,"
"featured")
["primary artist"],
["featured","vocals"]
note string no no any relevant notes "note text here"

Example Visualization:

CREDITED_ON edge visualization example. Created with Arrows.app.

DATA_DERIVED_IN

Description: Connects analytic targets (LyricLine, Reaction, Song, SongSection) to a ModelRun node, recording that their NLP or ML-derived data were generated in that run.

Analogy: Join row or table linking source data records to a specific model-run record.

Relevant Nodes, Directions, and Cardinality:
[  LyricLine  |  Reaction  |  Song  |  SongSection  ] ──[ :DATA_DERIVED_IN ]──> @[0..*] [  ModelRun  ] ⟵ @[0..*]
• Each analytic object may have zero or many originating ModelRuns.
• Each ModelRun can produce derived data for many nodes.

Edge Properties:

propertyName type req? uniq? description example(s)
derivedData [string] no no names of properties
derived by this run
["vaderCompound","goTopScore"]

Example Visualization:

DATA_DERIVED_IN edge visualization example. Created with Arrows.app.

EVOKES_THEME

Description: Connects interpretive or expressive nodes (LyricLine, SongSection, Song, or Reaction) to a Theme node when a recurring motif or human-identified theme is perceived in the expression.

Analogy: Join row or table linking textual or media items to analytic thematic categories.

Relevant Nodes, Directions, and Cardinality:
[  LyricLine  |  Reaction  |  Song  |  SongSection  ] ──[ :EVOKES_THEME ]──> @[0..*] [  Theme  ] ⟵ @[0..*]
• Each expressive node may evoke zero or many Themes.
• Each Theme may be evoked by zero or many sources.

Edge Properties:

propertyName type req? uniq? description example(s)
confidence float no no strength of thematic
interpretation
0.91
analyst string no no identifier of human or
model annotator
"student-group-A"

Example Visualization:

EVOKES_THEME edge visualization example. Created with Arrows.app.

EXPRESSES

Description: Connects an expressive node (LyricLine, SongSection, Song, or Reaction) to an Emotion node representing the emotion(s) conveyed or detected.

Analogy: Join row or table between expressive elements and an 'Emotions' lookup table, optionally recording model provenance.

Relevant Nodes, Directions, and Cardinality:
[  LyricLine  |  Reaction  |  Song  |  SongSection  ] ──[ :EXPRESSES ]──> @[0..*] [  Emotion  ] ⟵ @[0..*]
• Each expressive node may express multiple emotions.
• Each Emotion may be expressed by many nodes.

Edge Properties:

propertyName type req? uniq? description example(s)
score float yes no probability or
intensity (0–1)
0.85
model string no no source model name "GoEmotions"
runID string no no identifier of model run "run_20251016_2108"
level string no no granularity (“line”,
“song”, “reaction”)
"line"

Example Visualization:

EXPRESSES edge visualization example. Created with Arrows.app.

HAS_LINE

Description: Connects a Song to its individual LyricLine nodes, preserving their sequence within the song.

Analogy: Join row or table linking 'Songs' to 'LyricLines' with ordering metadata.

Relevant Nodes, Directions, and Cardinality:
[  Song  ] ◆──[ :HAS_LINE   {lineNumber:int} ]──> @[0..*] [  LyricLine  ] ⟵ @[1]
• Each Song can have zero or many LyricLines (instrumental allowed).
• Each LyricLine belongs to exactly one Song.

Edge Properties:

propertyName type req? uniq? description example(s)
lineNumber integer yes no sequential line number
within Song
32

Example Visualization:

HAS_LINE edge visualization example. Created with Arrows.app.

HAS_LINE_IN_SECTION

Description: Connects a SongSection to its LyricLine nodes, preserving order within that section.

Analogy: Join row or table linking 'SongSections' to 'LyricLines' with order metadata.

Relevant Nodes, Directions, and Cardinality:
[  SongSection  ] ◇──[ :HAS_LINE_IN_SECTION   {lineIndex:int} ]──> @[0..*] [  LyricLine  ] ⟵ @[0..1]
• Each SongSection can have zero or many LyricLines.
• Each LyricLine may belong to zero or one SongSection (but note that all LyricLines must belong to a Song).

Edge Properties:

propertyName type req? uniq? description example(s)
lineIndex integer yes no position of line within
the section
6

Example Visualization:

HAS_LINE_IN_SECTION edge visualization example. Created with Arrows.app.

HAS_SECTION

Description: Connects a Song to its constituent SongSection nodes, preserving their order within the song.

Analogy: Join row or table linking 'Songs' to 'SongSections' with section sequence metadata.

Relevant Nodes, Directions, and Cardinality:
[  Song  ] ◆──[ :HAS_SECTION   {sectionIndex:int} ]──> @[0..*] [  SongSection  ] ⟵ @[1]
• Each Song can have zero (not all Songs are divided into sections) or many SongSections.
• Each SongSection belongs to exactly one Song.

Edge Properties:

propertyName type req? uniq? description example(s)
sectionIndex integer yes no order of section within
Song
4

Example Visualization:

HAS_SECTION edge visualization example. Created with Arrows.app.

HAS_THEME

Description: Connects an Album or Song to an analyst-identified Theme, recording an aggregated analytical interpretation at the work level.

Analogy: Join row or table linking 'Albums' or 'Songs' to 'Themes' for high-level thematic categorization.

Relevant Nodes, Directions, and Cardinality:
[  Album  |  Song  ] ──[ :HAS_THEME ]──> @[0..*] [  Theme  ] ⟵ @[0..*]
• Each Album or Song may be associated with multiple Themes.
• Each Theme may characterize many Albums or Songs.

Edge Properties:

propertyName type req? uniq? description example(s)
confidence float no no analyst's confidence
(0–1)
0.95
method string no no process or source of
identification
"manual-coding"

Example Visualization:

HAS_THEME edge visualization example. Created with Arrows.app.

INSPIRED_BY

Description: Connects a Song to external entities (Concept, Event, Person, or Place) that served as inspiration for its creation.

Analogy: Join row or table linking 'Songs' to source entities representing creative influences.

Relevant Nodes, Directions, and Cardinality:
[  Song  ] ──[ :INSPIRED_BY ]──> @[0..*] [  Concept  |  Event  |  Person  |  Place  ] ⟵ @[0..*]
• Each Song may be inspired by zero or many external entities.
• Each entity may inspire zero or many Songs.

Edge Properties:

propertyName type req? uniq? description example(s)
confidence float no no strength of inferred
inspiration
0.82
evidence string no no evidence for claim
(analyst, interview,
etc.)
"artist-interview"
sourceUri string no no uri to source "http://source.com"

Example Visualization:

INSPIRED_BY edge visualization example. Created with Arrows.app.

MEMBER_OF

Description: Connects a Person to an Artist or Organization to record formal membership or affiliation.

Analogy: Join row or table linking 'People' to collective entities, optionally with dates and roles.

Relevant Nodes, Directions, and Cardinality:
[  Person  ] ──[ :MEMBER_OF ]──> @[0..*] [  Artist  |  Organization  ] ⟵ @[0..*]
• A Person may belong to multiple groups or organizations.
• A group or organization may include many members.

Edge Properties:

propertyName type req? uniq? description example(s)
role [string] yes no member's role(s) ["vocals","guitar"]
dateStart date no no membership start date 2012-03-01
dateEnd date no no membership end date 2018-02-11

Example Visualization:

MEMBER_OF edge visualization example. Created with Arrows.app.

MENTIONS

Description: Connects any expressive node (LyricLine, SongSection, Song, or Reaction) to any identifiable entity explicitly referenced in text (Album, Artist, Concept, Event, LyricLine, Organization, Person, Place, Reaction, Recording, or Song).

Analogy: Join row or table linking expressive items to directly named entities (explicit mentions rather than allusions).

Relevant Nodes, Directions, and Cardinality:
[  LyricLine  |  Reaction  |  Song  |  SongSection  ] ──[ :MENTIONS ]──> @[0..*] [  Album  |  Artist  |  Concept  |  Event  |  LyricLine  |  Organization  |  Person  |  Place  |  Reaction  |  Recording  |  Song  |  SongSection  ] ⟵ @[0..*]
• Each expressive node may mention zero or many entities.
• Each mentioned entity may be referenced by many sources.

Edge Properties:

propertyName type req? uniq? description example(s)
confidence float no no model or analyst
certainty (0–1)
0.99
offset integer no no character offset of
mention in text
135

Example Visualization:

MENTIONS edge visualization example. Created with Arrows.app.

OWNED_BY

Description: Connects an Account to the Person, Artist, or Organization that owns or controls it.

Analogy: Join row or table linking 'Accounts' to their owners in a relational schema.

Relevant Nodes, Directions, and Cardinality:
[  Account  ] ──[ :OWNED_BY ]──> @[1] [  Artist  |  Organization  |  Person  ] ⟵ @[0..*]
• Each Account must have one owner entity.
• Each Person, Artist, or Organization may own multiple Accounts.

Edge Properties:

propertyName type req? uniq? description example(s)
verified boolean no no true if ownership
is verified
true

Example Visualization:

OWNED_BY edge visualization example. Created with Arrows.app.

PERFORMANCE_OF

Description: Connects a Recording to the Song it represents or performs.

Analogy: Join row or table linking 'Recordings' to 'Songs'.

Relevant Nodes, Directions, and Cardinality:
[  Recording  ] ──[ :PERFORMANCE_OF ]──> @[1..*] [  Song  ] ⟵ @[0..*]
• Each Recording performs one or more Songs (medleys supported).
• Each Song may be performed by zero or many Recordings.
• Medley order/timing can be captured on the relationship (optional).

Edge Properties:

propertyName type req? uniq? description example(s)
medleyIndex integer no no description here 1
startOffsetSec integer no no where this song's
portion starts in the
recording (seconds)
32
endOffsetSec integer no no where this song's
portion ends in the
recording (seconds)
142
arrangement string no no special arrangement
note
"acoustic"
note string no no any relevant notes "note text here"

Example Visualization:

PERFORMANCE_OF edge visualization example. Created with Arrows.app.

PERFORMED_DURING

Description: Connects a live Recording to the Event during which it was made.

Analogy: Join row or table linking 'Recordings' to 'Events'.

Relevant Nodes, Directions, and Cardinality:
[  Recording  ] ──[ :PERFORMED_DURING ]──> @[0..1] [  Event  ] ⟵ @[0..*]
• Each live Recording may reference one Event.
• Each Event may have multiple associated Recordings.

Edge Properties:

propertyName type req? uniq? description example(s)
date date no no specific performance date 2024-09-21

Example Visualization:

PERFORMED_DURING edge visualization example. Created with Arrows.app.

PERFORMED_ON

Description: Connects a Person to a Recording to record specific performance contributions (distinct from CREDITED_ON used for Artist-level credits).

Analogy: Join row or table linking 'People' to 'Recordings' with performance role metadata.

Relevant Nodes, Directions, and Cardinality:
[  Person  ] ──[ :PERFORMED_ON ]──> @[0..*] [  Recording  ] ⟵ @[0..*]
• A Person may perform on many Recordings.
• Each Recording may include multiple performers.

Edge Properties:

propertyName type req? uniq? description example(s)
role [string] yes no performance role(s) ["vocals","guitar"]

Example Visualization:

PERFORMED_ON edge visualization example. Created with Arrows.app.

PERFORMS_AS

Description: Links a Person to their Artist identity (solo/alias). Distinct from MEMBER_OF (for membership in an Artist group/band/ensemble).

Analogy: Join row or table with timeline of persona usage.

Relevant Nodes, Directions, and Cardinality:
[  Person  ] ──[ :PERFORMS_AS ]──> @[0..*] [  Artist  ] ⟵ @[0..1]
• A Person may perform as zero or many Artists.
• Each Artist may belong to zero or one Person.

Edge Properties:

propertyName type req? uniq? description example(s)
dateStart date no no date when performs_as
started in YYYY-MM-DD
format
2012-03-01
dateEnd date no no date when performs_as
ended in YYYY-MM-DD
format
2018-02-11
note string no no any relevant notes "note text here"

Example Visualization:

PERFORMS_AS edge visualization example. Created with Arrows.app.

POSTED

Description: Connects an Account to the Reaction it posted.

Analogy: Join row or table linking 'Accounts' to 'Reactions'.

Relevant Nodes, Directions, and Cardinality:
[  Account  ] ──[ :POSTED ]──> @[0..*] [  Reaction  ] ⟵ @[1]
• An Account may post zero or many Reactions.
• Each Post belongs to exactly one Account.

Edge Properties:

propertyName type req? uniq? description example(s)
note string no no any relevant notes "note text here"

Example Visualization:

POSTED edge visualization example. Created with Arrows.app.

PUBLISHED_ON

Description: Connects a Reaction to the Platform on which it was published.

Analogy: Join row or table linking 'Reactions' to 'Platforms'.

Relevant Nodes, Directions, and Cardinality:
[  Reaction  ] ──[ :PUBLISHED_ON ]──> @[1] [  Platform  ] ⟵ @[0..*]
• Each Reaction is published on one Platform.
• Each Platform may publish zero or many Reactions.

Edge Properties:

propertyName type req? uniq? description example(s)
note string no no any relevant notes "note text here"

Example Visualization:

PUBLISHED_ON edge visualization example. Created with Arrows.app.

QUOTES

Description: Connects a LyricLine, Reaction, SongSection, or Song to a Concept (e.g., book/film/etc.), LyricLine, Reaction, or Song that it exactly quotes or paraphrases.

Analogy: Join row or table linking 'LyricLines,' 'Reactions,' 'SongSections,' or 'Songs' to 'Concepts,' 'LyricLines,' 'Reaction,' or 'Songs' with exactness flag.

Relevant Nodes, Directions, and Cardinality:
[  LyricLine  |  Reaction  |  Song  |  SongSection  ] ──[ :QUOTES ]──> @[0..*] [  Concept  |  LyricLine  |  Reaction  |  Song  ] ⟵ @[0..*]
• Each quoting node may quote or paraphrase zero or many entities.
• Each quoted entity may be quoted or paraphrased by many sources.

Edge Properties:

propertyName type req? uniq? description example(s)
confidence float no no model or analyst
certainty (0–1)
0.99
exact boolean no no is this an exact quote (true)
or paraphrase (false)
true
note string no no any special notes "note text goes here"

Example Visualization:

QUOTES edge visualization example. Created with Arrows.app.

RECORDED_AT

Description: Connects a Recording to the Place where ir occurred (supports multi-session, multi-place).

Analogy: Join row or table linking 'Recordings' to 'Places.'

Relevant Nodes, Directions, and Cardinality:
[  Recording  ] ──[ :RECORDED_AT ]──> @[0..*] [  Place  ] ⟵ @[0..*]
• A Recording may be recorded at zero or many Places.
• Each Place may be linked to zero or many Recordings.

Edge Properties:

propertyName type req? uniq? description example(s)
date date no no session date in
YYYY-MM-DD format
2018-03-01
note string no no any relevant notes "note text here"

Example Visualization:

RECORDED_AT edge visualization example. Created with Arrows.app.

RELATED_TO

Description: Looser thematic association between a Theme and a Concept (weaker than ALIGNS_WITH).

Analogy: Join row or table linking 'Themes' to 'Concepts.'

Relevant Nodes, Directions, and Cardinality:
[  Theme  ] ──[ :RELATED_TO ]──> @[0..*] [  Concept  ] ⟵ @[0..*]
• A Theme may be related to zero or many Concepts.
• Each Concept may be related to zero or many Themes.

Edge Properties:

propertyName type req? uniq? description example(s)
strength float no no model or analyst
certainty (0–1)
0.99
method string no no brief desription needed "manual aggregation", "model:...", "panel consensus"
model string no no specific model(s) used
on run
"goemotions:base",
"goemotions:base"
runID string no no uid of ModelRun,
if model-derived
"run-20251012-1245"

Example Visualization:

RELATED_TO edge visualization example. Created with Arrows.app.

RELEASED_ALBUM

Description: Connects an Artist to an Album (LP/EP/Single) that they released.

Analogy: Join row or table linking 'Artists' to 'Albums.'

Relevant Nodes, Directions, and Cardinality:
[  Artist  ] ──[ :RELEASED_ALBUM ]──> @[0..*] [  Album  ] ⟵ @[0..*]
• An Artist may release zero or many Albums.
• Each Album may be released by zero or many Artists.

Edge Properties:

propertyName type req? uniq? description example(s)
date date no no release date in
YYYY-MM-DD format
2018-03-01
note string no no any relevant notes "note text here"

Example Visualization:

RELEASED_ALBUM edge visualization example. Created with Arrows.app.

RELEASED_ON

Description: Connects a 'Recording' to an 'Album' (LP/EP/Single) on which it appears.

Analogy: Join row or table linking 'Recordings' to 'Albums,' with track metadata.

Relevant Nodes, Directions, and Cardinality:
[  Recording  ] ──[ :RELEASED_ON ]──> @[0..*] [  Album  ] ⟵ @[0..*]
• A Recording may appear on zero or many Albums.
• Each Album may feature zero or many Recordings.

Edge Properties:

propertyName type req? uniq? description example(s)
trackNumber integer no no track number on
album
3
discNumber integer no no disc number on
multi-disc album
1
note string no no any relevant notes "note text here"

Example Visualization:

RELEASED_ON edge visualization example. Created with Arrows.app.

SIMILAR_TO

Description: Links semantically similar LyricLines to each other, using cosine similarity between calculated and stored sentence-transformers embeddings. Treat as undirected by convention; store one orientation only.

Analogy: Join row or table linking 'LyricLines' with a similarity score.

Relevant Nodes, Directions, and Cardinality:
[  LyricLine  ] ──[ :SIMILAR_TO ]──> @[0..*] [  LyricLine  ] ⟵ @[0..*]
• A LyricLine may be similar to zero or many other LyricLines.

Edge Properties:

propertyName type req? uniq? description example(s)
cosine float no no similarity cosine as float
between 0 to 1
0.789
method string no no specific method or model
used in calculation
"all-MiniLM-L6-v2"
runID string no no uid of ModelRun,
if model-derived
"run-20251012-1245"

Example Visualization:

SIMILAR_TO edge visualization example. Created with Arrows.app.

WROTE_SONG

Description: Connects a Person to a Song to record songwriting credits. Supports anonymous and 'traditional' credits.

Analogy: Join row or table linking 'Person' to 'Song,' with specific role(s).

Relevant Nodes, Directions, and Cardinality:
[  Person  ] ──[ :WROTE_SONG ]──> @[0..*] [  Song  ] ⟵ @[0..*]
• Each Person may have writing credits on zero or many Songs.
• Each Song may may have writing credits for zero or many Persons.

Edge Properties:

propertyName type req? uniq? description example(s)
role [string] yes no specific writing role
as string array
["lyrics","music"]
note string no no any relevant notes "note text here"

Example Visualization:

WROTE_SONG edge visualization example. Created with Arrows.app.
Updated on Oct 24, 2025