Если рассматривать RDF ресурсы как аналоги объектов в ООП, то можно найти определенные соответствия. Например: OWL классы можно сопоставить с классами в ООП, а свойства RDF ресурсов во многом аналогичны атрибутам классов в объектно-ориентированных языках. Однако существует важное отличие: ресурсы Semantic Web представляют собой данные, и только данные, в то время как объекты в ООП – это совокупность данных и поведения. Поведение объектов, то есть экземпляров классов, определяется набором публичных методов. А что получится, если добавить поведение в RDF ресурсы? Таким вопросом задались авторы проекта под названием Neno/Fhat (произносится «Ни-ноу фэт»).
Фактически Neno – это новый язык программирования для семантических сетей, а Fhat – это виртуальная машина, для исполнения кода написанного на Neno. Идея авторов Neno заключается в том, чтобы позволить пользователям ассоциировать исполняемый код (методы) с OWL классами, тогда RDF ресурсы превращаются в полноценные объекты. При этом исходные тексты на Neno транслируются в промежуточный код, который представляет собой ни что иное как набор RDF троек. Таким образом исполняемый код может храниться в RDF хранилище вместе с данными относящимися к ресурсу. Виртуальная машина Fhat может читать и исполнять этот код, а значит Semantic Web – более не является просто средой моделирования данных, а превращается в распределенную вычислительную среду.
Semantic Web – это структура данных и она не имеет возможности производить вычисления над своими данными. Поэтому, Semantic Web лишь хранит текущее состояние виртуальной машины Fhat, а изменяет это состояние (исполняет код) – внешний процесс.
В чем же преимущества и недостатки такого подхода:
- + Сегодня Интернет обеспечивает инфраструктуру для распространения информации для человека (например: веб-страниц, статей и т.д.). Semantic Web теперь предоставляет возможность для распространения данных для машин (системных моделей, алгоритмов).
- — В силу того, что данный подход использует другой уровень косвенности Neno код будет выполняться существенно медленнее, чем, например код на Java.
- — Данная модель вычислений предполагает большое количество операций ввода/вывода в RDF хранилище, что также не способствует увеличению производительности.
- + Все представлено в виде RDF. И данные, и код.
- + Простота распространения программного обеспечения. И код программы и текущее состояние виртуальной машины представлены в виде RDF и могут быть легко получены с помощью HTTP запроса GET или с помощью SPARQL команды SELECT.
- — В силу того, что все представлено в виде RDF, это приводит к существенному увеличению количества RDF записей в хранилище.
- + Абсолютно распределенная вычислительная среда с адресным пространством покрывающим все возможные URI (то есть практически неограниченное).
Конечно, сегодня трудно представить во что выльется эта инициатива. Сейчас, она вызывает больше вопросов, чем ответов. Тем не менее, проект Neno/Fhat представляется весьма интересным начинанием. Первая версия Neno/Fhat должна появиться в конце осени 2007 года.
Ссылки:
Home Page — http://neno.lanl.gov/Home.html
Presentation — http://www.soe.ucsc.edu/~okram/papers/talks/nenofhat.pdf