~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 957DFFE33FAD404B254F76DE13984CDC__1716727440 ✰
Заголовок документа оригинал.:
✰ Datalog - Wikipedia ✰
Заголовок документа перевод.:
✰ Ученый-компьютерщик — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Datalog ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/95/dc/957dffe33fad404b254f76de13984cdc.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/95/dc/957dffe33fad404b254f76de13984cdc__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 18:07:07 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 26 May 2024, at 15:44 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Ученый-компьютерщик — Википедия Jump to content

Специалист в области информатики

Из Википедии, бесплатной энциклопедии
Специалист в области информатики
Парадигма Логика , Декларативная
Семья Пролог
Впервые появился 1977 год ; 47 лет назад ( 1977 )
Дисциплина набора текста Слабый
Диалекты
Datomic , .QL , Soufflé , XTDB и т. д.
Под влиянием
Пролог
Под влиянием
SQL

Datalog — это язык декларативного логического программирования . Хотя Datalog синтаксически является подмножеством Prolog , он обычно использует восходящую, а не нисходящую модель оценки. Эта разница приводит к значительному отличию поведения и свойств от Пролога . Он часто используется в качестве языка запросов для дедуктивных баз данных . Datalog применяется для решения задач интеграции данных , работы в сети , анализа программ и многого другого.

Пример [ править ]

Программа Datalog состоит из фактов , которые представляют собой утверждения, которые считаются истинными, и правил , которые говорят, как вывести новые факты из известных фактов. Например, вот два факта, которые означают, что Ксерцес является родителем Брук , а Брук — родителем Дамокла :

родитель  (  xerces  ,   Brooke  ). 
  родитель  (  Брук  ,   Дамокл  ). 

Имена пишутся строчными буквами, поскольку строки, начинающиеся с заглавной буквы, обозначают переменные. Вот два правила:

предок  (  X  ,   Y  )   :-   родитель  (  X  ,   Y  ). 
  предок  (  X  ,   Y  )   :-   родитель  (  X  ,   Z  ),   предок  (  Z  ,   Y  ). 

The :- Символ читается как «если», а запятая читается как «и», поэтому эти правила означают:

  • X является предком Y, если X является родителем Y.
  • X является предком Y, если X является родителем некоторого Z, а Z является предком Y.

Смысл программы определяется как набор всех фактов, которые можно вывести, используя исходные факты и правила. Смысл этой программы определяется следующими фактами:

родитель  (  xerces  ,   Brooke  ). 
  родитель  (  Брук  ,   Дамокл  ). 
  предок  (  ксерцес  ,   ручей  ). 
  предок  (  Брук  ,   Дамокл  ). 
  предок  (  ксерцес  ,   дамокл  ). 

Некоторые реализации Datalog не выводят все возможные факты, а вместо этого отвечают на запросы :

?-   предок  (  xerces  ,   X  ). 

Этот запрос спрашивает: Кто все те X, предком которых является xerces? В этом примере он вернет Brooke и Damocles .

Сравнение с реляционными базами данных [ править ]

Нерекурсивное подмножество Datalog тесно связано с языками запросов для реляционных баз данных , такими как SQL . Следующая таблица отображает концепции журнала данных, реляционной алгебры и SQL :

Специалист в области информатики Реляционная алгебра SQL
Связь Связь Стол
Факт Кортеж Ряд
Правило н/д Материализованный вид
Запрос Выбирать Запрос

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

Схематический перевод из нерекурсивного журнала данных в SQL
s(x, y).
t(y).
r(A, B) :- s(A, B), t(B).
CREATE TABLE s (
  z0 TEXT NONNULL,
  z1 TEXT NONNULL,
  PRIMARY KEY (z0, z1)
);
CREATE TABLE t (
  z0 TEXT NONNULL PRIMARY KEY
);
INSERT INTO s VALUES ('x', 'y');
INSERT INTO t VALUES ('y');
CREATE VIEW r AS
SELECT s.z0, s.z1
FROM s, t
WHERE s.z1 = t.z0;

Синтаксис [ править ]

Программа Datalog состоит из списка правил ( предложений Хорна ). [1] Если константа и переменная представляют собой два счетных набора констант и переменных соответственно, а отношение представляет собой счетный набор символов-предикатов , то следующая грамматика BNF выражает структуру программы регистрации данных:

<  программа  >   ::=   <  правило  >   <  программа  >  |   "" 
  <  правило  >   ::=   <  атом  >  ":-"  <  список-атомов  >  "." 
  <  атом  >   ::=   <  отношение  >  "("  <  список терминов  >  ")" 
  <  список-атомов  >   ::=   <  атом  >  |   <  атом  >  ","  <  атом-список  >  |   "" 
  <  термин  >   ::=   <  константа  >  |   <  переменная  > 
 <  список терминов  >   ::=   <  термин  >  |   <  термин  >  ","  <  список терминов  >  |   "" 
 

Атомы также называют литералами . Атом слева от :-символ называется главой правила; атомы справа — это тело . Каждая программа Datalog должна удовлетворять условию, согласно которому каждая переменная, появляющаяся в заголовке правила, также появляется и в теле (это условие иногда называют ограничением диапазона ). [1] [2]

Существует два распространенных соглашения об именах переменных: использование переменных с заглавной буквы или добавление к ним вопросительного знака. ?. [3]

Обратите внимание, что согласно этому определению Datalog не включает ни отрицание, ни агрегаты; см. § Расширения для получения дополнительной информации об этих конструкциях.

Правила с пустым телом называются фактами . Например, фактом является следующее правило:

р  (  х  )   :-   . 

Набор фактов называется расширенной базой данных или EDB программы Datalog. Набор кортежей, вычисленных с помощью программы Datalog, называется внутренней базой данных или IDB .

Синтаксический сахар [ править ]

Многие реализации логического программирования расширяют приведенную выше грамматику, позволяя записывать факты без :-, вот так:

р  (  х  ). 

Некоторые также позволяют писать 0-арные отношения без скобок, например:

п   :-   q  . 

Это просто аббревиатуры ( синтаксический сахар ); они не влияют на семантику программы.

