Система управления знаниями
ontolog не читая материалов по ссылке на форум Vingrad.ru — а зачем строить еще одну систему управления знаниями? ИХ УЖЕ СТОЛЬКО, как промышленного качества, так и любительских….
Cod Назовите хотя бы одну.
ontolog помнится был ресурс по теме knowledge managment [гдето здесь — http://www.kmtec.ru/publications/library/authors/ontolog_engeneering.shtml] А вообще гугл по данной теме выдает массу интересных результатов… А с другой стороны, Что есть protege-2000? практически все функции необходимые для управления «явновыраженными» знаниями в нем есть, а если чего и нет так pluginчик можно написать… посмотрите на современные системы электронного документооборота, из чего они состоят? на что основной упор делается разработчиками этих систем?… как мне показалось основной упор идет на управление знаниями….
ontolog protege особо в коммерческих целях использовать не получится, это связано как минимум ограничениями на количество обрабатываемых объектов в базе знаний — миллион объектов предметной области с экземплярами наверно сложновато будет загрузить в protege…, но и это не проблема. есть высокопроизводительные решения на основе баз данных, например, SPATIAL у oracle. Или если хотите решение подешевле, то есть подобная ora spatial реализация под postgress…
jupy ontolog пишет: зачем строить еще одну систему управления знаниями? Присоединяюсь к вопросу. Тем более, что описанный подход к построению системы тоже ничего нового не предполагает. Можно взять любое RDF хранилище (благо их сегодня тьма), и использовать его как основу «на которой можно было бы строить коммерческие приложения…» и т.д. Или, например, FramerD — прекрасная БД с аналогичным функционалом. Тоесть не совсем понятно: в чем собственно состоит идея?
ontolog ontolog пишет: Создание Knowledge Control Engine (KCE), с помощью которого формируется база данных знаний, на основе которой можно было бы строить коммерческие приложения для решения различных пользовательских задач, связанных с каталогизацией, поиском и управления знаниями. задача хорошая… но я в частности вышеперечисленные функции делаю с помощью фрейворка jena… или когда есть время можно и на XSLT поупражнятся…. Потому, зачем создавать новый KCE вопрос открытый…
Cod ontolog пишет: зачем создавать новый KCE Затем же, зачем был создан Google, когда был Yahoo. или FireBird, когда есть MySQL или Зачем создали Oper/у, когда есть FireFox (или наоборот) или зачем проектировать новый дом, когда есть огромное количество готовых уже проектов. … Вопрос неуместный. Я пытаюсь сделать то, что мне не хватает. Да, есть некоторые системы, которые решают какие-то задачи. Возможно даже очень близкие к тому что мне надо. Но не полностью и не так ка мне надо. Поэтому, новая система А как оно работает смотрите на форуме Vingrad. (смотрите ссылку выше)
ontolog
ontolog Почитал я материалы ФОРУМА ПО ССЫЛКЕ выше… Комментировать материалы этого форума на форуме SemanticTools у меня нет желания…
ontolog Для Coda: Проект у вас амбициозный… Удачи вам в его реализации… Единственно, почему Вы так слабо(хм.. мало) используете идеи и технологии Semantic Web в своем проекте?
Cod Semantic Web и его составляющие (RDF, SPARQL) можно было бы использовать (возможно, его надо будет использовать), но только после того, как будет реализована основная модель хранения и управления данными. Что мне не нравится в Semantic Web: это данность, которую ниспослали нам свыше. Это очередной протокол, который предназначен для решения узкой (не моей) задачи. Опять узкие рамки, узкие требования и очень много условностей. HTML — слабый язык. То что делается сейчас на этом языке — это долгий путь исправлений и добавлений. раньше было Java, JavaScript, затем XML, XSLT, теперь — RDF, OWL, SPARQL. все это очередные витки добавить в очень слабую базу некоторую функциональность, которой катастрофически не хватает для более-менее приемлемых рзультатов. Разговоры об изменении парадигмы обмена и отображения информации ведутся не один год, возможно даже уже не одно десятилетие, и хороших решений до сих пор нет. Думаю, что в итоге мы получим расширение функциональности уже существующих сервисов — это хорошая новость. Плохая новость заключается в том, что на слабый фундамент навешиваются очередные рюшечки, которые не добавляют уже к существующим данным ни грамма интеллекта (ни толики знаний). А хотелось бы обратного.
ontolog
dulanov Cod пишет: Что мне не нравится в Semantic Web: это данность, которую ниспослали нам свыше. Это очередной протокол, который предназначен для решения узкой (не моей) задачи. Опять узкие рамки, узкие требования и очень много условностей. Я даже не буду пытаться спорить! Cod, может вы опубликуете хотя бы в общих чертах своё решение, свою модель хранения? Хочется увидеть что вы считаете более гибким чем графовая модель RDF
Cod Мое решение основано, также как и RDF, на графовой модели. Основа моей модели лежит в основополагающем принципе: «каждое явление в мире имеет только свои характеристики» Например, каждый человек — уникум. Но каждый из них обладает характеристиками, однозначно описывающими каждого конкретного человека. (Фамилия, имя, отчество, место рождения, образование, и т.д.) Поэтому система свойств (или его характеристики) являются вторым планом человека. т.е. мы имеем как минимум две структуры, или как я это определяю — два слоя данных: Слой 1-го порядка — люди, Слой 2-го порядка — свойства людей. Кроме того, каждое явление которое может входить в любой слой, также обладает своей надструктурой или иначе формирует новый слой. например, х1.Человек — х2.Образование — х3.Высшее — x4.Закончил — x5.МФТИ — х6.1984 здесь х1, х2, х3, х4, х5, х6 являются слоями данных х1 – это люди, х2 – одна из характеристик человека (возможные варианты: имеет образование, не имеет) х3 – еще один слой (если имеет образование – какое: высшее, специальное, музыкальное и.т.д) х4 – А закончил ли он образование( Да, нет, закончил, не закончил) х5 – Какое учреждение (МФТИ, МЭСИ, МГУ, СПбГУ, … ) x6 – и.т.д Это структуры, каждая из которых является самостоятельной и которая служит основой для формирования новой. В конце концов, мы получим многомерную структуру, которую только осталось занести в базу. И связать между собой отдельные явления. Для чего? Для того, чтобы найти и подставить в любую вершину этой цепочки необходимый элемент. Который бы соответствовал всем остальным значениям, или был очень близкий к ним. Например: Пупкин – (имеет, получил) высшее — образование – (которое) закончил – (в) 1984. Или МФТИ – (дает) высшее – образование Здесь то, что в скобках является вариантами связи между слоями И это принципиальное отличие от жесткой детерминированности RDF модели. в которой никакими средствами (как я ее понял RDF модель) не заменить. Иначе получится, что в каждом веб- сервисе должны быть все возможные варианты связи между явлением источником (в нашем случае это или Пупкин или МФТИ) и получателем (высшее образование). А теперь представим сколько людей имеет (получил, получило, получает и.т.д) образование.
dulanov Трудно комментировать, двоякое впечатление у меня от прочитанного. Мне также показалось, что у тебя самого нет пока ясного видения модели, потому что апперируешь несколькими несвязанными друг с другом метафорами (слои, графы) и даже есть логические неточности: пишешь что второй слой представляет свойства людей и в тоже время свойство закончить что-то располагаешь уже в четвертом слое — странно. Какая-то недетерминированная модель прям. Понять что такое «высшее» — «закончил» мне также сложно. Тем не менее я ожидал увидеть ещё хуже, в твоей модели есть определённая «изюминка», но согласись, что утверждения RDF более изящны — это просто тройки subject-predicate-object. Я не верю что более мудрённые модели получат «путёвку в жизнь». Одна из моих любимых конструкций — список в Lisp. Проще некуда, но зато какая мощь! А вот главный твой аргумент в сторону RDF по поводу детерминированности я могу понять, но ведь это аргумент в сторону вообще любых вычислений на нынешних Тьюринговых компьютерах. Ну хорошо, перейдём к главному вопросу. Изюминку RDF я вижу в том, что эта модель позволяет в глобальном маштабе создавать соглашения по семантики данных. Т.е. я могу определится с URI термина человек и использовать это повсеместно в Интернете. Кто то другой создаст альтернативный URI для термина человека — не страшно, легко создать утверждение что эти URI тождественны друг другу. Получается что это работает глобально и распределенно одновременно — это тот же Веб но для машин, фактически это глобальная база знаний. Но я не понял как ты со своею моделью можешь решить проблему СЕМАНТИКИ ПОНЯТИЙ и обеспечить их УНИКАЛЬНУЮ ИДЕНТИФИКАЦИЮ? В Семантическом Вебе это решается при помощи ГРАФОВОЙ МОДЕЛИ RDF, ФОРМАЛЬНОЙ ЛОГИКИ заложенной в OWL и URI. Обьясните нам хотя бы как будет выглядить процесс обьединения нескольких ваших баз знаний, как одна система поймёт другую, как будут установлены взаимные соответствия между понятиями и т.д. и т.п. Ты конечно же можешь и здесь свои слои навернуть, но это решение не маштабируемо в глобальной перспективе, потому что сложность написания интеграции для N баз знаний будет расти экспонинциально. Во-первых, нужна уникальная идентификация понятий, чтобы связывать с ней семантику. Во-вторых, недетерминированные алгоритмы скорее всего будут «зацикливаться» при работе. В-третьих, может тебе проще что-то из функциональных языков программирования использовать, вместо того чтобы подменять понятия «можные средства для выражения знаний» и «базы знаний». Просто я уверен, что ты создашь ещё один язык программирования, но просто на базе данных со всеми вытекающими последствиями.
dulanov Я ставлю тебе простую задачу! У нас есть несколько институтов: МГУ, физтех, МИФИ и бауманка. Декан каждого из этих институтов офигел от твоей системы и она уже внедрена в учебный процесс и в ней хранятся данные о выпускниках. Естественно количество слоёв и связи оговариваться специально не будут, как мы сможем объединить (виртуализировать) эти четыре базы знаний? Как мы поймём что термины «бывший студент», «выпускник», «бакалавр» одно и тоже? Как мы сможем найти лекторов, которые читают лекции более чем в одном институте? Не произойдёт ли подмены семантики, если для разных понятий используется одно и тоже название? Не кажется ли тебе, что вместо слоёв можно использовать банально XML и ничего принципиально не изменится? Если я что-то не понял или грубо проинтерпретировал твою модель, поправь пожалуста.
Cod Для начала, у меня нет задачи создать глобальную распределенную базу знаний. (Если такая задача возникнет, то технологий создания распределенных БД на сегодняшний день существует много) Второе: Модель, которую я представил, конечно, весьма упрощенная. Я старался взять основные положения, т.е. представить ее в самых общих чертах, Конечно, некоторые моменты опущены и практически не представлена основная логика связи между элементами базы. Третье: Сложно требовать от меня сейчас полного объяснения всей модели. На проработку и документальное оформление идеи требуется очень много времени. и, конечно, в каких-то узких местах есть нестыковки: и в логике, и в терминах и т.д. Четвертое: Никаких языков я создавать не собирался. Клиент-серверная технология. Возможно понадобится создать свой SPARQL — но это задача далекого будущего. и Пятое (последнее): Я ищу помощников, которым была бы интересна эта идея. Может она требует кардинального изменения, но в одиночку это сделать невозможно. Этим и определяется мое появление на этом форуме. Поскольку, идеи семантичекого веба, и мои идеи очень близки, я думал найти здесь единомышленииков.
Cod По поводу простой задачи. Схема очень простая: Мы можем организовать струтуру данных или в виде ФИО1 — является — выпускник ФИО2 — является — выпускник ФИО3 — является — выпускник или в виде Выпускник — является — ФИО1, ФИО2, ФИО3 В любом из этих случаев нам надо иметь два слоя данных: слой «персоналий» и слой «Выпускники». В этом случае, если нам понадобится найти всех студентов, мы получим всех, кто входит в такие цепочки. Если добавить связи Выпускник — является — бывший студент, бакалавр или Бывший студент — является — Выпускник Бакалавр — является — выпускник То объединив все связи, получим ФИО — является — выпусник — является — бывший студент. Теперь организовав вопрос: Получить список бывших студентов (или бакалавров, или выпускников) мы получим список из ФИО1, ФИО2, ФИО3 при этом не надо будет указывать, что ФИО1 является бакалавром. Также можно организовать и про преподавателей, которые являются одновременно сотрудниками нескольких институтов. Эта идея не новая. Такие связи можно организовывать было и раньше. В том же самом Прологе. Новизна заключается в методе организации этих в данных в базе и поиск этих данных.
dulanov Спасибо за подробные ответы, может кто-то и заинтересуется твоей идеей, но лично я отдаю предпочтение семантическому вебу Успехов! P.S. По поводу Prolog и RDBMS. Может ты слышал, есть такая вещь как Datalog (http://en.wikipedia.org/wiki/Datalog) и даже российский вариант — http://sp.cmc.msu.ru/datalog/. И лично от себя пожелание — ну не стоит изобретать велосипеды, ну не верю я что один человек в силах противостоять целым институтам, особенно сейчас, когда по сути вся теория создана (ИМХО, естетсвенно).
Cod Полностью согласен — один человек не в состоянии противостоять, поэтому я и ищу единомышленников. Спасибо за ссылки.