Как стать автором
Обновить

Комментарии 30

Спасибо вашим дипломным руководителям доценту Д.В. Попову и А.Ф. Галямову, что поддерживают выбор интересных и перспективных тем… в отличие от 99% остальных ):
Кстати, а почему у вас два научрука?
Формально – один. Фактически – оба очень помогли в этой работе.
Крутой диплом, если бы все были такими интересными :-)
Для обработки RDF ниболее натуральный язык — Prolog :)
Еще один шаг к скайнету.
Я достаточно хорошо знаю пролог, писал на нём интеллект для шашек(кстати, надо бы написать об этом), он хорош как часть ризонера, но не как основной язык программирования приложения. Есть такие ризонеры, которые поддерживают его, можете ознакомиться на w3c.
Не пожалели, что выбрали Ruby? После полученного опыта, остались бы вы на этом языке для решения практических задач в этой области?
Для решения практических задач – да, безусловно. Для решения научных задач, ИИ и вообще для работы с онтологическими БЗ – основным языком пока должен быть java, т.к. там есть все инструменты, которых тут очень не хватало.
Уточните, пожалуйста, каких именно инструментов не хватало?
Ну например Sesame API изначально на Java. Jena/Jade для работы с семантиквебом и интеллектуальными агентами – очень мощные инструменты. Ризонеры, майнеры, всё на яве. В данной работе всего хватало, но ИИ/ЭС, системы которые основаны на инженерии знаний я бы стал разрабатывать исключительно на Java.
Можно использовать и руби и любой другой язык вместе с этими библиотеками, хотя руби не пробовал, но вот Scala отлично работает с Jena, и во многих местах скала удобней чем руби.
Ну может потому что Skala это все-таки JVM ориентированный язык и заточен для работы с Java-системами. У каждого – своя сфера применения. Ruby выбран как эффективный язык для быстрой разработки веб-сервисов.
А JRuby не пробовали? Это как раз JVM ориентированная имплементация Ruby.
Пробовал, хорошая штука, разница с 1.8.7 только в подключении модулей на си, скорости работы, подключении java-классов. Но не использовал его в своих проектах и не могу сказать насколько это удобно, было бы интересно узнать.
… в более удобном для чтения/записи/хренения
поправил уже, спасибо
Интересная тема, безусловно. Может не нашел, но где у вас реализуется логический вывод в реализованной архитектуре? sasame сам по себе не умеет извлекать новые знания из owl аксиом, разве нет?
Все верно, сам Sesame не умеет, но можно использовать различные бэкэнды, например bigdata.
В приложении тоже нет логического вывода (inference), просто работа с репозиторием/онтологиями и один кастомный SPARQL запрос, который можно с натяжкой считать частным случаем логического вывода.
Я знаю что можно, потому и спрашиваю что у вас, обычно ведь на этом акцентируют внимание.
Спасибо за ссылку на bigdata — когда делал анализ это решение не попадалось — почитаю спецификацию на досуге. Я для Sesame использую OWLIM. Он для научных и разработческих целей бесплатный, но при этом на нем можно работать с большими данными (поддерживает кластер), sparql1.1 и конечно вывод почти на всех аксиомах OWL, а так же неплохую оптимизацию хранения RDF.
Попов видимо старший, проект интересный вышел.
Много лет назад экспериментировал с созданием нечто подобного на Jena. Сущности в RDF/OWL были: города, вузы, записи гостевой книги. Забил в онтологию все города и вузы РФ, включил логический вывод уровня OWL DL в Jena… Java грузилась несколько минут и кушала под два гига памяти. Любое изменение онтологии подвешивало Jena на несколько минут (например, добавление записи в гостевую книгу), иногда вылетало с OutOfMemoryError. На этом мои эксперименты с «живым» логическим выводом закончились)
По сабжу встаёт всё тот же вопрос: а в чём сложность было сделать по «старинке» как обычное веб-приложения без SW? Неужели этот sparql-запрос сложно закодить на php/java/ruby + sql?

ЗЫ: Описание сабжа карявое, например, написано «Написаны модели, вьюхи и контроллеры» — а что именно они делают непонятно. Можно только догадываться, что это для веб-интерфейса ввода/редактирования проектов, компетенций и проч. А может и нет…
Нет никаких проблем реализовать это с помощью классического подхода, но смысл данной работы — разработать прототип и исследовать возможности SW в данной задаче. Все то же самое можно было бы сделать проще и в разы быстрее именно так как вы написали, однако в этом нет никаких инноваций.

Я описал структуру, кроме CRUD интерфейса и вывода результатов здесь ничего не подразумевается, но спасибо за критику.
Судя по комментарию выше, разница в работе не до конца раскрыта, но в ведении в предметную область хорошо показана — меньше работы. Точка хранения с поддержкой логического вывода, формализованная информация о предметной области(онтология) и многие данные «появляются» автоматически БЕЗ дополнительного программирования и лишний сложности работы. Чем сложнее задача тем существенней экономия + существенно облегчается обмен данными между системами. Практический эффект сравним в переходом от бинарного обмена к XML. Ну и в добавок большое количество данных и онтологий доступных в сети и которые надо только скачать и загрузить.
Как я понимаю наполнение системы предполагалось делать ручками, но все же интересно, рассматривался ли вариант работы с внешними источниками данных, например mapping RDB to RDF? Все таки на то и Semantic Web, что он обертка над разрозненными источнками данных.
В Sesame есть встроенный инструмент импорта в разных форматах, а также, например, при наличии нескольких таких систем возможно написание скрипта в три строчки для загрузки данных с различных источников, использующих эти онтологии.
Для RDB to RDF достаточно просто производить render моделей, использующих RDB, в ntriples (или любом другом rdf формате).
В Sesame есть встроенный инструмент импорта в разных форматах, а также, например, при наличии нескольких таких систем возможно написание скрипта в три строчки для загрузки данных с различных источников, использующих эти онтологии.
Для RDB to RDF достаточно просто производить render моделей, использующих RDB, в ntriples (или любом другом rdf формате).
Спасибо, очень интересно и красиво написано:) Пойду пройдусь по исходникам на github :) Пишу диссер в этой области, у меня там больше java, меньше рельсов, но, что характерно, — рельсов становится все больше.
Спасибо. Удачи вам в этом :)
Если вам комфортно писать на java, то в данной сфере это более удобно, как я уже написал.
А вам интересно коммерческое сотрудничество по части back-end разработки и реализации data mining алгоритмов?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории