shenikan/tools/server/graph/schema.graphqls

143 lines
3.4 KiB
GraphQL

type Query {
dictionary: Dictionary!
}
"A whole shenikan dictionary."
type Dictionary {
glyphs: [Glyph!]!
dialects: [Dialect!]!
dms: [DerivationalMorphology!]!
dmPentas: [DMPenta!]!
words: [Word!]!
pentas: [Penta!]!
icosas: [Icosa!]!
}
"A glyph in a shenikan dictionary."
type Glyph {
kind: GlyphKind!
ortho: String!
attrs: [GlyphAttribute!]!
}
"The kind of a glyph."
enum GlyphKind {
"A bare vowel cluster." VOWEL
"A consonant cluster." CLUSTER
"A punctuation mark." PUNCTUATION
"A numeric or symbolic glyph." NUMERIC
"A complete syllable cluster." SYLLABLE
}
# TODO: group these into, e.g. consonant height, to enforce mutex appropriately?
"The determining attributes of a glyph."
enum GlyphAttribute {
# Vowel Attributes
"Marks an outer vowel. (valid for VOWEL/SYLLABLE glyphs)" OUTER
"Marks a slashed vowel. (valid for VOWEL/SYLLABLE glyphs)" SLASHED
"Marks an inner vowel. (valid for VOWEL/SYLLABLE glyphs)" INNER
# Consonant Cluster Attributes (and Punctuation Attributes???)
"Marks a left consonant cluster or punctuation. (valid for CLUSTER/VOWEL/PUNCTUATION glyphs)" LEFT
"Marks a center consonant cluster. (valid for CLUSTER/VOWEL glyphs)" CENTER
"Marks a right consonant cluster or punctuation. (valid for CLUSTER/VOWEL/PUNCTUATION glyphs)" RIGHT
"Marks a top consonant cluster. (valid for CLUSTER/VOWEL glyphs)" TOP
"Marks a middle consonant cluster. (valid for CLUSTER/VOWEL glyphs)" MIDDLE
"Marks a bottom consonant cluster. (valid for CLUSTER/VOWEL glyphs)" BOTTOM
"Marks a tall consonant cluster. (valid for CLUSTER/VOWEL glyphs)" TALL
"Marks a wide consonant cluster. (valid for CLUSTER/VOWEL glyphs)" WIDE
"Marks a tall and wide consonant cluster. (valid for CLUSTER/VOWEL glyphs)" BOTH
# Numeric Attributes
"Marks a circular number. (valid for NUMERIC glyphs)" CIRCLE
"Marks a dash number. (valid for NUMERIC glyphs)" DASH
"Marks a vee number. (valid for NUMERIC glyphs)" VEE
"Marks a hump number. (valid for NUMERIC glyphs)" HUMP
"Marks a dot number. (valid for NUMERIC glyphs)" DOT
}
"A shenikan dialect"
type Dialect {
name: String!
replacements: [Replacement!]!
}
"A consonant cluster replacement for a dialect"
type Replacement {
old: String!
new: String!
}
"A shenikan derivational morphology"
type DerivationalMorphology {
spelling: String!
definitions: [Definition!]!
}
"A shenikan-english definition"
type Definition {
pos: PartOfSpeech!
short: String!
long: String
}
"A part of speech"
enum PartOfSpeech {
NOUN
PRONOUN
VERB
ADJECTIVE
ADVERB
ADPOSITION
CONJUNCTION
SYNTAX
}
"A pentascale of derivational morphologies"
type DMPenta {
spelling: String!
name: String
extremes: Extremes
}
"The extremes of a pentascale"
type Extremes {
i: String
u: String
}
"A shenikan word"
type Word {
spelling: String!
definitions: [Definition!]!
derivations: [Derivation!]!
}
"A shenikan derivation"
type Derivation {
root: String!
via: [String!]!
}
"A pentascale of words"
type Penta {
spelling: String!
name: String
extremes: Extremes
}
"An icosapentascale of words"
type Icosa {
spelling: String!
name: String
extremes: DoubleExtremes
}
"The extremes of an icosapentascale"
type DoubleExtremes {
ix: String
ux: String
xi: String
xu: String
}