基于Virtuoso的疾病知识RDF描述与仓储研究
来源:用户上传
作者:李若宇 陈磊
摘要:疾病知识已逐步成为社会热点信息,RDF 技术在疾病知识的描述时具有极大的适配性和灵活性。文章介绍了疾病知识库的RDF 描述范式以及使用Virtuoso数据库实现 RDF数据的仓储,并使用SPARQL语言对RDF数据进行导入和检索,使疾病知识数据得以高效的建模、存储、检索及利用,在医学知识库构建和应用方面具有重要参考价值。
关键词:语义网;RDF;SPARQL;Virtuoso;疾病知识库
0引言
随着 2020 年暴发的新冠肺炎疫情席卷全球,各种 疾病知识已经成为最有价值的信息之一,建立高质量的疾病知识库,有助于推进医学现代化,推进全民医学知识科普。现阶段传统主流数据库以关系型数据库为主,在存储结构化数据时具有成熟的技术和良好的性 能,但疾病知识拥有着明显的树状结构和拓扑结构特 征,传统关系型数据库难以做到高效的存储。
资源 描 述 框 架(Resource Description Framework,RDF)是Web3.0 时代语义网技术中的一个概念,表达为一种基于图的数据类型,常作为知识图谱的存储介 质。选用RDF 进行疾病知识描述和仓储具有查询效率 高、扩展性强、对非结构化非关系型数据兼容性较好等 特点。国内外基于RDF 技术开发的知识库有清华大学的Xlore、复旦大学的CN-Dbpedia、谷歌的Freebase和维基的DBPedia。Openlink 公司的Virtuoso数据库能够实现 RDF数据的仓储,并使用SPARQL语句进行数据的检索和操作[1-2]。
1知识描述
1.1知识建模
作为语义网中的核心技术,使用RDF 构建知识工 程时,知识本体被当作资源表示为URI,不同资源间的联系以主谓宾的形式进行描述,形成知识图谱。构成RDF的数据类型包括:(1)URI。用于标记资源,以网 址的形式。如在疾病知识中,知识本体“高血压”被标 记为资源:<http://kn.cn/terms/高血压 >。(2)字 面 量。表示具体值。如字符串值:" 脑动脉粥样硬化"。上述类型数据类型可构成主谓宾三元组的RDF 原生数据形式[3-4]。RDF 原生数据形式如表1所示。
疾病知识具有明显的医学知识特征,有较规则的知识结构,例如大多数疾病都包含中英文名称、就诊科 室、多发群体、病症分类、常见症状、诊断方法、治疗方法等共同属性,因此根据属性关系可以对疾病知识进 行有效组织。对疾病知识进行建模的步骤包括:(1)收 集知识文档。可以从网络百科、电子书籍等相对准确的资料上收集资料,注意可以采用爬虫的方式,但是需要对知识的准确性进行人工验核。(2)抽取主要属性。根据对大多数疾病知识的研究,归纳通用疾病属性,建 立数据字典。
在图1 中,唯一编号的ds125表示知识本体“冠心 病”,ds125 下包含有一级属性中文名、英文名、多发人群、就诊科室、症状、治疗方法、检查方法。值得注意的是,虽然 RDF稻菽P椭械氖粜悦类似于关系模型中的字段名,但这里的属性名可自由搭配属性值,如属性“检查方法”可以连接一个值,也可以连接若干个值。
1.2RDF数据描述
完成知识内容建模以后,需要将知识内容转化为RDF 描述,转化工作包括拼接前缀、格式化等工作,产出的结果应该是规范的RDF三元组文档。
值得注意的是,宾语除了字面量以外,还可能是资 源类型。如“检查方法”对应的属性值这里表示为资源 而非字串字面量,一方面,因为具体“检查方法”更趋向于是一个术语,符合被定义成为RDF 中的资源;另一方面,一种“检查方法”可能被多种疾病共享,如“心电图”可以是多种疾病的“检查方法”,这时与将“心电图”作为“检查方法”的疾病资源便建立了联系。如图2所示,让数据实体之间(ds125和ds126)建立丰富的联系,体现关联数据语义网的核心理念。
2Virtuoso数据仓储
2.1 Virtuoso数据库简介
RDF数据具有明显的“图”结构,需要使用图数据 库进行组织和存储,单纯的关系型数据库并不便于存 储 RDF数据。Openlink Virtuoso数据库支持以图的形式存储 RDF数据,支持使用SPARQL语句对RDF数据 进行 DML和DQL 操 作,兼 容主流 操 作系统,支 持 JDBC,ODBC,HTTP API 等主流数据访问接口和多种编 程语言,在海量数据存储和处理方面有着不错的表现,同时还 支 持 将 关系数据 转 换为RDF数据的技 术(RDB2RDF)。除了Openlink Virtuoso以外,MarkLogic,Jena,GraphDB 等数据库在RDF数据仓储方面都有着 优秀特性[5]。
2.2知识仓储
知识仓储在这里主要指将组织好的RDF数据存储 至数据库,在将 RDF数据导入 Virtuoso数据库时,常常 采用SPARQL-Update语句的方式进行。
(1)在Virtuoso数据库的namespace 定义命名空间和对应的前缀,有助于减小输入冗余。
@ prefix knt:<http://kn.cn/terms/ >
@ prefix kna:<http://kn.cn/attribute/ >
此时知识本体可被表示为knt:ds125,属性可以被表示为kna:属性。
(2)SPARQL语句支持 RDF 缩写形式,下面是相同主语和相同主谓两种情况下的缩写示例。INSERT语句同 SQL 中,表示将数据插入数据库,<http://kn.cn >表示存储数据的图,这里的图名可以理解成关系数据 库的库名。
SPARQL:
nlc202208292104
转载注明来源:https://www.xzbu.com/8/view-15438719.htm