SParQL :: RDF :: технологии семантического поиска :: AWS:Neptune

mayton
Дата: 09.12.2018 22:16:57
Привет.

По статусу. В современных технологиях БД семантические сети - из малоизвестных. Особенно в части
литературы. Намного больше спецификаций чем каких-либо материалов о смыслах и мотивации.

Поэтому я поднимаю тему как некий вопросник.

1. Каковы перспективы AWS:Neptune? Пока цена его эксплуатации слишком дорога для кастомеров
и они отказываются от него погоняв в тестовых enviromnents и поглазев на выписки из счета.
Возможно причина в том что это In-Memory-Ddbms?

Было-бы неплохо поискать бесплатную альтерноативу AWS:Neptune (пускай даже дисковую) и подняв
в EC2 instance обеспечить тот-же Rest-овский интерфейс предложить более дешевое решение (на обсуждение)
пускай даже более медленное по TPS.

2. GraphDb? Что это за продукт? Его демонстрационная версия работает у меня локально как веб-приложение.
Каковы цели его создания? Возможности? Как он конкурирует с AWS:Neptune? Какие есть у него ограничения?

3. Apache Jena. SDF. Я потратил несколько безсонных ночей анализируя возможность намапить семантическую
БД на реляционную. В документах Jena это направление считается не-перспективным и его рекомендуют оставить
в пользу более быстрых.

Но для меня направление реляционок кажется пока привлекательным. Это некая большая гетерогенность в AWS
где можно поднимать легко Maria/Postgres и относительно недорого (дешевле чем Neptune).

Добавте пару слов кто вкурсе.

Зачем в SDF три layouts: LayoutTripleNodesHash, LayoutSimple, LayoutTripleNodesIndex ?

Под-направления TDB/TDB2. Планирую на днях их развернуть и разобраться. Если у кого есть инфа - делитесь.

В данном дискурсе вопросы перформанса пока вообще не стоят. Заказчик ничего не озвучивает и не дает NFR.
Предположительно нагрузки не будет. Нужны только принципиальные возможности. Предполагается хранить
- репозитарий. Транзакции будут не поисковые а - точечные.

4. SparQL или Gremlin? Поверхностно посмотрел уроки. SparQL на примере GraphDB. Мне как старому SQL-щику
SParQL понравился. Он хотя-бы выделен в некий доменный язык. С другой стороны Gremlin похож на JavaScript
но запросы на создание графов выглядят в нем ужасно. Не понимаю пока мотивации. Кто юзал оба - варианта
- велкам. Кидайте 5 копеек.

5. Triple/Quad. Именованные графы. Зачем? Какова цель их создания? Какие RDF-форматы сериализации
наиболее удобны? какие использовали вы? Мне эстетически понравился turtle, на нем в частности
я откатывал учебные tutorials.

6. Прочие графовые Dbms и библиотеки (Guava .e.t.c) я в прошлом году имел наглость
поднять где-то их сравнительный анализ но незакочил. Сейчас могу снова вернуться но
уже в других смыслах а именно - семантический веб. Мне не нужен граф как таковой и
алгоритмы потоков в сетях и разрезы. Мне нужна формальная близость к спекам RDF
и модель хранения пригодная к запросам SparQL.

Keywords: GraphT JUNG Guava Apache Commons Graph GRPH

7. EclipseRDF4j против Apache Jena. Это 2 API для работы с RDF однако Eclipse рекомендован
Amazon в туториалах как основной API для Neptune. Jena с моей точки зрения более привлекательна
как старт опен-сорц решений.

Вобщем тоже поделитесь опытом их использования.

8. Визуализация RDF.

P.S. Я прошу прощения за свое многословие. Возможно я форкну дочерние топики если какая-то тема найдет
отклик. Но пока вот так. Сумбурно.

P.P.S. Основной поинт - отказ от системы AWS:Neptune в пользу Open-SOurce решений но цена
развертывания такого решения в облаке AWS не должна быть дороже Нептуна.

Линки по теме

Jena
https://jena.apache.org

AWS
https://aws.amazon.com/

GraphDb
http://graphdb.ontotext.com/

Rdfj4
http://rdf4j.org/

SparQL
https://www.w3.org/TR/sparql11-overview/

RDF concepts
https://www.w3.org/TR/rdf11-concepts/

Литература по теме:
1. Learning SPARQL: Querying and Updating with SPARQL 1.1
2. Practical RDF

(если вы знаете больше и полезных - докидывайте)

Вышеуказанные книги я не читал пока но заказал в бумажном варианте.
alex55555
Дата: 10.12.2018 14:27:51
mayton
Намного больше спецификаций чем каких-либо материалов о смыслах и мотивации.

