В отличие от стандартных семантических подходов, в EventFlow акцент делается не столько на хранении и поиске данных, сколько на моделировании деятельности с помощью исполняемых событийных моделей. Реализация бизнес-логики базируется на подходе DataFlow: в формат события включено логическое выражение, составленное из значений предшествующих событий, а истинность этого выражения принимается как условие выполнения события. В результате исполнения семантических моделей формируются новые события, которые фиксируют изменения объектов предметной области и одновременно являются условиями для генерации последующих событий (см. врезку).
Подход EventFlow-можно представить следующим образом: все данные предметной области создаются и хранятся в виде событий, фиксирующих наличие или изменение свойств объектов; события записываются в семантическом формате (содержат не только значения свойств, но и метаданные); в формат события включено логическое выражение, задающее условие его выполнения, что позволяет реализовать подход DataFlow к исполнению алгоритмов.
Событийная семантика
Традиционные ИТ-архитектуры основаны на однозначном разделении данных и метаданных. Данные обычно хранятся в виде числовых и строковых значений в СУБД, а метаданные, описывающие содержательную сторону предметной области (отношения объектов и бизнес-логику), задаются структурой хранилищ и встраиваются в программу. При семантическом подходе смысловая составляющая предметной области отделяется от структуры приложения (кода программ и схем баз данных). Это достигается за счет использования специальных форматов записи, совмещающих данные и метаданные, – форматов, в которых значения свойств и стандартизированные с помощью общих словарей текстовые обозначения свойств сохраняются в едином кортеже данных. Из сгруппированных таким образом данных формируются семантические сети, или онтологии, фиксирующие отношения сущностей предметных областей, что позволяет делать инструменты обработки данных независимыми. Такое отделение семантики от кода призвано унифицировать алгоритмы информационных систем, стандартизировать обмен данными между независимыми приложениями и обеспечивает возможность модификации структуры данных (добавление новых сущностей и свойств) без изменения алгоритмов. Кроме того, появляется возможность реализовать логический вывод неявных фактов и семантический поиск (например, «выявить всех сотрудников, принимавших участие в проекте `Х` и имевших доступ к оборудованию `Y`, а затем уволившихся в 2021 году»).
Наиболее продвинутой реализацией семантической технологии на данный момент считается набор стандартов W3C для Semantic Web [3]. Основу стандартов составляют: спецификация записи данных (Resource Description Framework, RDF), язык описания онтологий (Web Ontology Language, OWL) и язык запросов SPARQL. Семантические инструменты широко применяются при создании больших хранилищ семантически связанных данных, таких как DBpedia и Freebase, позже влившихся в Google Knowledge Graph, а также для реализации отраслевых и корпоративных баз знаний.
Однако семантические сети (графы знаний) традиционно содержат только актуальные данные, фиксирующие статичное состояние предметной области. Это связано с тем, что спецификации RDF/OWL/SPARQL и другие подобные семантические инструменты не содержат представления о времени, а следовательно, не поддерживают работу с темпорально распределенными, причинно-зависимыми, организованными во временные последовательности данными. Делаются попытки преодолеть это ограничение с помощью разнообразных расширений (TOQL, SOWL, T-SPARQL, OWL-Time и др.), предусматривающих внедрение в объектные семантики механизмов отслеживания изменений во времени. Для этого используются разные способы: добавление специального временного предиката, операторов «до», «всегда», «позже» и др.; задание интервалов, на которых фиксируется истинность утверждений; введение четырехмерного представления объекта, включающего время его жизненного цикла (по типу 4D-онтологии инженерного стандарта ISO 15926); отслеживание временных версий графа. Однако подобные расширения решают лишь задачу привязки изменений свойств объектов к конкретным моментам времени и не содержат инструментов для семантического связывания последовательностей событий в процессы. Именно для решения этой проблемы и была разработана событийная семантика.