Семантика [ править ]

Существует три широко используемых подхода к семантике программ Datalog: теоретико-модельный , с фиксированной точкой и теоретико-доказательный . Эти три подхода могут оказаться эквивалентными. [4]

Атом называется основным , если ни один из его подчленов не является переменным. Интуитивно каждая семантика определяет смысл программы как набор всех основных атомов, которые можно вывести из правил программы, исходя из фактов.

Теоретическая модель [ править ]

Правило называется заземленным, если все его атомы (головка и тело) заземлены. Основное правило R 1 является основным примером другого правила R 2 , если R 1 является результатом замены констант для всех переменных в R 2 . Базой Эрбрана программы Datalog является набор всех основных атомов, которые можно создать с помощью констант, представленных в программе. Модель Эрбрана программы Datalog — это наименьшее подмножество базы Эрбрана, так что для каждого основного экземпляра каждого правила в программе, если атомы в теле правила находятся в наборе, то и голова тоже. [5] Теоретико-модельная семантика определяет минимальную модель Эрбрана как смысл программы.

Фиксированная точка [ править ]

Пусть I набор мощности программы P. базы Эрбрана Оператор непосредственного следствия для P — это отображение T из I в I , которое добавляет все новые основные атомы, которые можно вывести из правил программы за один шаг. Семантика наименьшей фиксированной точки определяет, что наименьшая фиксированная точка T является смыслом программы; это совпадает с минимальной моделью Эрбрана. [6]

Семантика фиксированной точки предлагает алгоритм вычисления минимальной модели: начните с набора основных фактов в программе, затем неоднократно добавляйте последствия правил, пока не будет достигнута фиксированная точка. Этот алгоритм называется наивной оценкой .

Теоретико-доказательство [ править ]

Дерево доказательств, показывающее происхождение основного атома path(x, z) из программы
край  (  х  ,   у  ). 
  край  (  у  ,   z  ). 
  путь  (  A  ,   B  )   :-  
   ребро  (  A  ,   B  ). 
  путь  (  A  ,   C  )   : —  
   путь  (  A  ,   B  ),  
   ребро  (  B  ,   C  ). 

Теоретико-доказательная семантика определяет смысл программы Datalog как набора фактов с соответствующими деревьями доказательств . Интуитивно дерево доказательства показывает, как вывести факт из фактов и правил программы.

Кому-то может быть интересно узнать, появляется или нет конкретный основной атом в минимальной модели Эрбрана программы Datalog, возможно, не особо заботясь об остальной части модели. Чтение сверху вниз деревьев доказательств, описанных выше, подсказывает алгоритм вычисления результатов таких запросов . Это чтение информирует алгоритм разрешения SLD , который формирует основу для оценки Пролога .

Оценка [ править ]

Существует множество различных способов оценки программы Datalog с разными характеристиками производительности.

снизу вверх » Стратегии оценки «

Стратегии оценки «снизу вверх» начинаются с фактов в программе и многократно применяют правила до тех пор, пока не будет установлена ​​какая-либо цель или запрос, или пока не будет создана полная минимальная модель программы.

Наивная оценка [ править ]

Наивная оценка отражает семантику фиксированных точек для программ Datalog. Наивная оценка использует набор «известных фактов», который инициализируется фактами в программе. Он продолжается путем многократного перебора всех основных экземпляров каждого правила в программе. Если каждый атом тела основного экземпляра входит в набор известных фактов, то к набору известных фактов добавляется головной атом. Этот процесс повторяется до тех пор, пока не будет достигнута фиксированная точка, и больше никаких фактов невозможно будет вывести. Наивная оценка создает полную минимальную модель программы. [7]

Полунаивная оценка [ править ]

Полунаивная оценка — это стратегия оценки снизу вверх, которая может быть асимптотически быстрее, чем наивная оценка. [8]

производительности Соображения

Параллельный механизм Datalog был протестирован на суперкомпьютере Theta в Аргоннской национальной лаборатории . [9]

И наивная, и полунаивная оценка оценивают рекурсивные правила Datalog, многократно применяя их к набору известных фактов до тех пор, пока не будет достигнута фиксированная точка. На каждой итерации правила выполняются только на «один шаг», т. е. нерекурсивно. Как упоминалось выше , каждое нерекурсивное правило Datalog точно соответствует конъюнктивному запросу . Таким образом, многие методы теории баз данных , используемые для ускорения конъюнктивных запросов, применимы к восходящей оценке Datalog, например:

Многие такие методы реализованы в современных восходящих механизмах регистрации данных, таких как Soufflé . Некоторые механизмы регистрации данных напрямую интегрируют базы данных SQL. [17]

Оценка Datalog «снизу вверх» также допускает распараллеливание . Механизмы параллельной регистрации данных обычно делятся на две парадигмы:

вниз сверху Стратегии оценки

Разрешение SLD является надежным и полным для программ Datalog.

Магические наборы [ править ]

Стратегии оценки сверху вниз начинаются с запроса или цели . Стратегии оценки снизу вверх могут отвечать на запросы, вычисляя всю минимальную модель и сопоставляя с ней запрос, но это может быть неэффективно, если ответ зависит только от небольшого подмножества всей модели. Алгоритм магических наборов использует программу регистрации данных и запрос и создает более эффективную программу, которая вычисляет тот же ответ на запрос, все еще используя оценку снизу вверх. [23] Было показано, что вариант алгоритма магических множеств позволяет создавать программы, которые при оценке с использованием полунаивной оценки столь же эффективны, как и оценка сверху вниз. [24]

Сложность [ править ]

Формулировка проблемы принятия решения для оценки Datalog следующая: Учитывая программу Datalog P, разделенную на набор фактов (EDB) E , набор правил R и основной атом A , находится ли A в минимальной модели P ? В этой формулировке существует три варианта вычислительной сложности оценки программ Datalog: [25]

  • Сложность данных — это сложность проблемы решения, когда A и E являются входными данными, а R фиксировано.
  • Сложность программы это сложность проблемы решения, когда A и R являются входными данными, а E фиксировано.
  • Комбинированная сложность — это сложность проблемы решения, когда A , E и R являются входными данными.

