Логический вывод

12 views
Skip to first unread message

Krieger

unread,
Nov 11, 2009, 12:13:05 PM11/11/09
to webofdata.ru
Здравствуйте.

Подскажите конкретные алгоритмы (открытые исходники реализации -
вообще замечательно) логического вывода.

Задача:
Есть база фактов вида

Джонатан есть ласточка
ласточка есть птица
птица имеет часть - крылья
крылья имеют часть - перья

"есть", "имеет часть" - это транзитивные отношения.
Нужно строить ответы на запросы вида
объект1:отношение:объект2
Любые элементы запроса могут быть установлены в "?" (неопределённость,
требующая конкретизации).

Кроме прямых совпадений, нужно показывать подходящие результаты
логического вывода.
Например:
Джонатан:имеет часть:?
Нужно вывести:
Джонатан имеет часть крылья
Джонатан имеет часть перья

Я стал программировать реализацию, но уж черезчур замудрёный код
получается.
Помогите не изобретать велосипед заново!

Mikhail Roshchin

unread,
Nov 11, 2009, 12:32:28 PM11/11/09
to webofdat...@googlegroups.com
1. Racer
2. Pellet
3. Fact++
4. Jena

2009/11/11 Krieger <andrey.kri...@gmail.com>:

--
ciao,
Misha
------
Mikhail Roshchin's personal web page www.ruscience.ru

Alexander Sidorov

unread,
Nov 11, 2009, 1:07:17 PM11/11/09
to webofdat...@googlegroups.com
5. Sesame
6. Owlim (Owlim Lite и Big Owlim)

Не со всеми указанными технологиями работал... но думаю не ошибусь (поправьте, если что), если скажу, что список можно разделить на две категории: дохленькие ризонеры в рамках фреймворков (в Jena и Sesame есть несколько реализаций, а в OwlApi нет) и мощные ризонеры (Racer, Pellet, Fact, Owlim), которые реализуются как надстройки над теми самыми фреймворками.

Pellet может работать как с Jena, так и с Owlapi и реализует OWL-DL вывод: медленно, но выразительно. Кстати, никто не в курсе, когда планируется следующий rc Pellet'а? Баг в текущей версии сковывает мои и без того пассивные исследовательские порывы...

Owlim в связке с Sesame. Owlim Lite - бесплатная версия; работает в памяти. Big Owlim представляет собой Storage and Inference layer, работает с "native RDF database, built around Ontotext's TRREE engine - the most scalable RDF storage and inference engine" (не РСУБД - ехууу). Owlim обеспечивает очень быстрый вывод (правда, на более низком уровне выразительности, чем Pellet).

С остальными системами не разбирался. Удачи :)

11 ноября 2009 г. 23:32 пользователь Mikhail Roshchin <rosh...@gmail.com> написал:
Message has been deleted

Nata Keberle

unread,
Nov 11, 2009, 2:58:12 PM11/11/09
to webofdata.ru, nkeb...@gmail.com
Добрый вечер, Андрей!

возможны два ответа на Ваш вопрос:
Во-первых, можно использовать обычный Пролог, например, как здесь
http://www.intuit.ru/department/pl/plprolog/4/
Если же Вам непременно нужно пользоваться логическим выводом, который
возможен для онтологий и баз знаний на их основе, то тогда нужно
вначале решить, какой язык онтологий подходит.
Если решите использовать язык веб-онтологий OWL, то вполне можно
начать с использования готовых встроенных машин вывода в какой-нибудь
редактор онтологий, например, Protégé (http://protege.stanford.edu/
download/registered.html), и выбрать, например, Pellet или Fact++ в
качестве reasoner.
А дальше - можно говорить и о других машинах вывода, как совершенно
верно указали другие участники группы.

Если решите использовать язык RDF, то там можно будет обойтись и Jena,
хотя понятие транзитивности в RDF, кажется, не поддерживается.

С уважением,

Наталья

Ivan Mikhailov

unread,
Nov 11, 2009, 4:40:18 PM11/11/09
to webofdat...@googlegroups.com
> Кроме прямых совпадений, нужно показывать подходящие результаты
> логического вывода.
> Например:
> Джонатан:имеет часть:?
> Нужно вывести:
> Джонатан имеет часть крылья
> Джонатан имеет часть перья

С росписью "почему" лучше Пролог. Там часто встраиваются соответствующие
средства трассировки. Хотя тоже не сахар.

