Адаптивные Гипермедиа Системы (или AHS) предоставляют автоматически персонализированный доступ к информационным гипермедиа ресурсам, чаще всего в форме Web сайтов. Большинство AHS обеспечивают поддержку адаптивной навигации и адаптивное содержание. Структура ссылок или представление указателей ссылок различна для каждого пользователя. Реальное содержание информационных страниц также отличается для различных пользователей. Обзор систем, методов и техник адаптивной гипермедиа можно найти в [B96]. Мы разработали эталонную модель архитектуры адаптивных гипермедиа приложений: Модель Адаптивного Гипермедиа Приложения (AHAM) [DHW99]. AHAM описывает AHS на абстрактном уровне, используя архитектуру, состоящую из трех частей:
Модель предметной области (DM), которая описывает, каким образом структурировано содержание приложения (используя концепты и отношения концептов).
Детализированная модель пользователя (UM), которая представляет предпочтения, знания, цели, историю навигации и другие релевантные аспекты пользователя.
Модель адаптации (AM), состоящую из правил адаптации. Правила определяют процесс генерации адаптивного представления и обновления модели пользователя.
Такая архитектура обеспечивает четкое разделение интересов при создании адаптивного гипермедиа приложения.
Исполнительная часть AHS, называемая механизмом (движком) адаптации (AE), является программным обеспечением, которое выполняет адаптацию (описанную правилами AM). Проблемы создания механизма адаптации общего назначения (AE) обсуждались в более ранней статье [WDD01]. Мы определили язык правил для AHS, AHAM-CA и предложили метод статического анализа для принятия решения о том, что для данных DM, UM и AM, механизм адаптации всегда конечен, и будет ли он конфлюэнтным[1] (это означает, что система будет генерировать предсказуемые результаты). В этой статье мы обсудим, как (достаточные, но не необходимые) условия, которые гарантируют конечность и конфлюэнтность, могут быть ослаблены (оставаясь достаточными).
Из-за отсутствия достаточного места мы не даем полное определение синтаксиса нашего (абстрактного) языка правил, а иллюстрируем его на примере. Подробности смотрите в [WDD01]. Правило C→A в AHAM состоит из условия (C) и действия (A). Поскольку свойства языка не зависят от используемого синтаксиса, для простоты мы применяем SQL-подобный синтаксис. Пример AHAM-CA правила:
C: select C1.knowledge
where C1.knowledge _ “known”
A: update C2.ready_to_read := true
where prerequisite(C1,C2) and
not exists ( select C3
where prerequisite(C3,C2) and
C3.knowledge < “known” )
Это общее правило, содержащее переменные концепты C1, C2 и С3. Язык также разрешает (более или менее) специальные правила, которые используют концепты вместо переменных концептов. Правило в примере объявляет, что когда знание концепта C1 изменяется на такое, что оно становится, по меньшей мере “known (знакомо)”, тогда все концепты C2, для которых C1 было последним предварительным условием, которое еще не было “known (знакомо)”, теперь становится “ready_to_read (готовы_к_чтению)”. В данном языке правил слишком легко написать правило, которое может привести к бесконечным циклам или непредсказуемым результатам. Пример такого правила:
C: select C1.attr
where C1.attr > 0
A: update C2.attr := C2.attr + 1
where rel(C1,C2)
Этот пример также демонстрирует, что это правило может генерировать бесконечный цикл, в зависимости от того имеет ли циклы отношение “rel”.
Язык правил AHAM-CA является очень мощным, но его выразительная мощность всегда отражается на поведении системы. Не существует полной гарантии того, что система будет вести себя корректно. Мы предложили метод статического анализа для проверки конечности и конфлюэнтности [WDD01] для основных случаев в AHS. Анализ или говорит нам, что набор правил конечен и конфлюэнтен, или что это не может быть определено. Этот раздел определяет некоторые ограничения, накладываемые на правила AHAM-CA, которые гарантируют конечность и конфлюэнтность, сохраняя в тоже время бóльшую свободу автору при описании процесса распространения, чем достаточные условия из [WDD01]. Сначала мы определяем некоторые термины и функции, которые будут использованы позднее.
Определение 1: Ri может активировать Rj, если выполнение действия Ai может перевести базу данных (вместе DM и UM) из состояния, в котором условие Cj ложно, в состояние, в котором Cj истинно. Ri может деактивировать Rj, если выполнение действия Ai может перевести базу данных из состояния, в котором Cj истинно, в состояние, в котором Cj ложно.
Определение 2: Набор правил завершает свое выполнение, если правила не могут активировать друг друга бесконечно.
Определение 3: Состояние выполнения правила S является парой (d, RA), где d – состояние базы данных (DM и UM) и RA Í AM – набор активных правил.
Определение 4: Последовательность выполнения правил – это последовательность σ, состоящая из серий состояний выполнения правил, связанных с (выполняемыми) правилами. Последовательность выполнения правил является законченной, если последним состоянием является (d, Æ), т.е. в последнем состоянии нет активных правил. Последовательность выполнения правил является валидной, если она представляет правильную последовательность выполнения: выполняются только активные правила и пары смежных состояний надлежащим образом представляют эффект выполнения соответствующего правила; более подробно смотрите [AHW95].
Определение 5: Набор правил является конфлюэнтным если для каждого начального состояния выполнения правила S (получаемого из исходного состояния базы данных множеством воздействий пользователя) каждая валидная и законченная последовательность выполнения правил, начинающаяся с состояния S, имеет одно и тоже конечное состояние.
Определение 6:
Пусть R: C→A. Функция num определяет количество отношений, используемых в операторе where для части A (действие) правила (А.where) (точное определение не приводится из-за ограниченного объема работы).
Пусть R: C→A.
S(R) = набор атрибутов, которые выбраны в C
U(R) = набор атрибутов, которым присвоены значения в A
E(R) = набор атрибутов, используемых в правой части выражений присваивания в A
st-rule (стартовое правило) – это правило, которое запускается внешними или внутренними сгенерированными событиями. Его действие только модернизирует концепты, выбранные по его условию. Оно описывает изменение значений внутри того же концепта. St-rule представляет набор стартовых правил.
pr-rule (правило распространения) – это правило, которое передает изменения значений различным концептам через отношения между этими концептами. Это может быть признаком плохого проектирования, если правила передают изменения с помощью иных средств, нежели отношения концептов в AHS. Pr-rule представляет набор правил распространения.
Pri(R) – это число для представления приоритета порядка выполнения правила R.
AM(rel)ÍPr-rule – набор правил, которые распространяют изменения “через” отношения типа rel.
Далее мы рассмотрим ограничения, которые гарантируют, что выполнение набора правил конечно и конфлюэнтно, но оставляют автору известную степень выразительной мощности при написании правил распространения. Несколько первых ограничений показывают, что непосредственный прямой подход приводит к очень жестким ограничениям, что ограничивает свободу автора.
Ограничение 1: "Ri,RjÎAM: S(Ri)ÇU(Rj) = Æ.
Это ограничение означает, что правилам не позволено запускать друг друга.
Теорема 1: Набор правил AM, удовлетворяющий Ограничению 1, конечен.
Мы пропускаем (легкое) доказательство данной теоремы. Это ограничение является очень жестким, так как оно мешает процессу распространения. Тем не менее, оно, однако, не является достаточным, чтобы гарантировать конфлюэнтность.
Ограничение 2: "Ri,RjÎAM:
Ri не зависит от Rj: (S(Ri)ÈU(Ri)ÈE(Ri)) Ç U(Rj) = Æ.
Ri является самонезависимым: (S(Ri)ÈE(Ri)) Ç U(Ri) = Æ.
Это ограничение означает, что правилам не позволено воздействовать (активировать или деактивировать) друг друга или самих себя и порядок выполнения правил не будет влиять на конечный результат.
Теорема 2: Набор правил AM, удовлетворяющий Ограничению 2, конечен и конфлюэнтен. Мы также пропускаем (легкое) доказательство данной теоремы.
В то время как Ограничение 1 гарантирует только конечность, Ограничение 2 является достаточным условием для конечности и конфлюэнтности. Вычислительная сложность алгоритма проверки этих ограничений O(N2xM2), где N количество правил, а M – количество атрибутов. Эти ограничения очень строги в том смысле, что невозможно описать никакой процесс распространения (правило, которое активирует другие правила). Мы определи Ограничения 3-7 (и 7’), чтобы дать авторам бóльшую выразительную свободу.
Ограничение 3: AM = St-ruleÈPr-rule, "RiÎSt-rule, "RjÎPr-rule: Pri(Ri)>Pri(Rj).
Правило является семантически корректным в AHS, если оно удовлетворяет данному ограничению. Это значит, что набор правил состоит из стартовых правил и правил распространения. Данное ограничение также описывает то, что в каждой фазе перехода стартовые правила выполняются перед распространением. Приоритеты помогают, но их не достаточно для гарантирования конечности и конфлюэнтности.
Ограничение 4: “Граф” для каждого типа отношений концептов (исключая гиперссылки) ацикличен.
Гиперссылки не используются для распространения изменений в модели пользователя, так что они могут быть циклическими. Остальные отношения используются для распространения изменений между различными концептами. Чаще всего это не является признаком хорошего проектирования, если тип отношений циклический, поскольку тогда распространение изменений может никогда не закончиться. (Например, циклы в отношениях указывающих на порядок прохождения материала не имеют смысла.) Но даже с ациклическими типами отношений, отношения различных типов могут продолжать взаимодействовать и служить причиной бесконечных циклов.
Ограничение 5: "rel1, rel2ÎDM-rel, rel1 ¹ rel2:
"RiÎAM(rel1), "RjÎAM(rel2): U(Ri)ÇS(Rj) = Æ.
Это ограничение означает, что правила, использующие различные типы отношений, не могут активировать друг друга.
Теорема 3: Набор правил AM конечен, если он удовлетворяет Ограничениям 3-5.
Доказательство (в общих чертах): набор правил AM состоит из конечного числа стартовых правил и правил распространения. Стартовые правила не будут запускать друг друга; они запускаются внешними или внутренними событиями. Стартовые правила могут запускать правила распространения, и правила распространения также могут запускать правила распространения. Процесс распространение правил, использующих один тип отношений, всегда конечен, поскольку граф отношений является ориентированным ациклическим графом (ОАГ). И правила, использующие различные типы отношений, не могут запускать друг друга, так что различные ОАГ не могут быть объединены для формирования цикла.
Ограничение 6: "relÎDM-rel: "Ri, RjÎAM(rel), Ri ¹ Rj: U(Ri)ÇU(Rj) = Æ.
Это ограничение говорит, что каждая пара правил, содержащая одинаковые типы отношений, обновляет непересекающиеся наборы атрибутов. В случае простого распространения каждый атрибут устанавливается только однажды за переход[2] .
Определение 7: "rel1, rel2ÎDM-rel:
Условие Независимость(rel1, rel2) удовлетворяется, если "RiÎAM(rel1), "RjÎAM(rel2), Ri ¹ Rj:
(S(Ri)ÈU(Ri)ÈE(Ri)) Ç U(Rj) = Æ and (S(Rj)ÈU(Rj)ÈE(Rj)) Ç U(Ri) = Æ.
Это определение говорит, что все типы отношений независимы; порядок выполнения правил, использующих различные типы отношений, не влияет на конечный результат.
Ограничение 7: "rel1, rel2ÎDM-rel, rel1 ¹ rel2, Независимость(rel1, rel2) удовлетворяется.
Ограничение 7’: "RÎAM, R:C®A: num(A.where) £ 1 and
"rel1, rel2ÎDM-rel: ("RiÎAM(rel1), "RjÎAM(rel2), rel1 ¹ rel2: Pri(Ri)>Pri(Rj)) or
("RiÎAM(rel1), "RjÎAM(rel2), rel1 ¹ rel2: Pri(Ri)