Что касается сложности данных, проблема решения для Datalog является P-полной . Что касается сложности программы, проблема решения является EXPTIME-полной . В частности, оценка программ Datalog всегда завершается; Журнал данных не является полным по Тьюрингу .

Некоторые расширения Datalog не сохраняют эти ограничения сложности. Расширения, реализованные в некоторых механизмах регистрации данных , такие как алгебраические типы данных, могут даже сделать полученный язык полным по Тьюрингу.

Расширения [ править ]

В Datalog было сделано несколько расширений, например, для поддержки отрицания, агрегатных функций , неравенств, для объектно-ориентированного программирования или для разрешения дизъюнкций в качестве заголовков предложений . Эти расширения оказывают существенное влияние на семантику языка и реализацию соответствующего интерпретатора.

Журнал данных является синтаксическим подмножеством Пролога , дизъюнктивного журнала данных , программирования наборов ответов , DatalogZ и программирования логики ограничений . При оценке программы с набором ответов программа Datalog дает один набор ответов, который и является ее минимальной моделью. [26]

Многие реализации Datalog расширяют Datalog дополнительными функциями; см. в § Механизмы регистрации данных дополнительную информацию .

Агрегация [ править ]

Журнал данных может быть расширен для поддержки агрегатных функций . [27]

Известные механизмы регистрации данных, реализующие агрегацию, включают:

Отрицание [ править ]

Добавление отрицания в Datalog усложняет его семантику, что приводит к появлению совершенно новых языков и стратегий оценки. Например, язык, который получается в результате добавления отрицания к семантике стабильной модели , в точности представляет собой программирование множества ответов .

Стратифицированное отрицание может быть добавлено в Datalog, сохраняя при этом его теоретико-модельную семантику и семантику фиксированной точки. Известные механизмы регистрации данных, реализующие послойное отрицание, включают:

Сравнение с Прологом [ править ]

В отличие от Пролога , операторы программы Datalog могут быть записаны в любом порядке. В Datalog нет оператора обрезки Пролога . Это делает Datalog полностью декларативным языком .

В отличие от Пролога, Datalog

  • запрещает сложные термины в качестве аргументов предикатов , например, p(x, y) допустимо, но не p(f(x), y),
  • запрещает отрицание,
  • требует, чтобы каждая переменная, появляющаяся в заголовке предложения, также появлялась в литерале в теле предложения.

В этой статье речь идет в первую очередь о журнале данных без отрицания (см. также Синтаксис и семантика логического программирования § Расширение журнала данных с помощью отрицания ). Однако стратифицированное отрицание является распространенным дополнением к Datalog; В следующем списке Пролог противопоставляется Datalog с многослойным отрицанием. Журнал данных со слоистым отрицанием

  • также запрещает сложные термины в качестве аргументов предикатов ,
  • требует, чтобы каждая переменная, появляющаяся в заголовке предложения, также присутствовала в положительном (т. е. не отрицательном) атоме в теле предложения,
  • требует, чтобы каждая переменная, появляющаяся в отрицательном литерале тела предложения, также появлялась в некотором положительном литерале тела предложения. [30] [ ненадежный источник? ]

Выразительность [ править ]

Datalog обобщает многие другие языки запросов. Например, конъюнктивные запросы и объединение конъюнктивных запросов могут быть выражены в журнале данных. Datalog также может выражать обычные запросы пути .

Когда мы рассматриваем упорядоченные базы данных , то есть базы данных с отношением порядка в их активной области , то из теоремы Иммермана-Варди следует, что выразительная сила Datalog в точности равна выразительной силе класса PTIME : свойство может быть выражено в Datalog тогда и только тогда, когда оно вычислимо за полиномиальное время. [31]

Проблема ограниченности для Datalog спрашивает, является ли программа Datalog ограниченной , т. е. максимальная глубина рекурсии, достигнутая при оценке программы во входной базе данных, может быть ограничена некоторой константой. Другими словами, этот вопрос спрашивает, можно ли переписать программу Datalog как нерекурсивную программу Datalog или, что то же самое, как объединение конъюнктивных запросов . Решение проблемы ограниченности произвольных программ Datalog неразрешимо . [32] но ее можно сделать разрешимой, ограничившись некоторыми фрагментами журнала данных.

Механизмы регистрации данных [ править ]

Системы, реализующие языки, основанные на Datalog, будь то компиляторы , интерпретаторы , библиотеки или встроенные DSL , называются механизмами Datalog . Механизмы регистрации данных часто реализуют расширения Datalog, расширяя его дополнительными типами данных , интерфейсами внешних функций или поддержкой определяемых пользователем решеток . Такие расширения могут позволять писать незавершаемые или иным образом нечеткие программы. [ нужна цитата ]

Вот краткий список систем, которые либо основаны на Datalog, либо предоставляют интерпретатор Datalog:

Бесплатное программное обеспечение/с открытым исходным кодом [ править ]