Здесь как и во всех оторвавшихся от вас науках - напридумали массу всего, а вы не знакомы с промежуточными результатами. Без промежуточной базы нет возможности понять смысл того, что сидит сверху.

Поэтому займитесь чем-нибудь простым, то есть сваяйте свою сеть, поймите, зачем она вам на самом деле нужна, а для этого именно по тем проблемам, которые для вас актуальны, ищите поясняющий материал. А если пойдёте "сверху", то есть от готовых продуктов, то будете изучать то, что нужно им, а не вам. А им нужны просто ваши деньги. Поэтому они предлагают вам купить производительный сервис исполнения некоторых алгоритмов на очень больших графах. Но конкретно вам производительность и большие графы просто не нужны, но вы уже пошли по их пути и готовы им платить.
exp98
Дата: 10.12.2018 14:31:05
Извините, что вклинился. За ссылки мерси в баку.

"безсонных ночей" -- пара слов по этому поводу, возможно лишних.
Сеть, граф с циклами нужно отображать на модель сети, реализованную средствами РБД (если уж РБД).
Надеюсь речь идёт не о том, чтобы непосредственно "распланарить" данные графа в таблицу - это сумасшедший дом, там 100500 дублирований для боле-мене густой сети. Одна только поддержка обновлений достанет.

Нечто аналогичное в простейшем виде (отображение на модель сети с дальнейшими попытками визуализации) я пробовал лет 15-18 лет назад собственными силами. Что одному было неподъёмно, так это именно варианты визуализации хотелок. С отображением же - достаточно ОК. Как пример "поделочности" - аннотировать бессловарным способом замапленный (автоматически) текст, и варьируя степень краткости. Впрочем как поисковая работа, оказалось не хуже аннотации в ворде тех лет. У меня связка таблиц была 2-х уровневой.

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

Всё же желаю успехов с заказчиком! интересно будет увидеть некоторые результаты ...
exp98
Дата: 10.12.2018 14:38:13
alex55555, мы не знаем, чем мотивировался мэйтон, зато ваш комментарий можно адресовать любому юзеру заимствованных технологий. В частности, зачем программистам изучать фреймворки, стандарты Си Явы ... зачем изучать API виндовса ?.. это всё быдлокодерство, этим что ль исчерпываются интересы прогеров?

Извините за оффтоп.
exp98
Дата: 10.12.2018 17:51:38
Похоже, что тема затронула только меня, а конкретики от меня никакой))

По-прежнему не читал, только пробежался по нек. ссылкам.
SparQL по общей схеме запроса понравился тем, что, если не вдаваться в подробности, то секции выглядят логичными, а схема - обёрткой вокруг SQL-SELECT.
Мои полкопейки к слоям в RDF, может прольёт капельку на возможные смыслы и источники мотивации.
Я провожу параллели со своими наработками. Предыстория, краткая:
+
В 90-х начинался Косультант+. Наряду с юр.базой предлагался некий продукт "технология работы с инвертированными БД".
Это название (наряду с ценами/зарплатами тех лет) позднее непосредственно сыграло роль в занятии, о к-ром я выше написал. Я не знал, что тогда рожают RDF, поэтому моя архитектура была 2-х слойной, и конечно инет-распределённость я не рассматривал.
Тем не менее "семантик вэб" уже обсуждался и в рунете. Потом уже я связывался с Консу-том,где мне рассказали, что уже не продают, а сама технология непосредственно используется в их СУБД для быстрого поиска и связанных зак/актов.
Т.е. у них был не семантический поиск, а типа "гипертекст наизнанку". Ну,для строгих связей оно наверное и правильно.
По сути БД представляла собой индексированный текст, т.е. индексный файл ссылок на файл, содержащий ключевые сочетания буковк (возможно, организованные иерархически).

Это моя вольная интерпретация их технологии, отдалённо к-рую воплощал я.
Но здесь 2 слоя, Мэйтон спрашивавет о 3-х.

На основе изложенного я фантазирую в нулевом приближении, что якобы
- слойХЭш - ИД триплетов,
- слойИндекс - иерархи-ски организованный слой ссылкок на триплеты,
- слойСимпл - не уверен, возможно это аналог обычной "псевдотекстовой" таблицы. В зачатках моей технологии в такой таблице я хранил "тексты", состоявшие из ссылок верхнего уровня, к-рые интерпретировались на основе индексных таблиц. В инд-х таблицах использовалась единственная, но боле-мене общая модель сети.
В RDF, судя по ссылкам ниже, слойХэш включает отношения, а отношения как и сами сущности могут интерпретироваться с предметной т.зр. В моей версии отношения сидели в индексноых таблицах, интерпретация же непосредственно выполнялась мною самим в "ad hoc"-запросах и прогах.
Ну и мне было не до спецязыка - обычный SQL, я практиволся под конкретный круг задач.


