Язык CCCR

Язык конструирования контекстно связанных рекурсивных вычислений (context-compute-construct-recursive) для трансляции иерархических (или сводимых к иерархическим) структур данных в RDF представление

Пример

Реестр учебных классов <- Реестр учебных планов <- Реестр уровней образования

Легенда:

  • ::= - эквивалентно
  • ( ... ) - конструкция встречается один раз
  • ( ... )? - конструкция встречается ноль или один раз
  • ( ... ) * - конструкция может встречаться ноль или несколько раз
  • | - "или" одна из перечисленных конструкций

Грамматика языка CCCR (v2.3)

  1. Базовые конструкции:
    1. CCCR ::= { "descriptions" : [ Description ( , Description ) * ] }
    2. Description ::= { ( Context ) ( ,About ) (, Properties ) }
    3. Properties ::= "properties" : [ Property ( , Property ) * ]
    4. Property ::= { QName (, Context ) ( , "URI" :URI | "literal" : Literal | "descriptions" : Description ) }
  2. Частные конструкции:
    1. URI ::= "URI" : URIExpr | { computedExpression }
    2. Context ::= { ( @List ) ( , PseudoVariable ) * }
    3. pseudoVariable ::= Name : ( Literal | computedExpression )
    4. About ::= "about" : ( Literal | computedExpression )
    5. QName ::= "QName" : { { "nameSpace" : URIExpr } , { "PrefixedName" : PrefixedName } }
    6. @List ::= "@list" : [ LiteralExpr (, LiteralExpr ) * ] | { computedExpression }
    7. Literal ::= "literal" : LiteralExpr | { computedExpression }
    8. computedExpression ::= "compute" : { xquery | sparql | include }
    9. xquery ::= "xquery" : XQueryExpr | [ XQueryExpr ( , XQueryExpr ) ] | { include }
    10. sparql ::= "sparql" : SPARQLExpr | { ( { Context }, ) include }
    11. include ::= "include" : { URI }

Грамматика v2.3(р)

  1. Базовые конструкции:
    1. CCCR ::= { "ресурсы" : [ ( Ресурс ( , Ресурс ) * )? ] }
    2. Ресурс ::= { ( ИдентификаторРесурса )? (, СвойстваРесурса )? ( , Контекст )? }
    3. СвойстваРесурса ::= "свойства" : [ Свойство ( , Свойство ) * ]
    4. Свойство ::= { ИмяСвойства ( , "URI" : URI | "литерал" : Литерал | "ресурс" : Ресурс ) ( , Контекст )? }
  2. Частные конструкции:
    1. URI ::= "URI" | { Вычисление }
    2. Контекст ::= { ( @СписокУзлов )? ( , ПсевдоПеременная ) * }
    3. ПсевдоПеременная ::= ИмяПеременной : ( Строка | Вычисление )
    4. ИдентификаторРесурса ::= "идентификатор" : ( Строка | Вычисление )
    5. ИмяСвойства ::= "квалифицированное-имя" : { { "пространство-имен" : URI } , { "полное-имя" : ПолноеИмя } }
    6. @СписокУзлов ::= "@список-узлов" : [ Литерал (, Литерал ) * ] | { Вычисление }
    7. Литерал ::= "Строка" | { Вычисление }
    8. Вычисление ::= "вычисление" : { ВнутреннийЗапрос | ВнешнийЗапрос | ВнешнийРесурс }
    9. ВнутреннийЗапрос ::= "внутренний-запрос" : XQuery | [ XQuery ( , XQuery ) ] | { ВнешнийРесурс }
    10. ВнешнийЗапрос ::= "внешний-запрос" : SPARQL | { ( { Контекст }, ) ВнешнийРесурс }
    11. ВнешнийРесурс ::= "внешний-ресурс" : { "URI" : URI }