Написано в Имя Попробуйте онлайн Внешняя база данных Описание Лицензия
С XSB Система логического программирования и дедуктивной базы данных для Unix и Microsoft Windows с таблицами, обеспечивающими завершение и эффективность, подобные журналу данных, включая инкрементную оценку. [33] ГНУ ЛГПЛ
С++ Коралл [34] Дедуктивная система баз данных, написанная на C++, с полунаивной оценкой журнала данных. Разработан в 1988-1997 годах. специальная лицензия, бесплатная для некоммерческого использования
ДЛВ [35] Расширение журнала данных, поддерживающее разделительные заголовки. специальная лицензия, бесплатная для академического и некоммерческого использования в образовательных целях, а также для использования некоммерческими организациями [36]
Интер4QL [37] интерпретатор командной строки с открытым исходным кодом языка запросов 4QL, подобного Datalog, реализованный на C++ для Windows, Mac OS X и Linux. Отрицание допускается в заголовках и телах правил, а также в рекурсии. Лицензия GNU GPL v3
РДФокс [38] в памяти Высокопроизводительное тройное хранилище RDF с обоснованием OWL и Datalog. Реализует алгоритм FBF для инкрементной оценки, расширяя Datalog за счет включения послойного отрицания и равенства. Возможность работы в конфигурации высокой доступности . специальная лицензия, бесплатная для некоммерческого использования [39]
Суфле Да файл, в памяти, sqlite3 механизм Datalog с открытым исходным кодом, который имеет компилятор, преобразующий Datalog в высокопроизводительный параллельный код C++, и высокопроизводительный интерпретатор; специально разработан для сложных запросов к журналу данных по большим наборам данных, встречающихся в контексте статического анализа программ. УПЛ v1.0
Клоджур Каскалог Хадуп библиотека Clojure для запроса данных, хранящихся в кластерах Hadoop. Апач
Журнал данных Clojure дополнительная библиотека, реализующая аспекты Datalog Публичная лицензия Eclipse 1.0
XTDB (ранее Crux) Да Апач Кафка База данных общего назначения с «несвязанной» архитектурой, использующая лог-ориентированную потоковую передачу документов и транзакций для достижения значительной архитектурной гибкости и элегантного горизонтального масштабирования. Подключаемые компоненты включают Kafka, RocksDB и LMDB. Индексы являются битемпоральными и по умолчанию поддерживают запросы к журналу данных на определенный момент времени. Предоставляются API Java и HTTP. МОЯ лицензия
датаскрипт в памяти Неизменяемая база данных и механизм запросов журнала данных, работающий в браузере. Публичная лицензия Eclipse 1.0
Даталевин ЛМДБ Ответвление Datascript, оптимизированное для долговременного хранилища LMDB. Публичная лицензия Eclipse 1.0
Датапоход файл, в памяти Ответвление Datascript с надежным бэкэндом, использующим дерево автостопа . Публичная лицензия Eclipse 1.0
Нага / Асами файл, в памяти Комбинация графовой базы данных (Asami) и системы обработки правил (Naga), которая оценивает собственный синтаксис журнала данных и выполняется с использованием базы данных. Запускается в браузерах (память), на JVM (память/файлы) или изначально (память/файлы). Публичная лицензия Eclipse 1.0
Эрланг Специалист в области информатики Библиотека предназначена для запроса и формализации связи n-арных потоков с использованием журнала данных. Он реализует механизм специальных запросов, используя упрощенную версию общей парадигмы логического программирования . Библиотека облегчает разработку интеграции данных, обмена информацией и семантических веб-приложений. Апач v2
Идти Мангл Mangle — это язык программирования для дедуктивного программирования баз данных. Это расширение Datalog с различными расширениями, такими как агрегирование, вызовы функций и дополнительная проверка типов. Апач v2
Хаскелл Вот и все [40] Dyna — это декларативный язык программирования для статистического программирования искусственного интеллекта. Язык основан на Datalog, поддерживает как прямую, так и обратную цепочку, а также инкрементную оценку. GNU AGPL v3
Джава AbcDatalog [41] AbcDatalog — это реализация языка логического программирования Datalog с открытым исходным кодом, написанная на Java. Он предоставляет готовые к использованию реализации общих алгоритмов оценки Datalog, а также некоторые экспериментальные многопоточные механизмы оценки. Он поддерживает функции языка, выходящие за рамки основного журнала данных, такие как явная (не)унификация терминов и послойное отрицание. Кроме того, AbcDatalog легко расширяется за счет новых механизмов оценки и новых языковых функций. БСД
ИРИС [42] IRIS расширяет Datalog функциональными символами, встроенными предикатами, локально стратифицированными или нестратифицированными логическими программами (с использованием обоснованной семантики), небезопасными правилами и типами данных схемы XML. GNU LGPL v2.1
Йена инфраструктура семантической сети, включающая реализацию журнала данных как часть механизма правил общего назначения, обеспечивающего поддержку OWL и RDFS . [43] Апач v2
Сосиалайт [44] SociaLite — это вариант регистрации данных для крупномасштабного анализа графиков, разработанный в Стэнфорде. Апач v2
Грааль [45] Graal — это набор инструментов Java, предназначенный для запросов к базам знаний в рамках экзистенциальных правил, также известных как Datalog+/-. CeCILL v2.1
Фликс Да Язык функционального и логического программирования, вдохновленный Datalog, дополненный определяемыми пользователем решетками и монотонными функциями фильтрации/передачи. Апач v2
Два Специалист в области информатики [46] Да [47] легкая дедуктивная система баз данных. ГНУ ЛГПЛ
OCaml специалист по данным [48] Реализация журнала данных в памяти для OCaml с восходящими и нисходящими алгоритмами. BSD 2-пункт
Пролог ПРИНАДЛЕЖАЩИЙ [49] реализация с открытым исходным кодом, которая будет использоваться для обучения Datalog на курсах ГНУ ЛГПЛ
Питон pyDatalog 11 диалектов SQL добавляет логическое программирование в набор инструментов Python. Он может выполнять логические запросы к базам данных или объектам Python, а также использовать логические предложения для определения поведения классов Python. ГНУ ЛГПЛ
Ракетка Журнал данных для ракетки [50] ГНУ ЛГПЛ
Датафан [51] Обобщенный журнал данных по полурешеткам ГНУ ЛГПЛ
Рубин цветение / бутон Ruby DSL для программирования с конструкциями, ориентированными на данные, на основе расширения Dedalus для Datalog, которое добавляет к логике временное измерение. BSD 3-пункт
Ржавчина Креп Crepe — это библиотека, которая позволяет писать программы декларативной логики на Rust с синтаксисом, подобным журналу данных. Он предоставляет процедурный макрос, который генерирует эффективный и безопасный код и легко взаимодействует с программами Rust. Он также поддерживает такие расширения, как послойное отрицание, полунаивное вычисление и вызов внешних функций в правилах журнала данных. Лицензия MIT / Apache 2.0
Датафрог Datafrog — это легкий движок регистрации данных, предназначенный для встраивания в другие программы Rust. Лицензия MIT / Apache 2.0
ТерминусБД В памяти TerminusDB — это графовая база данных и хранилище документов с открытым исходным кодом. Предназначен для совместного создания приложений с интенсивным использованием данных и графов знаний . Апач v2
ДДлог [52] DDlog — это инкрементальный механизм типизированной регистрации данных в памяти. Он хорошо подходит для написания программ, которые постепенно обновляют свои выходные данные в ответ на изменения входных данных. Программист DDlog задает желаемое сопоставление ввода-вывода декларативным образом, используя диалект Datalog. Затем компилятор DDlog синтезирует эффективную инкрементальную реализацию на Rust. DDlog основан на дифференциальном потоке данных. [53] библиотека. Он предлагает привязки для Java, C и Go. МОЯ лицензия
Ткл tclbdd [54] Реализация на основе бинарных диаграмм решений . Создан для поддержки разработки оптимизирующего компилятора для Tcl. БСД
Другие или неизвестные языки бдддбдб [55] реализация Datalog, выполненная в Стэнфордском университете . Он в основном используется для запроса байт-кода Java, включая анализ точек на большие программы Java. Он использует BDD внутри себя. ГНУ ЛГПЛ
КонцепцияБаза [56] дедуктивная и объектно-ориентированная система баз данных, основанная на оценщике запросов Datalog: Пролог для триггерных процедур и перезаписей, аксиоматизированный Datalog под названием «Телос» для (мета)моделирования. В основном используется для концептуального моделирования и метамоделирования. BSD 2-пункт