эквивалент в СвистиПедии:
RDF
"субъект - предикат - объект" называется триплетом
визуализация хотелок / интерпретация под хотелки = "Для выражения семантики требуются словари (англ. vocabularies), таксономии (англ. taxonomies) и онтологии (англ. ontologies) и наличие в рассматриваемом графе связей с ними."


+
вдруг подскажет:
jena.apache.org/documentation/sdb/database_layouts.html

На русском:
Графовая база данных Толкование
dic.academic.ru/dic.nsf/ruwiki/1738292

SPARQL Толкование
dic.academic.ru/dic.nsf/ruwiki/102698

dic.academic.ru:
Общая схема SPARQL-запроса выглядит так:
PREFIX foo: <http://example.com/resources/>
# префиксные объявления
FROM ...
# источники запроса
SELECT ...
# состав результата 
WHERE {...}
# шаблон запроса
ORDER BY ...
# модификаторы запроса
alex55555
Дата: 10.12.2018 17:55:49
exp98
ваш комментарий можно адресовать любому юзеру заимствованных технологий.

Если юзер сразу бросается писать enterprise-решение на Java предварительно не познакомившись как следует с plain Java, то да, ему можно адресовать мои слова.

Но если бы была хорошая подготовка по основам, тогда использование библиотек enterprise-решений не составило бы труда. Хотя время на изучение решений пришлось бы тратить в любом случае, но во втором изучение было бы эффективным, а в первом - случайным с огромными перепадами эффективности при столкновении с незнакомой концепцией..
exp98
Дата: 10.12.2018 18:07:34
alex55555, я снова оффтоп(
Это возможно было в тепличных условиях СССР, а если сейчас, то в студенчестве. А не когда уже завтра дедлайн для принятия решения. И не в условиях звериного лица нашего олигархата, когда работник д.б. и швец, и жнец, и на дуде игрец.
mayton
Дата: 11.12.2018 01:35:41
exp98
Всё же желаю успехов с заказчиком! интересно будет увидеть некоторые результаты ...

Я вряд-ли смогу вам что-то конкретное рассказать. Мой контракт не подразумевает рассказов.
Но по технологиям которые доступны в книгах и ссылках мы можем спокойно общаться.
Последние пару книг которые я привел в 1-м посту я заказал. Я к сожалению болею букинизмом
и не могу воспринимать электронную литературу. Такой-вот косяк. Тоесть я конечно ее читаю.
Забит весь телефон с Гугл-Драйвом. Но уровень восприятия какой-то другой.
mayton
Дата: 11.12.2018 01:55:11
exp98
На основе изложенного я фантазирую в нулевом приближении, что якобы
- слойХЭш - ИД триплетов,
- слойИндекс - иерархи-ски организованный слой ссылкок на триплеты,
- слойСимпл - не уверен, возможно это аналог обычной "псевдотекстовой" таблицы. В зачатках моей технологии в такой таблице я хранил "тексты", состоявшие из ссылок верхнего уровня, к-рые интерпретировались на основе индексных таблиц. В инд-х таблицах использовалась единственная, но боле-мене общая модель сети.
В RDF, судя по ссылкам ниже, слойХэш включает отношения, а отношения как и сами сущности могут интерпретироваться с предметной т.зр. В моей версии отношения сидели в индексноых таблицах, интерпретация же непосредственно выполнялась мною самим в "ad hoc"-запросах и прогах.
Ну и мне было не до спецязыка - обычный SQL, я практиволся под конкретный круг задач.

Я пока разбирался с SDB/Jena - дебажил некоторые вызовы в БД в части DDL. И заметил что создается
такая схема.
mayton
Дата: 11.12.2018 02:04:28
Simple насколько я понимаю просто отображает список namespaces на одну табличку
а триплеты - на другую.

Прочие модели отказываются от триплетов и нормализуют их (вместо varchar вводят
integer). Схема к сожалению не создавала констрейнтов связности и поэтому приходится
догадываться. Квадры тоже нормализуются. И вводится табличка Nodes. В двух варимантах
с ключом ID+Hash и с ключом Hash. Hash в данном случае - тоже PK. Как это использовать
- непонятно но возможно смысл - в большей консолидации данных вокруг "вершины графа"
или subject. Или в более удобном полнотекстовом поиске.

Я в ближайшее время попробую прогрузить мою учебную RDF-схему во все 3 варианта Layouts и посмотреть
средствами простого SQL как легли данные внутри.