Всего наилучшего,

Иван Михайлов.

P.S. Джонатан --- чайка.

Mikhail Roshchin

unread,
Nov 12, 2009, 2:23:41 AM11/12/09
to webofdat...@googlegroups.com
Natalya - kogda vy pishete, u vas chto to s kodirovkoj - mne prihodyat
ieroglify ot vas...

2009/11/11 Natalya Keberle <nkeb...@gmail.com>:
> 坏抉忌把抑抄 志快折快把, 均扶忱把快抄!
>
> 志抉戒技抉忪扶抑 忱志忘 抉找志快找忘 扶忘 圾忘扮 志抉扭把抉扼:
> 圾抉-扭快把志抑抒, 技抉忪扶抉 我扼扭抉抖抆戒抉志忘找抆 抉忌抑折扶抑抄 妤把抉
> 抖抉忍, 扶忘扭把我技快把, 抗忘抗 戒忱快扼抆
> http://www.intuit.ru/department/pl/plprolog/4/
> 圻扼抖我 忪快 圾忘技 扶快扭把快技快扶扶抉 扶批忪扶抉 扭抉抖抆戒抉志忘找抆扼
> 攸 抖抉忍我折快扼抗我技 志抑志抉忱抉技, 抗抉找抉把抑抄 志抉戒技抉忪快扶 忱抖
> 攸 抉扶找抉抖抉忍我抄 我 忌忘戒 戒扶忘扶我抄 扶忘 我抒 抉扼扶抉志快, 找抉 找
> 抉忍忱忘 扶批忪扶抉 志扶忘折忘抖快 把快扮我找抆, 抗忘抗抉抄 攸戒抑抗 抉扶找
> 抉抖抉忍我抄 扭抉忱抒抉忱我找.
> 圻扼抖我 把快扮我找快 我扼扭抉抖抆戒抉志忘找抆 攸戒抑抗 志快忌-抉扶找抉抖抉
> 忍我抄 OWL, 找抉 志扭抉抖扶快 技抉忪扶抉 扶忘折忘找抆 扼 我扼扭抉抖抆戒抉志
> 忘扶我攸 忍抉找抉志抑抒 志扼找把抉快扶扶抑抒 技忘扮我扶 志抑志抉忱忘 志 抗忘
> 抗抉抄-扶我忌批忱抆 把快忱忘抗找抉把 抉扶找抉抖抉忍我抄, 扶忘扭把我技快把,
> Prot谷g谷 (http://protege.stanford.edu/download/registered.html), 我 志抑忌
> 把忘找抆, 扶忘扭把我技快把, Pellet 我抖我 Fact++ 志 抗忘折快扼找志快
> reasoner.
> 均 忱忘抖抆扮快 - 技抉忪扶抉 忍抉志抉把我找抆 我 抉 忱把批忍我抒 技忘扮我扶
> 忘抒 志抑志抉忱忘, 抗忘抗 扼抉志快把扮快扶扶抉 志快把扶抉 批抗忘戒忘抖我 忱
> 把批忍我快 批折忘扼找扶我抗我 忍把批扭扭抑.
>
> 圻扼抖我 把快扮我找快 我扼扭抉抖抆戒抉志忘找抆 攸戒抑抗 RDF, 找抉 找忘技 技
> 抉忪扶抉 忌批忱快找 抉忌抉抄找我扼抆 我 Jena, 抒抉找攸 扭抉扶攸找我快 找把忘
> 扶戒我找我志扶抉扼找我 志 RDF, 抗忘忪快找扼攸, 扶快 扭抉忱忱快把忪我志忘快找
> 扼攸.
>
> 妊 批志忘忪快扶我快技,
>
> 妖忘找忘抖抆攸
>
>
>> -----妒扼抒抉忱扶抉快 扼抉抉忌投快扶我快-----
>> 妍找: webofdat...@googlegroups.com
>> [mailto:webofdat...@googlegroups.com] 妍找 我技快扶我 Krieger
>> 妍找扭把忘志抖快扶抉: 11 抖我扼找抉扭忘忱忘 2009 把. 19:13
>> 妞抉技批: webofdata.ru
>> 妥快技忘: [webofdata.ru] 妣抉忍我折快扼抗我抄 志抑志抉忱
>>
>> 妝忱把忘志扼找志批抄找快.
>>
>> 妤抉忱扼抗忘忪我找快 抗抉扶抗把快找扶抑快 忘抖忍抉把我找技抑 (抉找抗把抑找
> 抑快 我扼抒抉忱扶我抗我
>> 把快忘抖我戒忘扯我我 - 志抉抉忌投快 戒忘技快折忘找快抖抆扶抉) 抖抉忍我折快
> 扼抗抉忍抉 志抑志抉忱忘.
>>
>> 妝忘忱忘折忘:
>> 圻扼找抆 忌忘戒忘 扳忘抗找抉志 志我忱忘
>>
>> 坏忪抉扶忘找忘扶 快扼找抆 抖忘扼找抉折抗忘
>> 抖忘扼找抉折抗忘 快扼找抆 扭找我扯忘
>> 扭找我扯忘 我技快快找 折忘扼找抆 - 抗把抑抖抆攸
>> 抗把抑抖抆攸 我技快攻找 折忘扼找抆 - 扭快把抆攸
>>
>> "快扼找抆", "我技快快找 折忘扼找抆" - 改找抉 找把忘扶戒我找我志扶抑快 抉找
> 扶抉扮快扶我攸.
>> 妖批忪扶抉 扼找把抉我找抆 抉找志快找抑 扶忘 戒忘扭把抉扼抑 志我忱忘
>> 抉忌抓快抗找1:抉找扶抉扮快扶我快:抉忌抓快抗找2
>> 妣攻忌抑快 改抖快技快扶找抑 戒忘扭把抉扼忘 技抉忍批找 忌抑找抆 批扼找忘扶
> 抉志抖快扶抑 志 "?"
>> (扶快抉扭把快忱快抖忸扶扶抉扼找抆, 找把快忌批攻投忘攸 抗抉扶抗把快找我戒忘
> 扯我我).
>>
>> 妞把抉技快 扭把攸技抑抒 扼抉志扭忘忱快扶我抄, 扶批忪扶抉 扭抉抗忘戒抑志忘
> 找抆 扭抉忱抒抉忱攸投我快
>> 把快戒批抖抆找忘找抑 抖抉忍我折快扼抗抉忍抉 志抑志抉忱忘.
>> 妖忘扭把我技快把:
>> 坏忪抉扶忘找忘扶:我技快快找 折忘扼找抆:?
>> 妖批忪扶抉 志抑志快扼找我:
>> 坏忪抉扶忘找忘扶 我技快快找 折忘扼找抆 抗把抑抖抆攸
>> 坏忪抉扶忘找忘扶 我技快快找 折忘扼找抆 扭快把抆攸
>>
>> 岐 扼找忘抖 扭把抉忍把忘技技我把抉志忘找抆 把快忘抖我戒忘扯我攻, 扶抉 批忪
> 折快把快戒折批把 戒忘技批忱把忸扶抑抄
>> 抗抉忱 扭抉抖批折忘快找扼攸.
>> 妤抉技抉忍我找快 扶快 我戒抉忌把快找忘找抆 志快抖抉扼我扭快忱 戒忘扶抉志
> 抉!

Mikhail Roshchin

unread,
Nov 12, 2009, 2:29:59 AM11/12/09
to webofdat...@googlegroups.com
Кстати, Наталья верно подметила - мы все онтологии, онтологии, а для
поставленной задачи как никто подходит классика Пролога.

Удачи

2009/11/11 Ivan Mikhailov <imikh...@openlinksw.com>:

--

Pavel Lomov

unread,
Nov 22, 2009, 3:01:52 PM11/22/09
to webofdat...@googlegroups.com



Кстати, никто не в курсе, когда планируется следующий rc Pellet'а? Баг в текущей версии сковывает мои и без того пассивные исследовательские порывы...
Вот вышел недавно:
Pellet 2.0 Release - November 16th, 2009 · Kendall Clark
-- 
Программист отдела АСО КФПетрГУ
Ломов Павел
lo...@bel.arctisu.ru
http:\\crider.rork.ru

Alexander Sidorov

unread,
Nov 22, 2009, 10:29:41 PM11/22/09
to webofdat...@googlegroups.com
Ух как кстати! Спасибо :)

23 ноября 2009 г. 2:01 пользователь Pavel Lomov <pala...@gmail.com> написал:
Reply all
Reply to author
Forward
0 new messages