Несвободное программное обеспечение [ править ]

  • Datomic — это распределенная база данных, предназначенная для обеспечения масштабируемых, гибких и интеллектуальных приложений, работающих на новых облачных архитектурах. В качестве языка запросов он использует Datalog.
  • FoundationDB предоставляет бесплатную привязку базы данных для pyDatalog и руководство по ее использованию. [57]
  • Leapsight Semantic Dataspace (LSD) — это распределенная дедуктивная база данных, обеспечивающая высокую доступность, отказоустойчивость, простоту эксплуатации и масштабируемость. LSD использует Leaplog (реализация журнала данных) для запросов и рассуждений и был создан Leapsight. [58]
  • LogicBlox — коммерческая реализация Datalog, используемая для веб-приложений планирования розничной торговли и страхования.
  • совместимая с RDF, Profium Sense — это графовая база данных, написанная на Java. Он обеспечивает поддержку оценки журнала данных для определенных пользователем правил.
  • .QL — коммерческий объектно-ориентированный вариант Datalog, созданный Semmle для анализа исходного кода с целью обнаружения уязвимостей безопасности. [59]
  • SecPAL — язык политики безопасности, разработанный Microsoft Research . [60]
  • Stardog — это графовая база данных , реализованная на Java . Он обеспечивает поддержку RDF и всех профилей OWL 2 , предоставляя широкие возможности анализа, включая оценку журнала данных.
  • StrixDB: коммерческое хранилище графов RDF, SPARQL совместимое со с API Lua и возможностями вывода журнала данных. Может использоваться как модуль httpd ( Apache HTTP Server ) или автономно (хотя бета-версии находятся под лицензией Perl Artistic License 2.0).

и влияние Использование

Datalog весьма ограничен в своей выразительности. Он не является полным по Тьюрингу и не включает базовые типы данных, такие как целые числа или строки . Такая экономия привлекательна с теоретической точки зрения, но это означает, что Datalog сам по себе редко используется в качестве языка программирования или языка представления знаний . [61] Большинство механизмов Datalog реализуют существенные расширения Datalog. Однако Datalog оказывает сильное влияние на такие реализации, и многие авторы не удосуживаются отличить их от Datalog, представленного в этой статье. Соответственно, приложения, обсуждаемые в этом разделе, включают в себя приложения реалистичных реализаций языков на основе Datalog.

Datalog применяется для решения задач интеграции данных , извлечения информации , сетей , безопасности , облачных вычислений и машинного обучения . [62] [63] Google разработала расширение Datalog для обработки больших данных . [64]

Datalog нашел применение в статическом анализе программ . [65] Диалект Суфле использовался для написания анализа указателей для Java и анализа потока управления для Scheme . [66] [67] Datalog был интегрирован с решателями SMT , чтобы упростить написание некоторых статических анализов. [68] Диалект Flix также подходит для написания статического анализа программ. [69]

Некоторые широко используемые системы баз данных включают идеи и алгоритмы, разработанные для Datalog. Например, стандарт SQL:1999 включает рекурсивные запросы , а алгоритм Magic Sets (изначально разработанный для более быстрой оценки запросов журнала данных) реализован в IBM DB2 . [70]

История [ править ]

Истоки Datalog восходят к началу логического программирования , но как отдельная область он стал известен примерно в 1977 году, когда Эрве Галлер и Джек Минкер организовали семинар по логике и базам данных . [71] Дэвиду Майеру приписывают создание термина Datalog. [72]

См. также [ править ]

