请问老师,垂直领域的知识图谱构建流程一般是怎样的?麻烦看下我的理解对不对,谢谢!

王老师您好,我现在有一个构建中国古代编年史知识图谱的任务,目前有一定量的数据库中的数据,后期考虑引入非结构化文本和开放域知识图谱的数据进行补充。请问构建这样一个垂直知识图谱,通常是先定义ontology的结构,再根据这个结构去建立数据库对应的表和表之间的关系,最后再导入数据吗?
 
对于这个垂直知识图谱构建的流程,我的理解是:
先通过protege定义我需要的类,属性和他们之间的关系,把该schema导出为ttl文件;然后根据此ontology结构来创建关系数据库中对应的表,以及相应表之间的关系;把现成的数据库中的数据导入到新的数据库对应表的相应列;接着,根据设计的数据库,修改D2RQ的默认mapping文件,用导出的ttl文件来定义mapping文件中对应的类,属性;最后利用D2RQ把该数据库转化为RDF nt文件来提供相应服务,比如SPARQL查询和推理。
 
不知道我这个思路对不对,如果不对,请问一般流程是怎样的?麻烦老师指点一下,谢谢!

王昊奋 - 知识图谱从业者

赞同来自: SimmerChan fish

不需要根据schema或ontology来构建关系数据库表和对应的表关系,这里可以直接用各种D2R的工具,包括你提到的D2RQ(比较老了,但是可以通过他来体会一些思路),也可以使用我第三课提到的Ontop(基于R2RML或利用Ontop的Bootstrap,也就等价于我说到的Direct Mapping)。这个不会再有构建relational db的tables的过程,要不就通过这样的映射配置或规则,形成RDF为数据模型的知识图谱供SPARQL查询(也包括一些推理);这样的好处在于可以利用一个图数据库直接存储知识图谱,坏处在于如果数据发生变更,导致Mapping失效,那么需要重新做导出,因为需要维护RDB数据和知识图谱数据的同步和一致性,这样的过程都不可能做到很实时,而且需要占据额外的存储空间,所以这种materialization的方式适合一次性的导入,数据变更不太频繁,之后的使用场景更多是读操作;也可以是建立Logical Table(你可以认为是一种Virtual RDF Graph),这样并没有实际将所有数据转换为RDF,而是在SPARQL查询的时候,通过Mapping规则,将SPARQL转换为SQL来进行执行。这种适合读写都比较频繁,特别是sensor或data stream的接入,同时也适合一些无法将数据有安全担心,只能了解数据库schema的数据的集成和知识图谱化,坏处在于在线服务会慢一些,更适合OLAP或简单的OLTP的查询。

凯ms4

赞同来自:

所以,这些都应该是老师在课上讲清楚的东西,但却没讲清楚!就是前面概念介绍太多,应该有针对性! 但老师也确实很辛苦。还是为老师赞一个!

要回复问题请先登录注册