TerminusDB es un grafo de conocimiento y almacén de documentos de código abierto . Se utiliza para crear productos de datos versionados. Es una base de datos de control de versiones nativa con una arquitectura similar a Git . Está listada en DB-Engines .
TerminusDB proporciona una API de documentos para la creación de páginas web mediante el formato de intercambio JSON. Implementa tanto GraphQL como una variante de registro de datos llamada WOQL.
TerminusDB está disponible bajo la licencia Apache 2.0 . TerminusDB está implementado en Prolog y Rust .
Historia
TerminusDB se fundó en Dublín , Irlanda . Con origen en el Trinity College de Dublín , [ 3 ] el equipo de desarrollo de TerminusDB dirigió el proyecto ALIGNED de Horizonte 2020 , que se desarrolló desde febrero de 2015 hasta enero de 2018. Tras la finalización del proyecto ALIGNED, se publicó un libro electrónico de acceso abierto titulado «Engineering Agile Big-Data Systems». [ 4 ]
La versión 1.0 se publicó en octubre de 2019. [ 5 ] TerminusDB se publicó inicialmente bajo la licencia GPLv3 , mientras que las bibliotecas cliente se publicaron bajo la licencia Apache 2. Con la versión 4.0, publicada en diciembre de 2020, TerminusDB cambió a la licencia Apache 2.0. Este cambio fue objeto de numerosos debates. [ 6 ]
Historial de lanzamientos
Nombre
TerminusDB recibe su nombre del dios romano de los límites, Terminus . También recibe su nombre del planeta natal de la Fundación en la serie de novelas de ciencia ficción de Isaac Asimov . [ 17 ]
Diseño de software
TerminusDB es un sistema de gestión de bases de datos gráficas en memoria con un lenguaje de consulta avanzado. El diseño de la estructura de datos subyacente , implementada en una biblioteca de Rust , utiliza estructuras de datos concisas y un enfoque de codificación delta , inspirándose en sistemas de control de versiones de software como Git . [ 18 ] Esto permite utilizar la semántica de Git en TerminusDB.
Modelo de datos
TerminusDB se basa en el estándar RDF . Este estándar especifica grafos dirigidos finitos etiquetados , parametrizados en un universo de tipos de datos . Los nombres de los nodos y las etiquetas se extraen de un conjunto de IRI ( Identificadores Internacionalizados de Recursos ). TerminusDB utiliza los tipos de datos XSD como su universo de valores concretos. Para el diseño de esquemas , TerminusDB utilizó el lenguaje OWL hasta la versión 10.0. Desde la versión 10, utiliza una interfaz de esquema JSON que permite a los usuarios crear esquemas mediante un formato JSON sencillo. Esto proporciona un lenguaje de modelado avanzado que permite establecer restricciones en las formas permitidas del grafo.
TerminusDB cuenta con un cliente basado en promesas para navegador y Node.js , disponible a través del registro npm o integrado directamente en sitios web. [ 19 ] También dispone de un cliente Python para la API RESTful de TerminusDB y una versión Python del lenguaje de consulta de objetos web, WOQLpy. [ 20 ]
Lenguaje de consulta
GraphQL se implementa para permitir a los usuarios consultar proyectos de TerminusDB de tal manera que se puedan descubrir los enlaces profundos.
WOQL (Web Object Query Language) es un lenguaje de consulta basado en Datalog. Permite a TerminusDB tratar la base de datos como un almacén de documentos o un grafo indistintamente, y proporciona funciones de consulta para facilitar el recorrido de las relaciones. Esto genera un formato relativamente sencillo y legible para humanos que se puede almacenar fácilmente en el propio TerminusDB.
Ejemplo
Una consulta sencilla que crea un documento en la base de datos, junto con etiquetas y restricciones de cardinalidad .
WOQL.doctype("BankAccount").label("Cuenta bancaria") .property("owner","xsd:string") .etiqueta("propietario") .cardinalidad(1) .property("balance","xsd:nonNegativeInteger") .etiqueta("propietario") .cardinalidad(1) Referencias
- ↑ "Versiones · terminusdb/terminusdb" . GitHub . Consultado el 27 de septiembre de 2022 .
- ↑ "Repositorio TerminusDB" . GitHub .
- ↑ "Mostrar HN: TerminusDB – Una base de datos gráfica en memoria de código abierto | Hacker News" . news.ycombinator.com . Consultado el 6 de mayo de 2020 .
- ↑ Feeney, Kevin; Davies, Jim; Welch, James; Hellmann, Sebastian; Dirschl, Christian; Koller, Andreas; Francois, Pieter; Marciniak, Arkadiusz (30 de octubre de 2018). Ingeniería de sistemas ágiles de macrodatos . River Publishers. ISBN 978-87-7022-016-3.
- ↑ Feeney, Luke (2019-10-07). "Hoy lanzamos TerminusDB: la base de datos para profesionales de datos" . Medium . Consultado el 2019-12-06 .
- ↑ "Nos encanta la GPLv3, pero cambiaremos la licencia a Apache 2.0 | Hacker News" . news.ycombinator.com . Consultado el 9 de diciembre de 2020 .
- ↑ "GitHub - terminusdb/terminusdb en v1.0.0" . GitHub . Consultado el 27-09-2021 .
- ↑ "GitHub - terminusdb/terminusdb en v1.0.0" . GitHub . Consultado el 27-09-2021 .
- ↑ "Notas de la versión de TerminusDB de la 2.0 a la 10.0" . github.com . 24 de noviembre de 2022.
- ↑ terminusdb/terminusdb , TerminusDB, 27-09-2021 , consultado el 27-09-2021
- ↑ terminusdb/terminusdb , TerminusDB, 27-09-2021 , consultado el 27-09-2021
- ↑ "Notas de la versión de TerminusDB 10.0" . github.com . 24 de noviembre de 2022.
- ↑ "Versiones · terminusdb/terminusdb" . GitHub . Consultado el 19 de febrero de 2023 .
- ↑ "Versiones · terminusdb/terminusdb" . GitHub . Consultado el 19 de febrero de 2023 .
- ↑ Oliver (21-06-2023). "Construyendo una base de datos vectorial para aprovechar las incrustaciones vectoriales" . Comunidad TerminusDB . Recuperado el 13-08-2024 .
- ↑ Philippe (8 de diciembre de 2025). "TerminusDB 12: precisión, libertad JSON y un nuevo capítulo" . TerminusDB.org . Consultado el 20 de diciembre de 2025 .
- ↑ Feeney, Luke (1 de octubre de 2019). "TerminusDB: ¿qué hay en un nombre?" . Medium . Consultado el 6 de diciembre de 2019 .
- ↑ "Estructuras de datos concisas y codificación delta para bases de datos modernas" (PDF) . GitHub . 24 de noviembre de 2022.
- ↑ terminusdb/terminus-client , TerminusDB, 29-04-2020 , consultado el 06-05-2020
- ↑ terminusdb/terminus-client-python , TerminusDB, 2020-05-06 , consultado el 2020-05-06
Enlaces externos
- bases de datos de grafos
- Almacenamiento estructurado
- Sistemas de gestión de bases de datos gratuitos
- Empresas de software de Irlanda
- Software libre programado en Rust.
- Programación lógica
- Software de 2019
- NoSQL
- Software que utiliza la Licencia Pública General de GNU.
- Software que utiliza la licencia Apache.
- Software gratuito programado en Prolog.