Эпистемичные способности rdf и SPARQL
Заметка на полях исследований стека технологий для дейцентричного процессинга.
Оператор negation в спецификации SPARQL проявляет интересную проблему с интеграцией разноуровневых онтологий и эпистемических вычислений. Данные, представленные в блоке «Data»- текущая онтика, набор фактов, организованный в соответствии с какой-то онтологией (О1). По факту там несколько онтологий импортировано (example, rdfs, foaf), но тут это не важно, т.к. они одного уровня.
Текст запроса в части WHERE создаёт локальную онтологию О2, группу условий — классов истинности, которая для каждого конкретного факта из О1 производит булевый экземпляр, значение срабатывания фильтра.
При этом выражение FILTER NOT EXISTS (или FILTER EXISTS) — можно считать эпистемическим оператором: если перефразировать объективистский квантор EXISTS в конструктивистском виде, получим аналогичное оному WE DON’T KNOW OF, «онтика агента не содержит такого факта». Closed world assumption предполагает положение, что «не знаем — значит не существует», но, как assumption, в эпистемологических, а не частных методологических задачах оно нас не ограничивает.
Мы имеем две онтики о1 и о2 с разным жизненным циклом: первая протяжённая, вторая существует только во время исполнения запроса. Онтологии О1 и О2, нормативные для этих онтик, реализуются различными формализмами: О1 — rdf/turtle, О2 — SPARQL.
Генераторы фактов в rdf — SPO триплеты. Они, предположим, удобны для описания объектного знания «объект отношение свойство», «субъект отношение объект» и пр. Для описания эпистемических ситуаций вида «мы не знаем, что А» такие конструкции недостаточны: ведь нужно превратить факт в объект целиком, реифицировать. Появляются named graphs, N-quads и TriG. Теперь можно генерировать эпистемические факты, вроде
@prefix e: <http://epistemic.org/> . :alice rdf:name "Alice" :fact1. :we e:dontKnown :fact1 .
Для объектной онтологии выглядит несколько странно, странность эта неслучайна, но рефлексивные онтики реальных агентов чем-то подобным переполнены. Ощущение странности возникает из-за того, что rdf/owl для эпистемически-насыщенных задач приспособлены примерно никак. Это онтологические инструменты, да ещё и с большим количеством ограничений на средства онтологизации. А вот SPAQRL, как и многие/любые языки запросов по необходимости должны быть эпистемически-способны. Одна из их задач — определять статус знания долгоживущей онтики — «база знаний», относительно знания оперативного — контекст запроса. При этом эпистемические генераторы вида NOT EXISTS зашиты в синтаксис SPARQL, т.е. связаны с жизненным циклом языка, формализма. Эпистемически активный процессинг, и тем более — разработка в рефлексивно-насыщенных доменах однозначно требуют большей гибкости. В SQL или SPARQL возможно создать онтику эпистемических состояний, «записать знание о знании и незнании» не только в онтику запроса (состояние предикатов WHERE, JOIN, GROUP и пр), но и в промежуточные базы, сначала собрав онтологию эпистемических состояний, но текущими объект-центричными (не обязательно объектно-ориентированными) средствами это, похоже, будет весьма громоздко.