Веб Дизайн - статьи



Язык STRUQL - часть 2


// Создать страницу Root create RootPage() // Создать представление для каждой // публикации x where Publications(x), x -> 1 -> v create PaperPresentation(x) link PaperPresentation(x) -> 1 -> v { // Создать страницу для каждого года where 1 = <year> create YearPage(v) link YearPage(v) -> <Year> -> u YearPage(v) -> <Paper> ->PaperPresentation(x), // Связать корневую страницу с каждой // страницей года RootPage() -> <YearPage> -> YearPage(v) }

Здесь выражение Publications(x) во фразе where обозначает, что x принадлежит совокупности публикаций Publications. В свою очередь, атом x -> 1 -> v обозначает, что существует связь в графе от x к v, и метка соответствующей дуги - 1. Такая же нотация используется во фразе link для того, чтобы специфицировать вновь созданные ребра в результирующем графе. После создания корневой страницы Root первый оператор create генерирует страницу для каждой публикации, обозначенную функцией Сколема PaperPresentation. Второй оператор create, вложенный во внешний запрос, генерирует страницу Year для каждого года и связывает ее со страницей Root, а также со страницами PaperPresentation тех публикаций, которые относятся к этому году. Отметим, что функция Сколема YearPage обеспечивает, чтобы страница Year для конкретного года создавалась только один раз, независимо от того, сколько статей было опубликовано в этом году.

Теперь приведем запись того же самого запроса в WebOQL:

select unique [Url: x.year, Label:>YearPage>] as <RootPage>, [label: <Paper> / x] as x.year from x in browse(<bibtex: myfile.bib>) | select [year: y.url] + y as y.url from y in <browse(RootPage)>

Запрос в WebOQL состоит из двух подзапросов. Полученная в результате первого из них подструктура Web поступает в качестве исходных данных во второй запрос, что достигается с помощью использования оператора <|>. Первый подзапрос строит страницы Root, Paper и Year, а второй переопределяет каждую страницу Year, добавляя к ней поле <year>.







Содержание  Назад  Вперед