Reference
The GigCharts vocabulary
What a gc: term means. This page is the namespace document for the IRIs a .gigchart file expands to.
On this page
The namespace
| Namespace IRI | https://www.gigcharts.app/ns/gigchart# |
| Preferred prefix | gc |
| This document | https://www.gigcharts.app/ns/gigchart |
| Machine-readable | /ns/gigchart.ttl (Turtle) |
| JSON-LD context | https://www.gigcharts.app/context/gigchart.jsonld |
| Format specification | /format |
A .gigchart file carries a pointer to the published
JSON-LD context, which declares this namespace as its
@vocab. So a chart is linked data as it sits on disk — no conversion step:
{
"@context": "https://www.gigcharts.app/context/gigchart.jsonld",
"@type": "gc:Chart",
"id": "urn:uuid:5b1e6e1a-2f3c-4a7b-9d21-6c9a1e3f7d02",
"format": "gigchart",
"version": 12,
"song": {
"@type": "schema:MusicComposition",
"properties": { "title": "House of the Rising Sun", "artist": "Traditional" },
"annotations": [
{ "kind": "cue", "text": "slower", "target": { "kind": "line", "stanza": 0, "line": 1 } }
]
}
} Expanded, that is:
<urn:uuid:5b1e6e1a-…>
a gc:Chart ;
gc:format "gigchart" ;
gc:formatVersion 10 ;
gc:song [ a schema:MusicComposition ;
schema:name "House of the Rising Sun" ;
schema:byArtist "Traditional" ;
gc:annotations [ a gc:cue ;
gc:text "slower" ;
gc:target [ a gc:line ; gc:stanza 0 ; gc:line 1 ] ] ] . An open namespace
Because the context sets @vocab, every key in a
.gigchart mints an IRI in this namespace — the ~200 typesetting settings and
annotation fields included, not only the terms defined below. Nothing in the file is dropped
on expansion.
This document defines the structural core: the chart, the composition link, the classes behind
every kind, and the identifier properties. The key-by-key meaning of everything
else is the job of the format specification, which is written and kept
current against the code. Two copies of that would mean one of them is quietly wrong, so there
is one: if a term you are looking at is not listed here, look it up on /format.
Classes
| Term | Subclass of | What it is |
|---|---|---|
gc:Chart | schema:CreativeWork | A GigCharts chart document: one performable arrangement of one song, together with the typesetting and performance annotations that make it a gig sheet. This is the type of the .gigchart envelope — the node that carries the file's own identifier. A Chart is about a musical composition but is not itself the composition: the composition hangs off it as gc:song. |
Annotation kinds
The context aliases an annotation's kind key to @type, so every
annotation node expands with the class named by its own kind token — a cue
annotation is a gc:cue. The local names are lowercase because they are the file's
tokens verbatim; a vocabulary that renamed them would be defining terms no document uses.
| Term | What it is |
|---|---|
gc:section | A labeled spine beside a stanza or a run of stanzas — Verse, Chorus, Bridge. |
gc:cue | A small labeled chip carrying a performance note. The most-used annotation kind. |
gc:repeat | A repeat bar with a times-N count beside a stanza. |
gc:markers | Bar or beat markers along a stanza. |
gc:roadmap | A stacked arrangement map — one bar per section, in performance order. |
gc:recall | A recall mark: a pointer back to a stanza already printed, so a repeated chorus need not be set again. Its refStanza / refSid names the stanza it points at. Spelled chorus inside the app; recall is the file spelling and the normative one. |
gc:capo | The capo indicator in the header chrome. |
gc:voice | A voice assignment — which singer or part takes a stanza, a line, or a word range. Carries the color the voice is drawn in. |
gc:pagebreak | A forced page break before the targeted stanza. |
gc:info | A placed copy of the song info box. |
gc:chordbox | A placed box of chords, typed rather than derived from the body. |
gc:linkedchordbox | A chord box that is a live reference to another stanza's chords rather than typed text; it follows that stanza when the chords change. |
gc:qr | A placed QR code carrying its own link, unrelated to the song's video property. It may print as the square or as a text link instead; its linkMode says which. |
gc:textbox | A free text box placed on the page. |
What each kind can target, and which fields it carries, is on /format.
Target kinds
The same kind alias applies inside an annotation's target, so a
target is a typed node too. No target token is also an annotation token, so the two sets never
collide.
| Term | What it targets |
|---|---|
gc:stanza | Targets a whole stanza, by 0-based index and/or by its sticky stanza id. |
gc:span | Targets an inclusive run of stanzas — one spine or bar covering several. |
gc:line | Targets one rendered row inside a stanza. |
gc:range | Targets a word range: a column range on one lyric row. |
gc:gap | Targets the space after a given stanza. The reading application converts this to a spacer on load. |
gc:spacer | Targets an explicit spacer block, by its id. |
Properties
| Term | Domain → range | What it means |
|---|---|---|
gc:format | gc:Chart → xsd:string | The format discriminator. Always the literal string gigchart. |
gc:formatVersion written as version | gc:Chart → xsd:integer | The .gigchart format version the file is written in — not the song's own revision, which is schema:version. Serialized as the key `version`. |
gc:generator | gc:Chart → xsd:string | Which software build wrote the file, e.g. gigcharts.app v0.9.0 (a1b2c3d). The tiebreaker when two files share a format version but came from different builds. |
gc:song | gc:Chart → schema:MusicComposition | Links a chart document to the musical composition it sets. The composition node carries the song's identity metadata and the chart's own content — body, annotations, settings. |
gc:properties | schema:MusicComposition | Groups the song's identity metadata — title, credits, key, tempo, rights. A structural grouping in the JSON serialization, not a semantic relation; the terms inside it are the schema.org ones. |
gc:localId written as id | — → xsd:string | A handle that is unique inside one chart and meaningless outside it — an annotation id, a spacer id, a voice id. Deliberately NOT the node's @id: these are relative names, not IRIs, and reading them as identifiers would drop every node carrying one from the RDF. Only the chart document's own id, a urn:uuid, is a real identifier. Serialized as the key `id`. |
gc:body | schema:MusicComposition → rdf:List | The chart itself: the ordered lines of chords and lyrics, one entry per line, an empty string separating stanzas. An RDF list, because line order is the chart — an unordered set of lines is not a song. |
gc:structure | schema:MusicComposition → rdf:List | The stanza-id ledger: one sticky id per stanza of the body, in body order. These are what an annotation's stanza anchors point at, so a target survives edits to the body above it. An RDF list — the ledger is positional. |
gc:spacers | schema:MusicComposition → rdf:List | Explicit blocks of vertical space between stanzas, each able to host a gap-scoped annotation. An RDF list: where two spacers share a boundary, stack order is array order. |
gc:duration | schema:MusicComposition → xsd:string | The song's playing time as a display string, conventionally mm:ss (for example 3:45). Deliberately NOT schema:duration: that property's range is an ISO-8601 duration (PT3M45S), and asserting a display string into it would be a range violation. A future format version may add an ISO-8601 spelling alongside this one. |
gc:mbWork written as mbTitleUri | schema:MusicComposition → rdfs:Resource | A resolvable MusicBrainz URI for the work this chart sets. Captured from metadata autocomplete and carried with the file so the song's identity survives outside GigCharts. |
gc:mbArtist written as mbArtistUri | schema:MusicComposition → rdfs:Resource | A resolvable MusicBrainz URI for the performing artist. |
gc:mbRelease written as mbAlbumUri | schema:MusicComposition → rdfs:Resource | A resolvable MusicBrainz URI for the release the song appears on. |
gc:mbComposer written as mbMusicUri | schema:MusicComposition → rdfs:Resource | A resolvable MusicBrainz URI for the composer. |
gc:mbLyricist written as mbLyricsUri | schema:MusicComposition → rdfs:Resource | A resolvable MusicBrainz URI for the lyricist. |
gc:mbArranger written as mbArrangerUri | schema:MusicComposition → rdfs:Resource | A resolvable MusicBrainz URI for the arranger. Added in v12: on traditional and folk material the arrangement is frequently the only authored layer there is to credit, so the arranger is as worth identifying as the composer. |
gc:mbInstrument written as mbInstrumentUri | schema:MusicComposition → rdfs:Resource | A resolvable MusicBrainz URI for the instrument the chart is written for. Added in v12 alongside the Instrument field's controlled vocabulary: MusicBrainz holds instruments as entities with their own identifiers, so "guitar", "Guitar" and "gtr" stop being three different instruments. |
gc:mbGenre written as mbGenreUri | schema:MusicComposition → rdfs:Resource | A resolvable MusicBrainz URI for the chart's genre. Added in v12 with the bundled genre vocabulary: MusicBrainz curates 2181 terms with identifiers but publishes no way to search them, so GigCharts ships the list and stores the id. |
gc:regionRef written as regionUri | schema:MusicComposition → rdfs:Resource | A resolvable identifier for the region the song comes from — in practice a Wikidata item, e.g. Q832218 for Kalotaszeg. Deliberately not named for one authority: a place may as reasonably be identified by GeoNames or the Getty TGN, and the URI states which one. Added in v12. |
gc:occasionRef written as holidayUri | schema:MusicComposition → rdfs:Resource | A resolvable identifier for the occasion or feast day the song belongs to — in practice a Wikidata item. Added in v12; same reasoning as regionRef. |
gc:languageRef written as languageUri | schema:MusicComposition → rdfs:Resource | A resolvable identifier for the language of the lyrics — a Wikidata item, e.g. Q9067 for Hungarian. Added in v12. The alternatives considered were Lexvo (lexvo.org/id/iso639-3/hun), which is purpose-built for languages, and the bare ISO 639-3 code, which is the real identifier but has no official URI form; Wikidata won because it is the authority the region and occasion fields already use. |
gc:videoFetched written as videoFetched | schema:MusicComposition → xsd:date | The date the cached facts about the video link (title, channel) were fetched — the "accessed on" of a citation. Added in v12. It qualifies gc:videoTitle and gc:videoAuthor, which are a cache of somebody else's page rather than assertions of our own. |
The schema.org alignment
A song's identity metadata is not GigCharts' to invent — it is a
schema:MusicComposition, and the context maps it onto schema.org terms so a
consumer that has never heard of GigCharts still reads the parts that matter:
properties key | schema.org term |
|---|---|
title | schema:name |
subtitle | schema:alternativeHeadline |
artist | schema:byArtist |
music | schema:composer |
lyrics | schema:lyricist |
album | schema:inAlbum |
track | schema:position |
year | schema:copyrightYear |
copyright | schema:copyrightNotice |
license | schema:license |
language | schema:inLanguage |
genre | schema:genre |
originalKey | schema:musicalKey |
video | schema:video |
revision | schema:version |
savedAt | schema:dateModified |
Everything else — duration, the MusicBrainz identifiers, and the whole chart body
below properties — is gc:, because schema.org has no term for it and
borrowing a near-miss would be worse than minting an honest one.
Known simplifications
Two places where the mapping is looser than it looks. Both are stated rather than hidden, because a consumer that trusts the alignment deserves to know where it bends.
- Names where nodes belong.
artist,music,lyrics,album— the credit fields — carry a plain name string, whileschema:byArtist,schema:composer,schema:lyricistandschema:inAlbumexpect a node (aPerson,MusicGrouporMusicAlbum). The chart holds what its author typed: a name, not an entity. Where the author picked the credit from metadata autocomplete, the resolvable identity travels beside it asgc:mbArtistand friends, and that is the node-shaped one. -
durationis notschema:duration. The file holds a display string (3:45);schema:duration's range is an ISO-8601 duration (PT3M45S). Rather than assert a value that fails its own range, the term isgc:duration.
Stability
The vocabulary is published under
CC BY 4.0. The
.gigchart format is open and unencumbered: read it, write it, build on it.