TypeDB概述
TypeDB为开发人员提供了一个强大的类型系统,可以将复杂的问题分解为有意义的逻辑系统。通过TypeQL, TypeDB对低级和复杂数据模式拥有强大抽象能力。TypeDB中的任何内容(规则除外),无论是概念类型还是数据实例,都是概念。下图说明了概念超类是如何由其直接和间接后代继承的。
type是指架构中定义的概念类型。
thing是指作为概念类型实例化的数据实例。
TypeDB的安装与启动
typeDB的官方下载地址:https://vaticle.com/download
官方给出了三个typeDB的工具,分别为TypeDB、TypeDB Workbase、TypeDB Cluster。
其中,TypeDB是通过命令行的方式启动TypeDB数据库,并进行数据库事务的相关操作。
TypeDB Workbase是数据库的可视化工具,可以将保存的数据库部署在可视化工具上。TypeDB Workbase还支持相关的查询并将查询结果以图的形式展现出来。若要使用TypeDB Workbase需要先通过TypeDB启动数据库。
TypeDB Cluster尚在开发中,这里不做介绍。
在使用TypeDB前,我们需要在电脑中配置Java环境(需要Java11或更高版本)。下载完成TypeDB直接解压即可使用。
在windows系统的启动流程如下:
首先,进入TypeDB的安装路径,运行 “typedb server” 命令,看到如下显示证明运行成功:
然后,再启动一个命令行窗口,进入到TypeDB的安装路径,执行 “typedb console” 命令,即可开始操作TypeDB。
TypeDB Console
TypeDB Console以及TypeDB客户端和Workbase是一个接口,我们可以使用它读取和写入TypeDB 中的知识库。 TypeDB Console可以直接与TypeDB包含的知识库交互。
TypeDB Console提供两个级别的交互:数据库级命令和事务级命令。数据库级命令是交互的第一级,即一级RepL。基于数据库级命令可以打开到数据库的事务。这将打开一个事务级接口,即二级RepL。
通过TypeDB Console能够完成数据库创建、添加数据库schema、删除数据库的操作。此外,TypeDB Console还可进行事务查询,如:
命令 | 解释 |
---|---|
source <file> | 在文件中运行TypeQL查询,可以参考使用相对路径或绝对路径 |
commit | 提交事务更改并关闭事务。 |
clear | Clear console screen |
rollback | 将删除您在事务中所做的任何未提交的更改,同时保持事务打开。 |
<query> | 终端立即接受多行TypeQL查询,并在按两次enter键时执行该查询。 |
TypeDB Console可进行如下事务操作
Option | Allowed values | Description |
---|---|---|
–infer | true⎮false | 启用或禁用推理 |
–trace-inference | true⎮false | |
–explain | true⎮false | |
–parallel | true⎮false | |
–batch-size | 1…[max int] | |
–prefetch | true⎮false | |
–session-idle-timeout | 1…[max int] | |
–schema-lock-acquire-timeout | 1…[max int] | |
–read-any-replica | true⎮false |
事务操作通过 transaction <db> schema⎮data read⎮write 进行传递,例如:
transaction typedb data read --infer true
TypeQL
schema(模式)
TypeQL中一个很重要的概念是schema,那么什么是schema呢?
schema是解决管理和处理非结构化或松散结构化数据问题的一种方法。
在schema-first数据库知识系统领域,数据库设计涉及三种模式:
- 高级概念模式,它对我们的问题建模,通常涉及实体关系模型的一些变体
- 中间层逻辑模式 , 依赖于数据库类型。例如,当我们进行关系表示时,这将涉及将概念模型转换为表,并检查模式的一系列标准化步骤。
- 低级物理模式 , 根据物理资源的分布方式优化我们的模式
TypeDB Data Model
Concepts
在TypeDB知识图谱中描述域的所有内容都是一个概念。这包括schema的元素(即类型和角色,我们称之为模式概念)和实际的数据实例。数据实例称为事物-它们可以被视为schema中定义的类型的实例。
Type
类型构成了schema的核心。它们提供了领域所需的词,包含:实体、关系和属性:
实体是领域的主体。实体类型提供了对域中对象进行分类的方法。
关系将things联系在一起。每种关系都可以连接许多things。每个关系都必须至少有一个角色。
属性用于用小数据块(数字、字符串、日期等)来描述概念。因此,通过定义属性,我们可以将指定值类型的值附加到实例中。
Roles
角色属于关系的一部分,它指定实例之间连接的性质 , 他们本身不是类型。 我们不能拥有一个角色的实例,但我们可以让事物在特定关系中扮演一个角色 。 在模式中,我们需要指定与每个关系类型相关的角色,以及谁可以扮演此角色。
Rules
TypeDB schema 实现了 TypeQL Rules。 规则用于查询时捕获数据中的动态模式并进行演绎推理。 规则是TypeDB中自动推理的组成部分。
预定义关键词
## Native types
thing, entity, attribute, relation, role
## Data types
long, double, string, boolean, datetime
## Query commands
define, undefine, match, get, insert, delete;
## Delete and get query modifiers
offset, limit, group, sort, asc, desc
## Statement properties
abstract, as, iid, type, isa, isa!, sub, sub!, owns, has, plays, relates, value, regex, rule, when, then
## Operators
or, not, like, is
## Literal values
true, false