Примечания [ править ]

  1. ^ Перейти обратно: а б Кери, Готтлоб и Танка 1989 , с. 146.
  2. ^ Эйснер, Джейсон; Филардо, Натаниэль В. (2011). «Dyna: расширение журнала данных для современного ИИ» . Ин де Моор, Оге; Готтлоб, Георг; Фурче, Тим; Селлерс, Эндрю (ред.). Журнал данных перезагружен . Конспекты лекций по информатике. Том. 6702. Берлин, Гейдельберг: Springer. стр. 181–220. дои : 10.1007/978-3-642-24206-9_11 . ISBN  978-3-642-24206-9 .
  3. ^ Майер, Дэвид; Текле, К. Тункай; Кифер, Майкл; Уоррен, Дэвид С. (01 сентября 2018 г.), «Журнал данных: концепции, история и перспективы» , Декларативное логическое программирование: теория, системы и приложения , том. 20, Ассоциация вычислительной техники и Morgan & Claypool, стр. 3–100, doi : 10.1145/3191315.3191317 , ISBN.  978-1-970001-99-0 , S2CID   69379310 , получено 2 марта 2023 г.
  4. ^ Ван Эмден, Миннесота; Ковальский, Р.А. (1 октября 1976 г.). «Семантика логики предикатов как языка программирования» . Журнал АКМ . 23 (4): 733–742. дои : 10.1145/321978.321991 . ISSN   0004-5411 . S2CID   11048276 .
  5. ^ Кери, Готтлоб и Танка 1989 , стр. 149.
  6. ^ Кери, Готтлоб и Танка 1989 , стр. 150.
  7. ^ Кери, Готтлоб и Танка 1989 , стр. 154.
  8. ^ Альварес-Пикальо, Марио; Эйерс-Тейлор, Алекс; Пейтон Джонс, Майкл; Онг, К.-Х. Люк (2019). «Исправление дополнительных вычислений: производные от фиксированных точек и рекурсивная семантика журнала данных» . В Кайресе, Луис (ред.). Языки и системы программирования . Конспекты лекций по информатике. Том. 11423. Чам: Springer International Publishing. стр. 525–552. дои : 10.1007/978-3-030-17184-1_19 . ISBN  978-3-030-17184-1 . S2CID   53430789 .
  9. ^ Перейти обратно: а б Гилрей, Томас; Сахеболамри, Араш; Кумар, Сидхарт; Мичински, Кристофер (21 ноября 2022 г.). «Структурированный вывод высшего порядка с параллельными данными». arXiv : 2211.11573 [ cs.PL ].
  10. ^ Суботич, Павел; Джордан, Герберт; Чанг, Лицзюнь; Фекете, Алан; Шольц, Бернхард (01 октября 2018 г.). «Автоматический выбор индекса для крупномасштабных вычислений регистрации данных» . Труды Фонда VLDB . 12 (2): 141–153. дои : 10.14778/3282495.3282500 . ISSN   2150-8097 . S2CID   53569679 .
  11. ^ Антониадис, Тони; Триантафиллу, Константинос; Смарагдакис, Яннис (18 июня 2017 г.). «Портирование дупа в суфле» . Материалы 6-го международного семинара ACM SIGPLAN по новейшим достижениям в программном анализе . SOAP 2017. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 25–30. дои : 10.1145/3088515.3088522 . ISBN  978-1-4503-5072-3 . S2CID   3074689 . «Механизм LogicBlox выполняет полную оптимизацию запросов».
  12. ^ Арка, Сэмюэл; Ху, Сяовэнь; Чжао, Дэвид; Суботич, Павел; Шольц, Бернхард (2022). «Создание оптимизатора соединений для суфле» . В Вильянуэва, Алисия (ред.). Логический синтез и преобразование программ . Конспекты лекций по информатике. Том. 13474. Чам: Springer International Publishing. стр. 83–102. дои : 10.1007/978-3-031-16767-6_5 . ISBN  978-3-031-16767-6 .
  13. ^ Наппа, Патрик; Чжао, Дэвид; Суботич, Павел; Шольц, Бернхард (2019). «Быстрые параллельные отношения эквивалентности в компиляторе журналов данных» . 2019 28-я Международная конференция по параллельным архитектурам и методам компиляции (PACT) . стр. 82–96. дои : 10.1109/PACT.2019.00015 . ISBN  978-1-7281-3613-4 . S2CID   204827819 . Проверено 28 ноября 2023 г.
  14. ^ Джордан, Герберт; Суботич, Павел; Чжао, Дэвид; Шольц, Бернхард (17 февраля 2019 г.). «Бри: специализированная система для одновременной регистрации данных» . Материалы 10-го международного семинара по моделям программирования и приложениям для многоядерных и многоядерных процессоров . Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 31–40. дои : 10.1145/3303084.3309490 . ISBN  978-1-4503-6290-0 . S2CID   239258588 .
  15. ^ Уэйли, Джон; Авотс, Дзинтарс; Карбин, Майкл; Лам, Моника С. (2005). «Использование журнала данных с двоичными диаграммами решений для анализа программ» . Ин Йи, Квангын (ред.). Языки и системы программирования . Конспекты лекций по информатике. Том. 3780. Берлин, Гейдельберг: Springer. стр. 97–118. дои : 10.1007/11575467_8 . ISBN  978-3-540-32247-4 . S2CID   5223577 .
  16. ^ Ходер, Крыштоф; Бьёрнер, Николай; де Моура, Леонардо (2011). «μZ – эффективный механизм для фиксированных точек с ограничениями» . В Гопалакришнане — Ганеша; Кадир, Шаз (ред.). Компьютерная проверка . Конспекты лекций по информатике. Том. 6806. Берлин, Гейдельберг: Springer. стр. 457–462. дои : 10.1007/978-3-642-22110-1_36 . ISBN  978-3-642-22110-1 .
  17. ^ Фан, Живэй; Чжу, Цзяньцяо; Чжан, Цзую; Альбаргути, Авс; Кутрис, Парасхос; Патель, Джигнеш (10 декабря 2018 г.). «Масштабирование обработки журналов данных в памяти: наблюдения и методы». arXiv : 1812.03975 [ cs.DB ].
  18. ^ Shovon, Ahmedur Rahman; Dyken, Landon Richard; Green, Oded; Gilray, Thomas; Kumar, Sidharth (November 2022). "Accelerating Datalog applications with cuDF". 2022 IEEE/ACM Workshop on Irregular Applications: Architectures and Algorithms (IA3). IEEE. pp. 41–45. doi:10.1109/IA356718.2022.00012. ISBN 978-1-6654-7506-8. S2CID   256565728 .
  19. ^ Jordan, Herbert; Subotić, Pavle; Zhao, David; Scholz, Bernhard (2019-02-16). "A specialized B-tree for concurrent datalog evaluation". Proceedings of the 24th Symposium on Principles and Practice of Parallel Programming. PPoPP '19. New York, NY, USA: Association for Computing Machinery. pp. 327–339. doi:10.1145/3293883.3295719. ISBN 978-1-4503-6225-2. S2CID 59617209.
  20. ^ Wu, Jiacheng; Wang, Jin; Zaniolo, Carlo (2022-06-11). "Optimizing Parallel Recursive Datalog Evaluation on Multicore Machines". Proceedings of the 2022 International Conference on Management of Data. SIGMOD '22. New York, NY, USA: Association for Computing Machinery. pp. 1433–1446. doi:10.1145/3514221.3517853. ISBN 978-1-4503-9249-5. S2CID 249578825. "These approaches implement the idea of parallel bottom-up evaluation by splitting the tables into disjoint partitions via discriminating functions, such as hashing, where each partition is then mapped to one of the parallel workers. After each iteration, workers coordinate with each other to exchange newly generated tuples where necessary.
  21. ^ Shaw, Marianne; Koutris, Paraschos; Howe, Bill; Suciu, Dan (2012). "Optimizing Large-Scale Semi-Naïve Datalog Evaluation in Hadoop". In Barceló, Pablo; Pichler, Reinhard (eds.). Datalog in Academia and Industry. Lecture Notes in Computer Science. Vol. 7494. Berlin, Heidelberg: Springer. pp. 165–176. doi:10.1007/978-3-642-32925-8_17. ISBN 978-3-642-32925-8.
  22. ^ Shkapsky, Alexander; Yang, Mohan; Interlandi, Matteo; Chiu, Hsuan; Condie, Tyson; Zaniolo, Carlo (2016-06-14). "Big Data Analytics with Datalog Queries on Spark". Proceedings of the 2016 International Conference on Management of Data. SIGMOD '16. Vol. 2016. New York, NY, USA: Association for Computing Machinery. pp. 1135–1149. doi:10.1145/2882903.2915229. ISBN 978-1-4503-3531-7. PMC 5470845. PMID 28626296.
  23. ^ Balbin, I.; Port, G. S.; Ramamohanarao, K.; Meenakshi, K. (1991-10-01). "Efficient bottom-up computation of queries on stratified databases". The Journal of Logic Programming. 11 (3): 295–344. doi:10.1016/0743-1066(91)90030-S. ISSN 0743-1066.
  24. ^ Ullman, J. D. (1989-03-29). "Bottom-up beats top-down for datalog". Proceedings of the eighth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems - PODS '89. New York, NY, USA: Association for Computing Machinery. pp. 140–149. doi:10.1145/73721.73736. ISBN 978-0-89791-308-9. S2CID 13269547.
  25. ^ Dantsin, Evgeny; Eiter, Thomas; Gottlob, Georg; Voronkov, Andrei (2001-09-01). "Complexity and expressive power of logic programming". ACM Computing Surveys. 33 (3): 374–425. doi:10.1145/502807.502810. ISSN 0360-0300.
  26. ^ Бембенек, Аарон; Гринберг, Майкл; Чонг, Стивен (11 января 2023 г.). «От SMT к ASP: подходы к решению задач синтеза журналов данных как выбора правил на основе решателей» . Труды ACM по языкам программирования . 7 (ПОПЛ): 7:185–7:217. дои : 10.1145/3571200 . S2CID   253525805 .
  27. ^ Дзаниоло, Карло; Ян, Мохан; Дас, Ариям; Шкапский, Александр; Конди, Тайсон; Интерланди, Маттео (сентябрь 2017 г.). «Семантика Fixpoint и оптимизация рекурсивных программ регистрации данных с агрегатами *» . Теория и практика логического программирования . 17 (5–6): 1048–1065. arXiv : 1707.05681 . дои : 10.1017/S1471068417000436 . ISSN   1471-0684 . S2CID   6272867 .
  28. ^ «Глава 7. Правила — Справочное руководство LogicBlox 3.10» . Developer.logicblox.com . Проверено 4 марта 2023 г.
  29. ^ «6.4. Отрицание — Справочное руководство LogicBlox 3.10» . Developer.logicblox.com . Проверено 4 марта 2023 г. «Кроме того, отрицание допускается только в том случае, если платформа может определить способ разделения всех правил и ограничений, использующих отрицание».
  30. ^ Майкл Лам; Доктор Син Мин Ли. "Журнал данных" . Курс CS 157А . ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ САН-ХОСЕ, факультет компьютерных наук. Архивировано из оригинала 25 марта 2017 г.
  31. ^ Колайтис, Фокион Г.; Варди, Моше Ю. (2 апреля 1990 г.). «О выразительной силе регистрации данных: инструменты и практический пример» . Журнал компьютерных и системных наук . АКМ: 61–71. дои : 10.1145/298514.298542 . ISBN  978-0-89791-352-2 .
  32. ^ Хиллебранд, Герд Г; Канеллакис, Пэрис С; Майрсон, Гарри Дж; Варди, Моше Ю (1 ноября 1995 г.). «Неразрешимые проблемы ограниченности для программ регистрации данных» . Журнал логического программирования . 25 (2): 163–190. дои : 10.1016/0743-1066(95)00051-К . ISSN   0743-1066 .
  33. ^ Система XSB, версия 3.7.x, Том 1: Руководство программиста (PDF) .
  34. ^ Веб-страница проекта базы данных кораллов .
  35. ^ «DLVSYSTEM Srl | DLV» . www.dlvsystem.com . Проверено 29 ноября 2018 г. .
  36. ^ «DLVSYSTEM Srl | DLV» . www.dlvsystem.com . Проверено 29 ноября 2018 г.
  37. ^ 4QL .
  38. ^ Веб-страница RDFox .
  39. ^ Лицензия RDFox , заархивировано из оригинала 21 февраля 2018 г. , получено 29 ноября 2018 г.
  40. ^ «Dyna», веб-страница Dyna , заархивировано из оригинала 17 января 2016 г. , получено 7 ноября 2016 г.
  41. ^ AbcDatalog .
  42. ^ Ирис разумница .
  43. ^ «Йена» . Исходная кузница .
  44. ^ Домашняя страница SociaLite , заархивировано из оригинала 11 сентября 2017 г. , получено 12 октября 2015 г.
  45. ^ Библиотека Грааля .
  46. ^ Рамсделл, «Журнал данных», Инструменты , NEU .
  47. ^ Сангкок, Ю., «Обертка», Mitre Datalog , Git Hub , (скомпилировано в JavaScript).
  48. ^ Круанес, Саймон (18 июня 2022 г.), «Журнал данных», журнал данных , GitHub .
  49. ^ Саенс-Перес (2011), «DES: дедуктивная система баз данных», Электронные заметки по теоретической информатике , 271 , ES : 63–78, doi : 10.1016/j.entcs.2011.02.011 .
  50. ^ «Даталог», Ракетка (техническая документация) .
  51. ^ «Datafun», Datafun in Racket (ссылки на статью, обсуждение и сайт github) .
  52. ^ DDlog , 30 июня 2022 г.
  53. ^ Дифференциальный поток данных , июль 2022 г.
  54. ^ Кенни, Кевин Б. (12–14 ноября 2014 г.). Двоичные диаграммы решений, реляционная алгебра и журнал данных: дедуктивное обоснование Tcl (PDF) . Двадцать первая ежегодная конференция Tcl/Tk. Портланд, штат Орегон . Проверено 29 декабря 2015 г.
  55. ^ "bddbddb", Исходный код forge .
  56. ^ Концептуальная база .
  57. ^ Учебное пособие по журналу данных FoundationDB , заархивировано из оригинала 9 августа 2013 г.
  58. ^ «Скачок» . Архивировано из оригинала 11 ноября 2018 г.
  59. ^ Semmle QL , 18 сентября 2019 г.
  60. ^ «СекПАЛ» . Исследования Майкрософт . Архивировано из оригинала 23 февраля 2007 г.
  61. ^ Лифшиц, Владимир. «Основы логического программирования». Принципы представления знаний 3 (1996): 69-127. «Выразительные возможности [Datalog] слишком ограничены для значимого применения для представления знаний».
  62. ^ Хуанг, Грин и Лу, «Журнал регистрации данных и новые приложения», SIGMOD 2011 (PDF) , Калифорнийский университет в Дэвисе. {{citation}}: CS1 maint: несколько имен: список авторов ( ссылка ) .
  63. ^ Мэй, Хунъюань; Цинь, Гуанхуэй; Сюй, Минджи; Эйснер, Джейсон (2020). «Нейронная регистрация данных во времени: обоснованное временное моделирование с помощью логической спецификации». Материалы ICML 2020 . arXiv : 2006.16723 .
  64. ^ Chin, Brian; Dincklage, Daniel von; Ercegovac, Vuk; Hawkins, Peter; Miller, Mark S.; Och, Franz; Olston, Christopher; Pereira, Fernando (2015). Ball, Thomas; Bodik, Rastislav; Krishnamurthi, Shriram; Lerner, Benjamin S.; Morrisett, Greg (eds.). Yedalog: Exploring Knowledge at Scale. 1st Summit on Advances in Programming Languages (SNAPL 2015). Leibniz International Proceedings in Informatics (LIPIcs). Vol. 32. Dagstuhl, Germany: Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik. pp. 63–78. doi:10.4230/LIPIcs.SNAPL.2015.63. ISBN 978-3-939897-80-4.
  65. ^ Whaley, John; Avots, Dzintars; Carbin, Michael; Lam, Monica S. (2005). "Using Datalog with Binary Decision Diagrams for Program Analysis". In Yi, Kwangkeun (ed.). Programming Languages and Systems. Lecture Notes in Computer Science. Vol. 3780. Berlin, Heidelberg: Springer. pp. 97–118. doi:10.1007/11575467_8. ISBN 978-3-540-32247-4. S2CID 5223577.
  66. ^ Scholz, Bernhard; Jordan, Herbert; Subotić, Pavle; Westmann, Till (2016-03-17). "On fast large-scale program analysis in Datalog". Proceedings of the 25th International Conference on Compiler Construction. CC 2016. New York, NY, USA: Association for Computing Machinery. pp. 196–206. doi:10.1145/2892208.2892226. ISBN 978-1-4503-4241-4. S2CID 7531543.
  67. ^ Antoniadis, Tony; Triantafyllou, Konstantinos; Smaragdakis, Yannis (2017-06-18). "Porting doop to Soufflé". Proceedings of the 6th ACM SIGPLAN International Workshop on State of the Art in Program Analysis. SOAP 2017. New York, NY, USA: Association for Computing Machinery. pp. 25–30. doi:10.1145/3088515.3088522. ISBN 978-1-4503-5072-3. S2CID 3074689.
  68. ^ Bembenek, Aaron; Greenberg, Michael; Chong, Stephen (2020-11-13). "Formulog: Datalog for SMT-based static analysis". Proceedings of the ACM on Programming Languages. 4 (OOPSLA): 141:1–141:31. doi:10.1145/3428209. S2CID 226961727.
  69. ^ Madsen, Magnus; Yee, Ming-Ho; Lhoták, Ondřej (2016-06-02). "From Datalog to flix: a declarative language for fixed points on lattices". ACM SIGPLAN Notices. 51 (6): 194–208. doi:10.1145/2980983.2908096. ISSN 0362-1340.
  70. ^ Gryz; Guo; Liu; Zuzarte (2004). "Query sampling in DB2 Universal Database" (PDF). Proceedings of the 2004 ACM SIGMOD international conference on Management of data - SIGMOD '04. p. 839. doi:10.1145/1007568.1007664. ISBN 978-1581138597. S2CID 7775190.
  71. ^ Gallaire, Hervé; Minker, John 'Jack', eds. (1978), "Logic and Data Bases, Symposium on Logic and Data Bases, Centre d'études et de recherches de Toulouse, 1977", Advances in Data Base Theory, New York: Plenum Press, ISBN 978-0-306-40060-5.
  72. ^ Abiteboul, Serge; Hull, Richard; Vianu, Victor (1995), Foundations of databases, Addison-Wesley, p. 305, ISBN 9780201537710.

References[edit]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 957DFFE33FAD404B254F76DE13984CDC__1716727440
URL1:https://en.wikipedia.org/wiki/Datalog
Заголовок, (Title) документа по адресу, URL1:
Datalog - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)