- 数据库
- 时序数据库
- 物联网
- 大数据
- 实时分析
- 云原生
【免费下载链接】tdengine
TDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.
本文围绕 TDengine 与开源虚拟知识图谱系统 Ontop 的集成,讲解如何通过 taos-jdbcdriver 的 WebSocket JDBC 连接,把 TDengine 中的时序数据以“虚拟视图”的方式接入 Ontop,无需迁移数据即可用 W3C 标准的 SPARQL 语言对时序数据做语义查询。文章以智能电表电压超限分析为完整实战案例,覆盖 JDBC 驱动安装、.properties连接配置、.obda表映射声明、taosBenchmark 模拟造数、SPARQL 查询执行与 JSON 结果解读。读完本文,你可以掌握一套可复制的“时序数据库 → 虚拟知识图谱 → SPARQL 语义分析”落地路径。
1. 背景:Ontop 虚拟知识图谱与 TDengine 的集成价值
Ontop 是一个开源虚拟知识图谱(Virtual Knowledge Graph, VKG)系统,由意大利博尔扎诺自由大学(Free University of Bozen-Bolzano)的 KRDB 研究组开发。它的核心能力是:在不迁移数据的前提下,把关系型数据库中的内容动态转换为知识图谱,对外提供 SPARQL(W3C 标准化的 RDF 查询语言)查询接口,并将查询结果转换为 RDF 格式返回。
Ontop 支持多种数据库作为数据源,包括 MySQL、PostgreSQL、Oracle、SQL Server、SQLite,以及TDengine。这一组合的价值在于:
- 时序数据天然带有时间戳、设备、标签等结构化维度,适合用 RDF 三元组描述“设备—属性—数值—时间”的语义关系;
- 知识图谱的推理能力可与 LLM(大语言模型)的泛化能力结合,为复杂 IoT 场景(如设备故障根因分析、能效优化)提供具备认知能力的智能分析方案。
需要说明的是,Ontop 对 TDengine 的支持已合入其version5分支但尚未正式发布,因此在使用前需要从 Ontop 官方源码仓库下载version5分支代码,并按照其 README 的说明自行构建。
2. 前置条件与环境准备
在开始配置前,需要准备以下环境:
| 组件 | 版本/状态要求 | 说明 |
|---|---|---|
| TDengine 集群 | 3.3.6.0 及以上 | 企业版与社区版均支持,需已部署并运行 |
| taosAdapter | 正常运行 | 提供 WebSocket 接口,是 JDBC WebSocket 连接的服务端通道 |
| taos-jdbcdriver | 3.6.0 及以上 | 即 TDengine Java Connector,Ontop 通过它连接 TDengine |
| Ontop | version5 分支(源码构建) | TDengine 支持已合入该分支,尚未正式发版 |
其中两点值得展开说明:
为什么需要 taosAdapter?从 taosAdapter Reference Manual 可以看到,taosAdapter 是 TDengine 集群与应用程序之间的桥接组件,TDengine 各语言的 Connector 均通过其 WebSocket 接口与数据库通信,该接口支持 SQL 执行、schemaless 写入、参数绑定与数据订阅等功能。JDBC 的 WebSocket 连接(jdbc:TAOS-WS://)正是经由 taosAdapter 的 HTTP/WebSocket 服务(默认端口6041)接入 TDengine。
为什么要求 JDBC 3.6.0?查看 Java Connector 版本历史 可知,taos-jdbcdriver 3.6.0 支持 WebSocket 连接下的高效写入与 decimal 数据类型,其对应服务端版本即 TDengine 3.3.6.0 及以上——这与前置条件中集群版本要求完全对齐。
3. 在 Ontop 中配置 TDengine 数据源
在 Ontop 中配置 TDengine 数据源,需要依次完成 JDBC 驱动安装、JDBC 连接配置、表映射声明三个步骤,最后通过启动 endpoint 服务验证配置。
3.1 安装 JDBC 驱动
下载 taos-jdbcdriver 的 DIST 驱动包(.jar文件),将其放入 Ontop 主程序的jdbc/目录下,Ontop 启动时会从该目录加载 JDBC 驱动。
3.2 配置 JDBC 连接
在 Ontop 的.properties文件中配置 JDBC 连接信息:
jdbc.url = jdbc:TAOS-WS://[host]:[port]/[database] jdbc.user = [username] jdbc.password = [password] jdbc.driver = com.taosdata.jdbc.ws.WebSocketDriver其中:
jdbc.url使用 WebSocket 连接格式jdbc:TAOS-WS://,host与port指向 taosAdapter 服务(默认端口 6041),database为目标数据库名;jdbc.driver必须指定为com.taosdata.jdbc.ws.WebSocketDriver(WebSocket 连接专用驱动类)。
URL 参数细节可参考 TDengine URL Specification:WebSocket 连接方式支持在 URL 中配置多个以逗号分隔的 endpoint 地址(连接时随机选用以实现负载均衡),也支持user、password、varcharAsString、conmode等查询参数。其中conmode=1开启 BI 模式(元数据不计子表),是面向 BI/分析工具集成场景的典型配置;varcharAsString=true可将 VARCHAR/BINARY 类型映射为 String。这些参数都可以按需追加到jdbc.url中。
3.3 配置表映射(.obda 文件)
Ontop 通过.obda文件声明“关系数据 ↔ RDF 三元组”的映射关系。以智能电表场景为例,定义 TDengine 中test.meters表与 Ontop 知识图谱的映射:
[PrefixDeclaration] : http://example.org/tde ns: http://example.org/ns# [MappingDeclaration] @collection [[ mappingId meters-mapping target ns:{ts} a ns:Meters ; ns:ts {ts} ; ns:voltage {voltage}; ns:phase {phase}; ns:groupid {groupid}; ns:location {location}^^xsd:string . source SELECT ts, voltage, phase, groupid, location from test.meters ]]格式说明
| 关键字段 | 说明 |
|---|---|
| mappingId | 映射 ID,唯一标识一条映射关系 |
| source | TDengine SQL 查询语句(支持复杂查询) |
| target | 字段映射关系(未指定类型时使用默认转换规则) |
[PrefixDeclaration]段声明 RDF 前缀命名空间,target中的{字段名}会被source查询返回的对应列值替换,从而为每条记录生成 RDF 三元组。
数据类型默认转换规则
在target中可以显式指定映射数据类型;若不指定,则按以下默认规则转换:
| TDengine JDBC Data Type | Ontop Data Type |
|---|---|
| java.sql.Timestamp | xsd:datetime |
| java.lang.Boolean | xsd:boolean |
| java.lang.Byte | xsd:byte |
| java.lang.Short | xsd:short |
| java.lang.Integer | xsd:int |
| java.lang.Long | xsd:long |
| java.math.BigInteger | xsd:nonNegativeInteger |
| java.lang.Float | xsd:float |
| java.lang.Double | xsd:double |
| byte[] | xsd:base64Binary |
| java.lang.String | xsd:string |
| java.math.BigDecimal | xsd:decimal |
这组规则的底层链路可以从 Java Connector 的数据类型映射 得到印证:TDengine 的 TIMESTAMP、BOOL、TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、NCHAR 等数据类型在 JDBC 层分别映射为java.sql.Timestamp、java.lang.Boolean、java.lang.Byte、java.lang.Short、java.lang.Integer、java.lang.Long、java.lang.Float、java.lang.Double、java.lang.String等 Java 类型;Ontop 拿到这些 JDBC 返回的 Java 类型后,再按上表转换为对应的 XSD 类型,从而形成“TDengine 类型 → JDBC 类型 → RDF/XSD 类型”的完整映射链。这也是本示例中test.meters的 TIMESTAMP 主键在查询结果中呈现为xsd:dateTime、整型电压呈现为xsd:integer的原因。
完整的.obda文件格式规范可参考 Ontop 官方的 OBDA 映射语言文档。
3.4 测试连接
启动 Ontop 的 endpoint 服务来验证配置:
ontop endpoint -p db.properties -m db.obda --port 8080浏览器访问http://localhost:8080,如果能看到 SPARQL 查询界面,说明 TDengine 数据源与映射配置均已生效。
4. 实战:智能电表负载分析
4.1 场景与数据准备
场景设定:某居民小区的智能电表数据存储于 TDengine 数据库。我们的目标是通过 Ontop 将电表数据转换为虚拟知识图谱,再用 SPARQL 查询电压超过 240V 的设备,识别出高负载设备。
使用 taosBenchmark 生成模拟数据。taosBenchmark是 TDengine 默认安装的测试/压测工具(参考 taosBenchmark Reference),其中-t指定子表(设备)数量、-n指定每个子表的记录条数:
# Generate 100 devices, 1000 records each taosBenchmark -t 100 -n 1000 -y执行后,taosBenchmark 会创建名为test的数据库、默认超级表meters、100 个子表,并为每个子表写入 1000 条模拟记录(与无参数默认模式创建test库、meters超级表的行为一致,只是规模由参数控制)。
4.2 配置文件
db.properties(连接配置):
jdbc.url=jdbc:TAOS-WS://localhost:6041/test jdbc.user=root jdbc.password=taosdata jdbc.driver=com.taosdata.jdbc.ws.WebSocketDriverdb.obda(映射配置):复用上文 配置表映射 一节中的示例内容,即把test.meters表的ts、voltage、phase、groupid、location列映射为ns:Meters类型的 RDF 资源。
4.3 编写并执行 SPARQL 查询
创建 SPARQL 查询语句:查询电压超过 240V 的智能电表设备,按电压降序返回前 2 条:
PREFIX ns: <http://example.org/ns#> SELECT ?ts ?voltage ?phase ?groupid ?location WHERE { ?m a ns:Meters ; ns:ts ?ts; ns:voltage ?voltage; ns:phase ?phase; ns:groupid ?groupid; ns:location ?location. FILTER(?voltage > 240) } ORDER BY DESC(?voltage) LIMIT 2该语句是标准 SPARQL 1.1 查询:
?m a ns:Meters匹配所有电表资源,FILTER(?voltage > 240)实现阈值过滤,ORDER BY DESC(?voltage) LIMIT 2返回电压最高的两条记录。SPARQL 语法遵循 W3C SPARQL 1.1 规范。在 Ontop 的 SPARQL 查询界面中粘贴上述语句,点击 "Run" 按钮执行。查询界面与结果如下:
查询结果以 SPARQL JSON 格式返回,包含电表采集时间戳、电压读数、相位、分组 ID 和设备位置信息:
{ "head" : { "vars" : [ "ts", "voltage", "phase", "groupid", "location" ] }, "results" : { "bindings" : [ { "ts" : { "datatype" : "http://www.w3.org/2001/XMLSchema#dateTime", "type" : "literal", "value" : "2025-07-02T15:22:55.098" }, "voltage" : { "datatype" : "http://www.w3.org/2001/XMLSchema#integer", "type" : "literal", "value" : "263" }, "phase" : { "datatype" : "http://www.w3.org/2001/XMLSchema#double", "type" : "literal", "value" : "143.2" }, "groupid" : { "datatype" : "http://www.w3.org/2001/XMLSchema#integer", "type" : "literal", "value" : "2" }, "location" : { "type" : "literal", "value" : "California.PaloAlto" } }, { "ts" : { "datatype" : "http://www.w3.org/2001/XMLSchema#dateTime", "type" : "literal", "value" : "2025-07-02T15:23:30.186" }, "voltage" : { "datatype" : "http://www.w3.org/2001/XMLSchema#integer", "type" : "literal", "value" : "259" }, "phase" : { "datatype" : "http://www.w3.org/2001/XMLSchema#double", "type" : "literal", "value" : "132.1" }, "groupid" : { "datatype" : "http://www.w3.org/2001/XMLSchema#integer", "type" : "literal", "value" : "2" }, "location" : { "type" : "literal", "value" : "California.PaloAlto" } } ] } }从返回结果可以观察到数据类型的实际落地:时间戳
ts以xsd:dateTime返回(对应 TDengine 的 TIMESTAMP → JDBCjava.sql.Timestamp→xsd:datetime链路),电压voltage为xsd:integer(263V、259V,均高于 240V 阈值),相位phase为xsd:double,位置location为普通字符串字面量。两条记录共同指向groupid = 2的California.PaloAlto区域,即该小区电压偏高的高负载设备集中在同一区域——这正是知识图谱语义查询相比普通 SQL 的优势:设备、属性、位置、分组被统一建模为可推理的 RDF 关系。
5. 总结与延伸
通过 TDengine 与 Ontop 的集成,本文完成了以下验证:
- 时序数据自动转换为 RDF:借助
.obda映射声明,TDengine 中的行数据被动态生成为 RDF 三元组,支持 SPARQL 语义查询,全程无需数据迁移; - 统一的 W3C 标准数据访问接口:SPARQL 查询、RDF 返回格式均符合 W3C 标准,便于上层语义应用直接对接;
- 解锁工业 IoT 的知识图谱分析与推理能力:以智能电表电压超限分析为例,展示了设备负载、区域分布等维度的语义关联挖掘。
这一集成在时序数据库领域开辟了新的智能化范式:将知识图谱的强逻辑推理能力与 LLM 的泛化能力相结合,为复杂 IoT 场景(如设备故障根因分析、能效优化)提供具备认知能力的智能分析方案。
若想进一步深入,可以继续阅读仓库中的相关文档:
- TDengine Java Connector(taos-jdbcdriver)参考手册:掌握 WebSocket JDBC 连接的完整 URL 规范、连接属性与类型映射;
- taosAdapter Reference Manual:了解 WebSocket 接口、端口配置与服务启停;
- taosBenchmark Reference:掌握模拟数据生成的参数语义;
- BI 工具集成总览:查看 Ontop 之外与 Looker、Power BI、Tableau、Superset 等分析工具的集成方式。
- 数据库
- 时序数据库
- 物联网
- 大数据
- 实时分析
- 云原生
【免费下载链接】tdengine
TDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.
相关推荐
TDengine 与 Ontop 集成:构建时序数据虚拟知识图谱并用 SPARQL 查询
TDengine 与 Ontop 集成:构建时序数据虚拟知识图谱并用 SPARQL 查询 本文以 TDengine 与 Ontop 的集成为核心,完整覆盖前置环
数据库时序数据库大数据物联网云原生RPCS3 中文补丁配置:6步让PS3游戏菜单显示中文
RPCS3 中文补丁配置:6步让PS3游戏菜单显示中文 模拟器装好了,固件也配了,游戏能开机,但菜单全是英文。你搜到一份RPCS3中文补丁,教程让你把YAML文
虚拟化图形学调试器h2oGPT知识图谱查询语言:SPARQL与Cypher终极对比指南
h2oGPT作为一款强大的私有文档问答和知识管理工具,在知识图谱处理方面展现了出色的能力。本文将深入解析两种主流知识图谱查询语言SPARQL和Cypher的核心
AI 应用大模型RAGNLP后端语音计算机视觉
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考