使用 Ontop 将 TDengine 时序数据映射为虚拟知识图谱:JDBC 配置与 SPARQL 语义查询实战
2026/9/21 2:48:33 网站建设 项目流程
  • 数据库
  • 时序数据库
  • 物联网
  • 大数据
  • 实时分析
  • 云原生

【免费下载链接】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.

项目地址:https://gitcode.com/taosdata/tdengine
点击查看免费下载

本文围绕 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-jdbcdriver3.6.0 及以上即 TDengine Java Connector,Ontop 通过它连接 TDengine
Ontopversion5 分支(源码构建)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://hostport指向 taosAdapter 服务(默认端口 6041),database为目标数据库名;
  • jdbc.driver必须指定为com.taosdata.jdbc.ws.WebSocketDriver(WebSocket 连接专用驱动类)。

URL 参数细节可参考 TDengine URL Specification:WebSocket 连接方式支持在 URL 中配置多个以逗号分隔的 endpoint 地址(连接时随机选用以实现负载均衡),也支持userpasswordvarcharAsStringconmode等查询参数。其中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,唯一标识一条映射关系
sourceTDengine SQL 查询语句(支持复杂查询)
target字段映射关系(未指定类型时使用默认转换规则)

[PrefixDeclaration]段声明 RDF 前缀命名空间,target中的{字段名}会被source查询返回的对应列值替换,从而为每条记录生成 RDF 三元组。

数据类型默认转换规则

target中可以显式指定映射数据类型;若不指定,则按以下默认规则转换:

TDengine JDBC Data TypeOntop Data Type
java.sql.Timestampxsd:datetime
java.lang.Booleanxsd:boolean
java.lang.Bytexsd:byte
java.lang.Shortxsd:short
java.lang.Integerxsd:int
java.lang.Longxsd:long
java.math.BigIntegerxsd:nonNegativeInteger
java.lang.Floatxsd:float
java.lang.Doublexsd:double
byte[]xsd:base64Binary
java.lang.Stringxsd:string
java.math.BigDecimalxsd:decimal

这组规则的底层链路可以从 Java Connector 的数据类型映射 得到印证:TDengine 的 TIMESTAMP、BOOL、TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、NCHAR 等数据类型在 JDBC 层分别映射为java.sql.Timestampjava.lang.Booleanjava.lang.Bytejava.lang.Shortjava.lang.Integerjava.lang.Longjava.lang.Floatjava.lang.Doublejava.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.WebSocketDriver

db.obda(映射配置):复用上文 配置表映射 一节中的示例内容,即把test.meters表的tsvoltagephasegroupidlocation列映射为ns:Meters类型的 RDF 资源。

4.3 编写并执行 SPARQL 查询

  1. 创建 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 规范。

  2. 在 Ontop 的 SPARQL 查询界面中粘贴上述语句,点击 "Run" 按钮执行。查询界面与结果如下:

  3. 查询结果以 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" } } ] } }

    从返回结果可以观察到数据类型的实际落地:时间戳tsxsd:dateTime返回(对应 TDengine 的 TIMESTAMP → JDBCjava.sql.Timestampxsd:datetime链路),电压voltagexsd:integer(263V、259V,均高于 240V 阈值),相位phasexsd:double,位置location为普通字符串字面量。两条记录共同指向groupid = 2California.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.

项目地址:https://gitcode.com/taosdata/tdengine
点击查看免费下载

相关推荐

上一篇:性能飙升20倍:Dapper拥抱.NET 8运行时新特性
下一篇:彻底解决Flux内存爆炸:享元模式优化2000条待办的实战方案

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询