UNPKG

tpmkms

Version:

Reusable libraries for Entodicton, a natural language to json converter

2,620 lines (2,619 loc) 740 kB
{ "configs": [ "years hours minutes milliseconds and seconds are units of time", "hours = minutes / 60", "minutes = hours * 60", "seconds = minutes * 60", "hours = seconds / 3600", "seconds = hours * 3600", "milliseconds = minutes * 60 * 1000", "minutes = milliseconds / 1000 / 60", "milliseconds = seconds * 1000", "seconds = milliseconds / 1000", "minutes = seconds / 60", "day = hours / 24", "hours = days * 24", { "operators": [ "([thenTime|then])", "([repeatable])", "(([timePoint]) [ampm|])", "(([integer]) [timeRepeats|] ([timePoint]))", "([atTime|at] (timePoint))", "([use] (([quantity]) [timeFormat|format]))", "([hourMinutes|] (integer) (colon) (integer))" ], "bridges": [ { "id": "repeatable", "check": [ "marker", "text", "verbatim", "value", "evalue", "isResponse", { "properties": "modifiers" }, { "properties": "postModifiers" }, "repeats" ] }, { "id": "thenTime", "after": [ "verb" ] }, { "id": "timeRepeats", "level": 0, "before": [ "verb" ], "convolution": true, "bridge": "{ ...next(operator), repeats: before[0], time: after[0], interpolate: [{ property: 'repeats' }, { property: 'time' }] }", "check": [ "marker", "text", "verbatim", "value", "evalue", "isResponse", { "properties": "modifiers" }, { "properties": "postModifiers" }, "time", "repeats" ] }, { "id": "timeRepeats", "level": 1, "before": [ "verb" ], "bridge": "{ ...repeatable, repeats: operator, checks: append(repeatable.checks, ['repeats']), repeatable: repeatable, interpolate: [{ property: 'repeatable' }, { property: 'repeats', byPosition: true }] }", "selector": { "loose": "repeatable", "arguments": { "repeatable": "(@<= 'repeatable')" } }, "check": [ "marker", "text", "verbatim", "value", "evalue", "isResponse", { "properties": "modifiers" }, { "properties": "postModifiers" }, "time", "repeats" ] }, { "id": "hourMinutes", "isA": [ "timePoint" ], "convolution": true, "bridge": "{ ...next(operator), hour: after[0], colon: after[1], minute: after[2], interpolate: '${hour}${colon}${minute}' }" }, { "id": "timePoint", "words": [ { "word": "time", "number": "one" }, { "word": "times", "number": "many" } ], "isA": [ "noun" ] }, { "id": "atTime", "words": [ "@" ], "isA": [ "preposition" ], "bridge": "{ ...next(operator), time: after[0], operator: operator, interpolate: '${operator} ${time}' }" }, { "id": "ampm", "isA": [ "adjective" ], "localHierarchy": [ [ "integer", "timePoint" ] ], "bridge": "{ ...next(before[0]), marker: if(isA(before[0].marker, 'integer'), operator('timePoint'), before[0].marker), ampm: operator, time: before[0], interpolate: concat(default(before[0].interpolate, '${time}'), ' ${ampm}') }" }, { "id": "timeFormat", "bridge": "{ ...before[0], ...next(operator), interpolate: [ { context: before[0] }, { context: operator } ] }" }, { "id": "use", "bridge": "{ ...next(operator), format: after[0], interpolate: [{ context: operator }, { property: 'format' }] }" } ], "words": { "literals": { "am": [ { "id": "ampm", "initial": "{ ampm: 'am', determined: true }" } ], "pm": [ { "id": "ampm", "initial": "{ ampm: 'pm', determined: true }" } ] } }, "generators": [ { "match": "({context}) => context.marker == 'timePoint' && context.evalue && context.format == 12", "apply": "({context}) => {\n let hh = context.evalue.getHours();\n let ampm = 'am'\n if (hh > 12) {\n hh -= 12;\n ampm = 'pm'\n }\n let ss = context.evalue.getMinutes()\n ss = pad(ss, 2)\n return `${hh}:${ss} ${ampm}` \n }" }, { "match": "({context}) => context.marker == 'timePoint' && context.evalue && context.format == 24", "apply": "({g, context}) => {\n function pad(num, size) {\n num = num.toString();\n while (num.length < size) num = \"0\" + num;\n return num;\n }\n\n return `${context.evalue.getHours()}:${pad(context.evalue.getMinutes(), 2)}` \n }" }, { "match": "({context}) => context.marker == 'response'", "apply": "({g, context}) => context.text" } ], "semantics": [ { "match": "(args) => args.callOnce(args, ({context}) => context.repeats) && args.context.repeats?.repeats", "apply": "async ({context, e, s, handlerStack}) => {\n const v = (await e(context.repeats.repeats)).evalue\n for (let i = 0; i < v; ++i) {\n if (context.action) {\n await s(context.action)\n } else {\n await s({ ...context, repeats: undefined })\n }\n }\n }" }, { "match": "({objects, context, api}) => context.marker == 'timePoint' && context.evaluate", "apply": "({objects, context, api}) => {\n context.evalue = api.newDate()\n context.format = objects.format\n }" }, { "match": "({objects, context}) => context.marker == 'use' && context.format && (context.format.amount.value == 12 || context.format.amount.value == 24)", "apply": "({objects, context}) => {\n objects.format = context.format.amount.value\n }" }, { "match": "({objects, context}) => context.marker == 'use' && context.format && (context.format.amount.value != 12 && context.format.amount.value != 24)", "apply": "({objects, context}) => {\n context.marker = 'response'\n context.text = 'The hour format is 12 hour or 24 hour'\n }" } ] } ], "resultss": [ { "hierarchy": [ [ "a", "article", false ], [ "adjective", "adjective", false ], [ "all", "quantifier", false ], [ "amount", "concept", false ], [ "amount", "hierarchyAble", false ], [ "amount", "isEdee", false ], [ "amount", "isEder", false ], [ "amount", "object", false ], [ "amount", "property", false ], [ "amount", "queryable", false ], [ "amount", "theAble", false ], [ "amount", "thisAble", false ], [ "article", "article", false ], [ "ascending", "hierarchyAble", false ], [ "ascending", "isEdee", false ], [ "ascending", "isEder", false ], [ "ascending", "object", false ], [ "ascending", "property", false ], [ "ascending", "queryable", false ], [ "ascending", "sort_ordering", false ], [ "ascending", "theAble", false ], [ "ascending", "thisAble", false ], [ "between", "preposition", false ], [ "calculate", "verb", false ], [ "canBeDoQuestion", "canBeDoQuestion", false ], [ "canBeQuestion", "canBeQuestion", false ], [ "comparable", "theAble", false ], [ "concept", "queryable", false ], [ "concept", "theAble", false ], [ "condition", "concept", false ], [ "condition", "hierarchyAble", false ], [ "condition", "isEdee", false ], [ "condition", "isEder", false ], [ "condition", "object", false ], [ "condition", "property", false ], [ "condition", "queryable", false ], [ "condition", "theAble", false ], [ "condition", "thisAble", false ], [ "convertToUnits", "expression", false ], [ "convertToUnits", "queryable", false ], [ "convertToUnits", "testingValue", false ], [ "countable", "hierarchyAble", false ], [ "deletable", "deletable", false ], [ "delete", "verb", false ], [ "descending", "hierarchyAble", false ], [ "descending", "isEdee", false ], [ "descending", "isEder", false ], [ "descending", "object", false ], [ "descending", "property", false ], [ "descending", "queryable", false ], [ "descending", "sort_ordering", false ], [ "descending", "theAble", false ], [ "descending", "thisAble", false ], [ "dimension", "concept", false ], [ "dimension", "hierarchyAble", false ], [ "dimension", "isEdee", false ], [ "dimension", "isEder", false ], [ "dimension", "object", false ], [ "dimension", "property", false ], [ "dimension", "queryable", false ], [ "dimension", "theAble", false ], [ "dimension", "thisAble", false ], [ "distributable", "queryable", false ], [ "divideByExpression", "mathematicalExpression", false ], [ "divideByOperator", "mathematical_operator", false ], [ "doubleQuote", "queryable", false ], [ "each", "article", false ], [ "event", "event", false ], [ "every", "article", false ], [ "expression", "expression", false ], [ "forQuantity", "preposition", false ], [ "forVariable", "preposition", false ], [ "formula", "concept", false ], [ "formula", "hierarchyAble", false ], [ "formula", "isEdee", false ], [ "formula", "isEder", false ], [ "formula", "object", false ], [ "formula", "property", false ], [ "formula", "queryable", false ], [ "formula", "theAble", false ], [ "formula", "thisAble", false ], [ "formulaForVariable", "preposition", false ], [ "formulaForVariable", "queryable", false ], [ "hasCountOfPieces", "countable", false ], [ "have", "canBeDoQuestion", false ], [ "have", "canBeQuestion", false ], [ "hierarchyAble", "queryable", false ], [ "highest", "hierarchyAble", false ], [ "highest", "isEdee", false ], [ "highest", "isEder", false ], [ "highest", "object", false ], [ "highest", "property", false ], [ "highest", "queryable", false ], [ "highest", "superlative", false ], [ "highest", "theAble", false ], [ "highest", "thisAble", false ], [ "ifAble", "ifAble", false ], [ "imperial", "hierarchyAble", false ], [ "imperial", "isEdee", false ], [ "imperial", "isEder", false ], [ "imperial", "object", false ], [ "imperial", "property", false ], [ "imperial", "queryable", false ], [ "imperial", "system_modifier", false ], [ "imperial", "theAble", false ], [ "imperial", "unit_modifier", false ], [ "imperial_system", "adjective", true ], [ "imperial_system", "concept", false ], [ "imperial_system", "hierarchyAble", false ], [ "imperial_system", "isEdee", false ], [ "imperial_system", "isEder", false ], [ "imperial_system", "measurement_system", false ], [ "imperial_system", "object", false ], [ "imperial_system", "property", false ], [ "imperial_system", "queryable", false ], [ "imperial_system", "system", false ], [ "imperial_system", "theAble", false ], [ "imperial_unit", "adjective", true ], [ "imperial_unit", "concept", false ], [ "imperial_unit", "hierarchyAble", false ], [ "imperial_unit", "isEdee", false ], [ "imperial_unit", "isEder", false ], [ "imperial_unit", "object", false ], [ "imperial_unit", "property", false ], [ "imperial_unit", "queryable", false ], [ "imperial_unit", "theAble", false ], [ "imperial_unit", "unit", false ], [ "integer", "number", false ], [ "is", "canBeQuestion", false ], [ "is", "event", false ], [ "is", "verb", false ], [ "isEdee", "isEdee", false ], [ "isEder", "isEder", false ], [ "isQuery", "verb", false ], [ "it", "pronoun", false ], [ "it", "queryable", false ], [ "it", "thisitthat", false ], [ "it", "toAble", false ], [ "length", "dimension", false ], [ "listable", "theAble", false ], [ "lowest", "hierarchyAble", false ], [ "lowest", "isEdee", false ], [ "lowest", "isEder", false ], [ "lowest", "object", false ], [ "lowest", "property", false ], [ "lowest", "queryable", false ], [ "lowest", "superlative", false ], [ "lowest", "theAble", false ], [ "lowest", "thisAble", false ], [ "mathematical", "hierarchyAble", false ], [ "mathematical", "isEdee", false ], [ "mathematical", "isEder", false ], [ "mathematical", "object", false ], [ "mathematical", "operator_modifier", false ], [ "mathematical", "property", false ], [ "mathematical", "queryable", false ], [ "mathematical", "theAble", false ], [ "mathematicalExpression", "concept", false ], [ "mathematicalExpression", "expression", false ], [ "mathematical_operator", "adjective", true ], [ "mathematical_operator", "concept", false ], [ "mathematical_operator", "hierarchyAble", false ], [ "mathematical_operator", "isEdee", false ], [ "mathematical_operator", "isEder", false ], [ "mathematical_operator", "object", false ], [ "mathematical_operator", "operator", false ], [ "mathematical_operator", "property", false ], [ "mathematical_operator", "queryable", false ], [ "mathematical_operator", "theAble", false ], [ "maximum", "hierarchyAble", false ], [ "maximum", "isEdee", false ], [ "maximum", "isEder", false ], [ "maximum", "object", false ], [ "maximum", "property", false ], [ "maximum", "queryable", false ], [ "maximum", "superlative", false ], [ "maximum", "theAble", false ], [ "maximum", "thisAble", false ], [ "measurement", "hierarchyAble", false ], [ "measurement", "isEdee", false ], [ "measurement", "isEder", false ], [ "measurement", "object", false ], [ "measurement", "property", false ], [ "measurement", "queryable", false ], [ "measurement", "system_modifier", false ], [ "measurement", "theAble", false ], [ "measurement", "unit_modifier", false ], [ "measurement_system", "adjective", true ], [ "measurement_system", "concept", false ], [ "measurement_system", "hierarchyAble", false ], [ "measurement_system", "isEdee", false ], [ "measurement_system", "isEder", false ], [ "measurement_system", "object", false ], [ "measurement_system", "property", false ], [ "measurement_system", "queryable", false ], [ "measurement_system", "system", false ], [ "measurement_system", "theAble", false ], [ "measurement_unit", "adjective", true ], [ "measurement_unit", "concept", false ], [ "measurement_unit", "hierarchyAble", false ], [ "measurement_unit", "isEdee", false ], [ "measurement_unit", "isEder", false ], [ "measurement_unit", "object", false ], [ "measurement_unit", "property", false ], [ "measurement_unit", "queryable", false ], [ "measurement_unit", "theAble", false ], [ "measurement_unit", "unit", false ], [ "memorable", "deletable", false ], [ "memorable", "theAble", false ], [ "metric", "hierarchyAble", false ], [ "metric", "isEdee", false ], [ "metric", "isEder", false ], [ "metric", "object", false ], [ "metric", "property", false ], [ "metric", "queryable", false ], [ "metric", "system_modifier", false ], [ "metric", "theAble", false ], [ "metric", "unit_modifier", false ], [ "metric_system", "adjective", true ], [ "metric_system", "concept", false ], [ "metric_system", "hierarchyAble", false ], [ "metric_system", "isEdee", false ], [ "metric_system", "isEder", false ], [ "metric_system", "measurement_system", false ], [ "metric_system", "object", false ], [ "metric_system", "property", false ], [ "metric_system", "queryable", false ], [ "metric_system", "system", false ], [ "metric_system", "theAble", false ], [ "metric_unit", "adjective", true ], [ "metric_unit", "concept", false ], [ "metric_unit", "hierarchyAble", false ], [ "metric_unit", "isEdee", false ], [ "metric_unit", "isEder", false ], [ "metric_unit", "object", false ], [ "metric_unit", "property", false ], [ "metric_unit", "queryable", false ], [ "metric_unit", "theAble", false ], [ "metric_unit", "unit", false ], [ "minimum", "hierarchyAble", false ], [ "minimum", "isEdee", false ], [ "minimum", "isEder", false ], [ "minimum", "object", false ], [ "minimum", "property", false ], [ "minimum", "queryable", false ], [ "minimum", "superlative", false ], [ "minimum", "theAble", false ], [ "minimum", "thisAble", false ], [ "minusExpression", "mathematicalExpression", false ], [ "minusOperator", "mathematical_operator", false ], [ "modifies", "verb", false ], [ "negatable", "queryable", false ], [ "noun", "theAble", false ], [ "noun", "thisAble", false ], [ "number", "expression", false ], [ "number", "quantifier", false ], [ "number", "queryable", false ], [ "object", "listable", false ], [ "object", "queryable", false ], [ "object", "theAble", false ], [ "operator", "concept", false ], [ "operator", "hierarchyAble", false ], [ "operator", "isEdee", false ], [ "operator", "isEder", false ], [ "operator", "object", false ], [ "operator", "property", false ], [ "operator", "queryable", false ], [ "operator", "theAble", false ], [ "operator_modifier", "adjective", false ], [ "orAble", "ifAble", false ], [ "ordering", "concept", false ], [ "ordering", "hierarchyAble", false ], [ "ordering", "isEdee", false ], [ "ordering", "isEder", false ], [ "ordering", "object", false ], [ "ordering", "property", false ], [ "ordering", "queryable", false ], [ "ordering", "theAble", false ], [ "ordering_modifier", "adjective", false ], [ "plusExpression", "mathematicalExpression", false ], [ "plusOperator", "mathematical_operator", false ], [ "preferredUnits", "verb", false ], [ "preposition", "preposition", false ], [ "pronoun", "pronoun", false ], [ "property", "queryable", false ], [ "property", "theAble", false ], [ "propertyOf", "preposition", false ], [ "punctuation", "punctuation", false ], [ "quantifier", "quantifier", false ], [ "quantity", "noun", false ], [ "queryable", "listable", false ], [ "questionMark", "punctuation", false ], [ "readonly", "queryable", false ], [ "reason", "queryable", false ], [ "reason", "theAble", false ], [ "recall", "verb", false ], [ "remember", "verb", false ], [ "sort", "hierarchyAble", false ], [ "sort", "isEdee", false ], [ "sort", "isEder", false ], [ "sort", "object", false ], [ "sort", "ordering_modifier", false ], [ "sort", "property", false ], [ "sort", "queryable", false ], [ "sort", "theAble", false ], [ "sortOrdering", "adjective", false ], [ "sort_ordering", "adjective", true ], [ "sort_ordering", "concept", false ], [ "sort_ordering", "hierarchyAble", false ], [ "sort_ordering", "isEdee", false ], [ "sort_ordering", "isEder", false ], [ "sort_ordering", "object", false ], [ "sort_ordering", "ordering", false ], [ "sort_ordering", "property", false ], [ "sort_ordering", "queryable", false ], [ "sort_ordering", "theAble", false ], [ "stm_before", "adjective", false ], [ "stm_current", "adjective", false ], [ "stm_previous", "adjective", false ], [ "superlative", "condition", false ], [ "superlative", "hierarchyAble", false ], [ "superlative", "isEdee", false ], [ "superlative", "isEder", false ], [ "superlative", "object", false ], [ "superlative", "property", false ], [ "superlative", "queryable", false ], [ "superlative", "theAble", false ], [ "superlative", "thisAble", false ], [ "system", "concept", false ], [ "system", "hierarchyAble", false ], [ "system", "isEdee", false ], [ "system", "isEder", false ], [ "system", "object", false ], [ "system", "property", false ], [ "system", "queryable", false ], [ "system", "theAble", false ], [ "system_modifier", "adjective", false ], [ "testingValue", "testingValue", false ], [ "that", "thisitthat", false ], [ "the", "article", false ], [ "theAble", "queryable", false ], [ "this", "pronoun", false ], [ "this", "queryable", false ], [ "this", "thisitthat", false ], [ "thisAble", "thisAble", false ], [ "thisitthat", "queryable", false ], [ "timesExpression", "mathematicalExpression", false ], [ "timesOperator", "mathematical_operator", false ], [ "to", "preposition", false ], [ "toAble", "toAble", false ], [ "type", "property", false ], [ "type", "whatAble", false ], [ "unit", "concept", false ], [ "unit", "hierarchyAble", false ], [ "unit", "isEdee", false ], [ "unit", "isEder", false ], [ "unit", "mathematicalExpression", false ], [ "unit", "object", false ], [ "unit", "property", false ], [ "unit", "queryable", false ], [ "unit", "theAble", false ], [ "unit_modifier", "adjective", false ], [ "unknown", "hierarchyAble", false ], [ "useMeasurementSystem", "verb", false ], [ "useUnits", "verb", false ], [ "verb", "verb", false ], [ "what", "object", false ], [ "what", "queryable", false ], [ "whatAble", "queryable", false ], [ "whose", "object", false ], [ "x", "number", false ], [ "xfx", "queryable", false ], [ "y", "number", false ] ], "metadata": { "opChoices": [ { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "propertyOf", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ] ], "counter": 1 }, { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "propertyOf", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ] ], "counter": 2 }, { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "propertyOf", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ] ], "counter": 3 }, { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "propertyOf", 0 ], [ "unknown", 0 ], [ "unknown", 0 ], [ "unknown", 0 ] ], "counter": 4 }, { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "propertyOf", 0 ], [ "unknown", 0 ], [ "unknown", 0 ] ], "counter": 5 }, { "op": [ "unknown", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "propertyOf", 0 ], [ "unknown", 0 ] ], "counter": 6 }, { "op": [ "list", 0 ], "ops": [ [ "is", 0 ], [ "list", 0 ], [ "propertyOf", 0 ] ], "counter": 7 }, { "op": [ "list", 1 ], "ops": [ [ "is", 0 ], [ "list", 1 ], [ "propertyOf", 0 ] ], "counter": 8 }, { "op": [ "list", 1 ], "ops": [ [ "is", 0 ], [ "list", 1 ], [ "propertyOf", 0 ] ], "counter": 9 }, { "op": [ "list", 1 ], "ops": [ [ "is", 0 ], [ "list", 1 ], [ "propertyOf", 0 ] ], "counter": 10 }, { "op": [ "propertyOf", 0 ], "ops": [ [ "is", 0 ], [ "propertyOf", 0 ] ], "counter": 11 }, { "op": [ "propertyOf", 1 ], "ops": [ [ "is", 0 ], [ "propertyOf", 1 ] ], "counter": 12 }, { "op": [ "is", 0 ], "ops": [ [ "is", 0 ] ], "counter": 13 }, { "op": [ "is", 1 ], "ops": [ [ "is", 1 ] ], "counter": 14 } ] }, "trace": "undefined", "contexts": [ { "number": "many", "text": "years hours minutes milliseconds and seconds are units of time", "marker": "is", "word": "are", "range": { "start": 0, "end": 61 }, "one": { "number": "many", "marker": "list", "default": true, "word": "and", "text": "years hours minutes milliseconds and seconds", "range": { "start": 0, "end": 43 }, "types": [ "list", "unknown" ], "listable": true, "isList": true, "value": [ { "value": "years", "unknown": true, "text": "years", "marker": "unknown", "word": "years", "range": { "start": 0, "end": 4 }, "dead": true, "types": [ "unknown" ], "level": 0 }, { "value": "hours", "unknown": true, "text": "hours", "marker": "unknown", "word": "hours", "range": { "start": 6, "end": 10 }, "dead": true, "types": [ "unknown" ], "level": 0 }, { "value": "minutes", "unknown": true, "text": "minutes", "marker": "unknown", "word": "minutes", "range": { "start": 12, "end": 18 }, "dead": true, "types": [ "unknown" ], "level": 0 }, { "value": "milliseconds", "unknown": true, "text": "milliseconds", "marker": "unknown", "word": "milliseconds", "range": { "start": 20, "end": 31 }, "dead": true, "types": [ "unknown" ], "level": 0 }, { "value": "seconds", "unknown": true, "text": "seconds", "marker": "unknown", "word": "seconds", "range": { "start": 37, "end": 43 }, "dead": true, "types": [ "unknown" ], "level": 0 } ], "level": 1 }, "two": { "value": "unit", "number": "many", "text": "units of time", "marker": "unit", "dead": true, "word": "units", "range": { "start": 49, "end": 61 }, "types": [ "unit" ], "propertyOf": true, "object": { "value": "time", "unknown": true, "text": "time", "marker": "object", "word": "time", "range": { "start": 58, "end": 61 }, "dead": true, "types": [ "object" ], "level": 0 }, "objects": [ { "value": "unit", "number": "many", "text": "units", "marker": "unit", "dead": true, "word": "units", "range": { "start": 49, "end": 53 }, "types": [ "unit" ], "level": 0 }, { "value": "time", "unknown": true, "text": "time", "marker": "object", "word": "time", "range": { "start": 58, "end": 61 }, "dead": true, "types": [ "object" ], "level": 0 } ], "level": 0, "concept": true }, "dead": true, "level": 2,