en ru

Triplestore - Часть2

И так, реализаций много. Нужно принять решение какой использовать или же вообще стоит написать свой собственный движок для работы с триплетами (СУБД/СУБЗ). Писать самому очень долго и не понятно зачем тратить время, если это уже все вроде реализовано. Поэтому рассмотрим подробнее существующие реализации.

Отмечу, что меня лично больше всего интересует язык Pascal, но на Pascal реализаций БД триплетов я не нашел, поэтому рассматриваем наиболее крупные проекты написанные языках на Си и Java с целью сделать обертку или переписать на Pascal. Крупные проекты я определил очень просто: выбрал те, для описания которых есть отдельная страничка на википедии.

У меня получился такой список:
Jena
Mulgara
Redland
Sesame
Soprano
StrixDB
Virtuoso

-- Jena --
Language: Java
License: BSD License
Homepage: jena.sourceforge.net
en.wikipedia.org/wiki/Jena_(framework)
openjena.org/wiki/TDB

-- Mulgara --
Language: Java
License: Mulgara is licensed under the Open Software License v3.0. New code is being contributed using the Apache 2.0 license.
Homepage: mulgara.org
en.wikipedia.org/wiki/Mulgara_(software)
Mulgara is a scalable RDF database written entirely in Java.

-- Redland --
Language: C
License: Apache License V2.0, GNU General Public License (GPL), GNU Library or Lesser General Public License (LGPL)
Homepage: librdf.org
en.wikipedia.org/wiki/Redland_RDF_Application_Framework

-- Sesame --
Language: Java
License: BSD-style license
Homepage: openrdf.org
en.wikipedia.org/wiki/Sesame_(framework)

-- Soprano --
Language: C++
Homepage: soprano.sourceforge.net
en.wikipedia.org/wiki/Soprano_(KDE)

-- StrixDB --
Language: C++/Lua
Homepage: strixdb.com
en.wikipedia.org/wiki/StrixDB

-- Virtuoso --
Language: C
License: GPLv2 and proprietary
Homepage: virtuoso.openlinksw.com
en.wikipedia.org/wiki/Virtuoso_Universal_Server

Рассмотрим их подробнее. Отмечу, что мне интересны только те варианты, которые так или иначе могут быть использованы в проектах AiKernel и AReason.

Jena

Language: Java
License: BSD License

jena.sourceforge.net
sourceforge.net/projects/jena
en.wikipedia.org/wiki/Jena_(framework)
openjena.org/wiki/TDB

Jena is Java toolkit for developing semantic web applications based on W3C recommendations for RDF and OWL.
It provides an RDF API; ARP, an RDF parser; SPARQL, the W3C RDF query language; an OWL API; and rule-based inference for RDFS and OWL.

Mulgara

Language: Java
License: Mulgara is licensed under the Open Software License v3.0. New code is being contributed using the Apache 2.0 license.

mulgara.org
en.wikipedia.org/wiki/Mulgara_(software)
docs.mulgara.org

Mulgara is a scalable RDF database written entirely in Java.

The Mulgara Semantic Store is an Open Source, massively scalable, transaction-safe, purpose-built database for the storage and retrieval of metadata.

--- wikipedia.org ---
Mulgara is a triplestore and fork of the original Kowari project.
It is Open Source, scalable, and transaction-safe.
Mulgara instances can be queried via the iTQL query language and the SPARQL query language.

Redland

Language: C
License: Apache License V2.0, GNU General Public License (GPL), GNU Library or Lesser General Public License (LGPL)
Last Update: 2010-09-25

librdf.org
en.wikipedia.org/wiki/Redland_RDF_Application_Framework

Redland is a set of object-based, modular and portable C RDF libraries providing RDF APIs for the graph, triple storage (librdf), RDF/XML parsing and serializing (Raptor), SPARQL RDF querying (Rasqal). Language APIs in Perl, PHP, Python, Ruby and others.

Programming Languages: C, Python, Perl, Ruby, PHP

License: All Redland packages are free software / open source software and released under the LGPL 2.1, GPL 2 or Apache 2 licenses as alternatives.
See the individual package license files for full details and any exceptions.

--- wikipedia.org ---
-- Redland RDF Application Framework --

Redland is a set of free software libraries written in C that provide support for the Resource Description Framework (RDF), created by Dave Beckett (a former resident of Redland, Bristol).

The packages that form Redland are:

  • Redland RDF Application Framework providing the C RDF API
  • Raptor RDF Parser Toolkit for parsing and serializing RDF syntaxes (RDF/XML, N-Triples, Turtle, RSS tag soup, Atom)
  • Rasqal RDF Query Library for executing RDF queries with RDQL and SPARQL
  • Redland Language Bindings for APIs to Redland in C#, Java, Objective-C, Perl, PHP, Python, Ruby and Tcl

Redland is a mature set of libraries, in development since 2000 and closely conformant to the relevant W3C specifications.

Sesame

Language: Java
License: BSD-style license

openrdf.org
en.wikipedia.org/wiki/Sesame_(framework)

=== Sesame (framework) (wikipedia.org) ===

Sesame is an open-source framework for querying and analyzing RDF data.
It was created, and is still being maintained, by the Dutch software company Aduna.
It was originally developed as part of the "On-To-Knowledge", a semantic web project that ran from 1999 to 2002.
It contains a triplestore.

Soprano

Не стал рассматривать, т.к. сделать обертку для Pascal будет проблематично.

StrixDB

Не стал рассматривать по той же причине, что и Soprano.

Virtuoso

Не стал рассматривать по причине не свободной лицензии (GPL).

Выводы

И так, как можно видеть почти все (рассмотренные) свободные проекты реализованы на Java. Java использовать напрямую из Pascal не получится. Это возможно только или с использованием JNI или компиляция java в код виртуальной машины LLVM + добавление скомпилированных .o файлов и потом генерация x86 кода. Но это долго, сложно и не факт что получится.

Но есть один проект, который можно использовать относительно свободно (под лицензией Appache 2.0) - это Redland. Но тут надо более подробнее изучить саму лицензию Appache, чтобы в будущем не возникли проблемы.

Из всего этого я сделал такой вывод: стоит или использовать Redland и написать для него небольшую обертку на Pascal или брать за образец како-то другой проект (например Jena-TDB) и писать все с нуля. Лично я за использование Redland. Но окончательное решение, если оно и будет, то только после рассмотрения самих исходников проектов.

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

P.S.2. Еще замечание про быстродействие. Дело в том, что достичь самого лучшего быстродействия можно только используя низкоуровневое программирование (язык Си). Хотя часто зависит от конкретного программиста. Тем не менее тесты показывают преимущество языка Си. "Проект по тестированию эффективности языков программирования".

P.S.3. Вот тут немного есть про использование OWL и RDF:
intuit.ru/department/expert/ontoth/3 - Лекция: Области применения онтологий.
bigc.ru/theory/km/onto_technologies.php - Технологии применения онтологий

Еще про онтологии тут: project-ai.org/forum/viewtopic.php?p=184#p184

Отмечу, что RDF и OWL - это форма запись триплетов в виде XML документа. А сами знания представлены именно набором триплетов.

Обсуждение: project-ai.org/forum/viewtopic.php?t=61












© AiKernel 2010-2013
08.07.2011 - 29.12.2012