新瓶装旧酒:实践篇(二)关系数据库到RDF

2020 年 7 月 15 日 AINLP

上一篇文章介绍了我们所使用的数据。其实,知识图谱数据的来源主要有三个:结构化数据、半结构化数据和非结构化的数据。我们所使用的电影数据就是结构化的数据。半结构化的数据指的是数据有一定的组织形式,但较结构化数据而言更松散(属性名和属性值具有多样性,比如“生日”就有“出生日期”、“诞辰”等多种表达方式),例如百度百科、维基百科、互动百科等;对infobox(下图红框)中的属性和属性值做一定处理后,我们就可以得到结构化的数据。非结构化数据通常是指我们看到的一切纯文本数据。









本文首先介绍W3C的RDB2RDF工作小组制定的两个标准,用于将关系型数据库的数据转换为RDF格式的数据。然后介绍如何利用d2rq这个工具把我们Mysql中的数据转为RDF。


  一、两个标准  


第一个标准是direct mapping,即直接映射。何为直接映射?看过前面文章的读者心中应该有些猜测了(传送门:“知识图谱基础之RDF,RDFS与OWL”,请参考第二个部分第一段内容)。规则十分简单:


1. 数据库的表作为本体中的类(Class)。比如我们在mysql中保存的数据,一共有5张表。那么通过映射后,我们的本体就有5个类了,而不是我们自己定义的三个类。

2. 表的列作为属性(Property)。

3. 表的行作为实例/资源。

4. 表的单元格值为字面量

5. 如果单元格所在的列是外键,那么其值为IRI,或者说实体/资源。


在实际应用中我们很少用到这种方法,尽管它是最便捷的方式。详细的解释和示例,请参考W3C的官方文档(A Direct Mapping of Relational Data to RDF, https://www.w3.org/TR/rdb-direct-mapping/)。


Direct mapping的缺点很明显,不能把数据库的数据映射到我们自己定义的本体上。RDB2RDF工作小组指定了另外一个标准——R2RML,可以让用户更灵活的编辑和设置映射规则。


我不打算在这里详细地讲解R2RML的具体语法和规则,读者可以自己参考W3C的文档(R2RML: RDB to RDF Mapping Language,https://www.w3.org/TR/r2rml/)。其实可以把它当做一个工具,用的时候再查文档即可,不用把所有的特性和语法都记下来,只需要知道它是什么,能干什么即可。为了让读者有个直观地认识,我们以mysql中的数据为例,介绍怎么把person这个表映射到我们在protege中定义的Person类上,person_name映射到personName上。


@prefix rr: <R2RML: RDB to RDF Mapping Language Schema>.@prefix : <http://www.kgdemo.com#>.

<#TriplesMap1> rr:logicalTable [ rr:tableName "person" ]; rr:subjectMap [ rr:template "http://www.kgdemo.com/person/{person_id}"; rr:class :Person; ]; rr:predicateObjectMap [ rr:predicate :personName; rr:objectMap [ rr:column "person_name" ]; ].


rr:template指定实体/资源的IRI生成模板,括号中的字符串是对应表中的某个列名。在本例中指每个人物的IRI由我们预定义的前缀加人物ID组成。rr:Class声明这些实体/资源的类是我们在Ontology中定义的Person。rr:predicate指定谓语,即属性。rr:objectMap指定该属性的值是来源于哪一列。其他属性的定义类似,读者可以自己查文档尝试。关于外键的定义,读者也可以参考文档相关示例。


R2RML也支持SQL语句来对查询结果进行映射。比如,我们有一列表示某人的性别,我们可以用SQL语句选取男性的行,把这些行映射成我们定义的男性类。女性同理。这种特性大大增强了其灵活性。


下面我们介绍如何用d2rq这个工具把mysql的数据转为RDF。



二、D2RQ


D2RQ(http://d2rq.org,demo使用0.8.1版本,外网网速不佳的朋友可以在我公众号菜单“框架工具”获取下载链接)的官方介绍是:

Accessing Relational Databases as Virtual RDF Graphs

没错,以虚拟RDF图的方式访问关系数据库是其最主要的一个特性。它的机理就是通过mapping文件,把对RDF的查询等操作翻译成SQL语句,最终在RDB上实现对应操作。在做知识图谱项目的时候,我们可以灵活地选择数据访问方式。当对外提供服务,查询操作比较频繁的情况下,最好是将RDB的数据直接转为RDF,会节省很多SPARQL到SQL的转换时间。


D2RQ提供了自己的mapping language,其形式和R2RML类似。D2RQ发布了r2rml-kit以支持W3C制定的两个映射标准。D2RQ有一个比较方便的地方,可以根据你的数据库自动生成预定义的mapping文件,用户可以在这个文件上修改,把数据映射到自己的本体上。就我们这个例子而言,数据关系比较简单,自己编辑R2RML文件或者在D2RQ生成的mapping文件上修改效率差不多。在数据关系很复杂的时候,我建议直接在D2RQ生成的mapping文件上修改,会节省很多时间。D2RQ的mapping language也很简洁,同样支持对SQL结果进行映射,其SQL是用condition关键词隐式地表达,不像R2RML是显式的SQL语句。更多的细节请参考官方文档。


下载D2RQ,进入其目录,运行下面的命令生成默认的mapping文件(如果报错,请检查jdbc驱动、时区设置、编码等问题):

generate-mapping -u root -o kg_demo_movie_mapping.ttl jdbc:mysql:///kg_demo_movie

root是mysql的用户名,没有密码则不输入,-o指定输出文件路径及名称,jdbc:mysql:///kg_demo_movie 指定我们要映射的数据库。该命令的其他参数及使用方式请参考文档。


根据我们的mysql数据库生成的默认mapping文件:


@prefix map: <#> .@prefix db: <> .@prefix vocab: <vocab/> .@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .@prefix xsd: <XML Schema> .@prefix d2rq: <http://www.wiwiss.fu-berlin.de/suhl/bizer/D2RQ/0.1#> .@prefix jdbc: <http://d2rq.org/terms/jdbc/> .
map:database a d2rq:Database; d2rq:jdbcDriver "com.mysql.jdbc.Driver"; d2rq:jdbcDSN "jdbc:mysql:///kg_demo_movie"; d2rq:username "root"; jdbc:autoReconnect "true"; jdbc:zeroDateTimeBehavior "convertToNull"; .
# Table genremap:genre a d2rq:ClassMap; d2rq:dataStorage map:database; d2rq:uriPattern "genre/@@genre.genre_id@@"; d2rq:class vocab:genre; d2rq:classDefinitionLabel "genre"; .map:genre__label a d2rq:PropertyBridge; d2rq:belongsToClassMap map:genre; d2rq:property rdfs:label; d2rq:pattern "genre #@@genre.genre_id@@"; .map:genre_genre_id a d2rq:PropertyBridge; d2rq:belongsToClassMap map:genre; d2rq:property vocab:genre_genre_id; d2rq:propertyDefinitionLabel "genre genre_id"; d2rq:column "genre.genre_id"; d2rq:datatype xsd:integer; .map:genre_genre_name a d2rq:PropertyBridge; d2rq:belongsToClassMap map:genre; d2rq:property vocab:genre_genre_name; d2rq:propertyDefinitionLabel "genre genre_name"; d2rq:column "genre.genre_name"; .
# Table moviemap:movie a d2rq:ClassMap; d2rq:dataStorage map:database; d2rq:uriPattern "movie/@@movie.movie_id@@"; d2rq:class vocab:movie; d2rq:classDefinitionLabel "movie"; .map:movie__label a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property rdfs:label; d2rq:pattern "movie #@@movie.movie_id@@"; .map:movie_movie_id a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property vocab:movie_movie_id; d2rq:propertyDefinitionLabel "movie movie_id"; d2rq:column "movie.movie_id"; d2rq:datatype xsd:integer; .map:movie_movie_title a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property vocab:movie_movie_title; d2rq:propertyDefinitionLabel "movie movie_title"; d2rq:column "movie.movie_title"; .map:movie_movie_introduction a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property vocab:movie_movie_introduction; d2rq:propertyDefinitionLabel "movie movie_introduction"; d2rq:column "movie.movie_introduction"; .map:movie_movie_rating a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property vocab:movie_movie_rating; d2rq:propertyDefinitionLabel "movie movie_rating"; d2rq:column "movie.movie_rating"; d2rq:datatype xsd:double; .map:movie_movie_release_date a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property vocab:movie_movie_release_date; d2rq:propertyDefinitionLabel "movie movie_release_date"; d2rq:column "movie.movie_release_date"; .
# Table movie_to_genre (n:m)map:movie_to_genre__link a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property vocab:movie_to_genre; d2rq:refersToClassMap map:genre; d2rq:join "movie_to_genre.movie_id => movie.movie_id"; d2rq:join "movie_to_genre.genre_id => genre.genre_id"; .
# Table personmap:person a d2rq:ClassMap; d2rq:dataStorage map:database; d2rq:uriPattern "person/@@person.person_id@@"; d2rq:class vocab:person; d2rq:classDefinitionLabel "person"; .map:person__label a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property rdfs:label; d2rq:pattern "person #@@person.person_id@@"; .map:person_person_id a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property vocab:person_person_id; d2rq:propertyDefinitionLabel "person person_id"; d2rq:column "person.person_id"; d2rq:datatype xsd:integer; .map:person_person_birth_day a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property vocab:person_person_birth_day; d2rq:propertyDefinitionLabel "person person_birth_day"; d2rq:column "person.person_birth_day"; .map:person_person_death_day a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property vocab:person_person_death_day; d2rq:propertyDefinitionLabel "person person_death_day"; d2rq:column "person.person_death_day"; .map:person_person_name a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property vocab:person_person_name; d2rq:propertyDefinitionLabel "person person_name"; d2rq:column "person.person_name"; .map:person_person_english_name a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property vocab:person_person_english_name; d2rq:propertyDefinitionLabel "person person_english_name"; d2rq:column "person.person_english_name"; .map:person_person_biography a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property vocab:person_person_biography; d2rq:propertyDefinitionLabel "person person_biography"; d2rq:column "person.person_biography"; .map:person_person_birth_place a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property vocab:person_person_birth_place; d2rq:propertyDefinitionLabel "person person_birth_place"; d2rq:column "person.person_birth_place"; .
# Table person_to_movie (n:m)map:person_to_movie__link a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property vocab:person_to_movie; d2rq:refersToClassMap map:person; d2rq:join "person_to_movie.movie_id => movie.movie_id"; d2rq:join "person_to_movie.person_id => person.person_id"; .


下面是根据我们定义的本体修改的mapping文件。首先,为了表达简练,我们给本体的IRI设置一个前缀。这样

http://www.kgdemo.com#Person

就可以表达为

:Person

其他的词汇同理。


接下来,把默认的映射词汇改为我们本体中的词汇即可。在处理外键的时候要注意当前编辑的属性的domain和range,belongsToClassMap是domain,refersToClassMap是range。


@prefix map: <#> .@prefix db: <> .@prefix vocab: <vocab/> .@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .@prefix xsd: <XML Schema> .@prefix d2rq: <http://www.wiwiss.fu-berlin.de/suhl/bizer/D2RQ/0.1#> .@prefix jdbc: <http://d2rq.org/terms/jdbc/> .@prefix : <http://www.kgdemo.com#> .
map:database a d2rq:Database; d2rq:jdbcDriver "com.mysql.jdbc.Driver"; d2rq:jdbcDSN "jdbc:mysql:///kg_demo_movie"; d2rq:username "root"; jdbc:autoReconnect "true"; jdbc:zeroDateTimeBehavior "convertToNull"; .
# Table genremap:genre a d2rq:ClassMap; d2rq:dataStorage map:database; d2rq:uriPattern "genre/@@genre.genre_id@@"; d2rq:class :Genre; d2rq:classDefinitionLabel "genre"; .map:genre_genre_name a d2rq:PropertyBridge; d2rq:belongsToClassMap map:genre; d2rq:property :genreName; d2rq:propertyDefinitionLabel "genre genre_name"; d2rq:column "genre.genre_name"; .
# Table moviemap:movie a d2rq:ClassMap; d2rq:dataStorage map:database; d2rq:uriPattern "movie/@@movie.movie_id@@"; d2rq:class :Movie; d2rq:classDefinitionLabel "movie"; .map:movie_movie_title a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property :movieTitle; d2rq:propertyDefinitionLabel "movie movie_title"; d2rq:column "movie.movie_title"; .map:movie_movie_introduction a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property :movieIntroduction; d2rq:propertyDefinitionLabel "movie movie_introduction"; d2rq:column "movie.movie_introduction"; .map:movie_movie_rating a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property :movieRating; d2rq:propertyDefinitionLabel "movie movie_rating"; d2rq:column "movie.movie_rating"; d2rq:datatype xsd:double; .map:movie_movie_release_date a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property :movieReleaseDate; d2rq:propertyDefinitionLabel "movie movie_release_date"; d2rq:column "movie.movie_release_date"; .
# Table movie_to_genre (n:m)map:movie_to_genre__link a d2rq:PropertyBridge; d2rq:belongsToClassMap map:movie; d2rq:property :hasGenre; d2rq:refersToClassMap map:genre; d2rq:join "movie_to_genre.movie_id => movie.movie_id"; d2rq:join "movie_to_genre.genre_id => genre.genre_id"; .
# Table personmap:person a d2rq:ClassMap; d2rq:dataStorage map:database; d2rq:uriPattern "person/@@person.person_id@@"; d2rq:class :Person; d2rq:classDefinitionLabel "person"; .map:person_person_birth_day a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property :personBirthDay; d2rq:propertyDefinitionLabel "person person_birth_day"; d2rq:column "person.person_birth_day"; .map:person_person_death_day a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property :personDeathDay; d2rq:propertyDefinitionLabel "person person_death_day"; d2rq:column "person.person_death_day"; .map:person_person_name a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property :personName; d2rq:propertyDefinitionLabel "person person_name"; d2rq:column "person.person_name"; .map:person_person_english_name a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property :personEnglishName; d2rq:propertyDefinitionLabel "person person_english_name"; d2rq:column "person.person_english_name"; .map:person_person_biography a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property :personBiography; d2rq:propertyDefinitionLabel "person person_biography"; d2rq:column "person.person_biography"; .map:person_person_birth_place a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property :personBirthPlace; d2rq:propertyDefinitionLabel "person person_birth_place"; d2rq:column "person.person_birth_place"; .
# Table person_to_movie (n:m)map:person_to_movie__link a d2rq:PropertyBridge; d2rq:belongsToClassMap map:person; d2rq:property :hasActedIn; d2rq:refersToClassMap map:movie; d2rq:join "person_to_movie.movie_id => movie.movie_id"; d2rq:join "person_to_movie.person_id => person.person_id"; .


语法规则比较简单,具体的操作不再赘述,读者可以参考相关文档(The D2RQ Mapping Language,http://d2rq.org/d2rq-language)。


D2RQ支持的数据库有Oracle、MySQL、PostgreSQL、SQL Server、HSQLDB、Interbase/Firebird。也支持其他某些数据库,但可能会有限制。请参考数据库兼容性说明(Accessing Relational Databases as Virtual RDF Graphs,http://d2rq.org/#compatibility)。


使用下面的命令将我们的数据转为RDF:

.\dump-rdf.bat -o kg_demo_movie.nt .\kg_demo_movie_mapping.ttl

kg_demo_movie_mapping.ttl是我们修改后的mapping文件。其支持导出的RDF格式有“TURTLE”, “RDF/XML”, “RDF/XML-ABBREV”, “N3”, 和“N-TRIPLE”。“N-TRIPLE”是默认的输出格式。


kg_demo_movie.nt 中关于演员的片段:

<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#person/163441> <http://www.kgdemo.com#hasActedIn> <file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/13> .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#person/240171> <http://www.kgdemo.com#hasActedIn> <file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/24> .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#person/1336> <http://www.kgdemo.com#hasActedIn> <file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/79> .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#person/1337> <http://www.kgdemo.com#hasActedIn> <file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/79> .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#person/1338> <http://www.kgdemo.com#hasActedIn> <file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/79> .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#person/1339> <http://www.kgdemo.com#hasActedIn> <file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/79> .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#person/1340> <http://www.kgdemo.com#hasActedIn> <file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/79> .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#person/1341> <http://www.kgdemo.com#hasActedIn> <file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/79> .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#person/643> <http://www.kgdemo.com#hasActedIn> <file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/82> .


kg_demo_movie.nt 中关于电影的片段:

<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/54321> <http://www.kgdemo.com#movieRating> "7.0E0"^^<XML Schema> .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/54321> <http://www.kgdemo.com#movieIntroduction> "" .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/54321> <http://www.kgdemo.com#movieTitle> "Mang quan gui shou" .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/54321> <http://www.kgdemo.com#movieReleaseDate> "1979-07-13" .<file:///D:/d2rq/d2rq-0.8.1/kg_demo_movie.nt#movie/54321> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.kgdemo.com#Movie> .



  总结  


本文介绍了W3C制定的从RDB到RDF的两个标准,并介绍了如何利用D2RQ结合我们定义的Ontology将数据转为RDF。mapping文件和RDF数据存放在github项目中,读者可以下载查看或编辑。下一篇文章是概念篇,将介绍语义网技术栈中另一个重要技术标准——RDF的查询语言SPARQL。


推荐阅读

这个NLP工具,玩得根本停不下来

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
0

相关内容

资源描述框架(英语:Resource Description Framework,缩写为RDF),是万维网联盟(W3C)提出的一组标记语言的技术规范,以便更为丰富地描述和表达网络资源的内容与结构。
专知会员服务
143+阅读 · 2020年8月21日
最新《图神经网络知识图谱补全》综述论文
专知会员服务
155+阅读 · 2020年7月29日
【SIGMOD2020-腾讯】Web规模本体可扩展构建
专知会员服务
29+阅读 · 2020年4月12日
【ICLR2020-哥伦比亚大学】多关系图神经网络CompGCN
专知会员服务
49+阅读 · 2020年4月2日
【图神经网络(GNN)结构化数据分析】
专知会员服务
115+阅读 · 2020年3月22日
【斯坦福大学-论文】实体上下文关系路径的知识图谱补全
知识图谱融合方法,140页ppt,南京大学胡伟老师
专知会员服务
142+阅读 · 2020年2月19日
知识图谱本体结构构建论文合集
专知会员服务
106+阅读 · 2019年10月9日
医疗知识图谱构建与应用
专知会员服务
384+阅读 · 2019年9月25日
知识图谱在贝壳找房的从0到1实践
ResysChina
13+阅读 · 2018年9月6日
技术动态 | 自底向上构建知识图谱全过程
开放知识图谱
8+阅读 · 2018年7月28日
知识图谱系列 | 知识图谱的前世今生与RDF的实践
人工智能头条
6+阅读 · 2018年7月27日
干货好文!自底向上——知识图谱构建技术初探
科普 | 知识图谱相关的名词解释
开放知识图谱
12+阅读 · 2017年12月4日
漆桂林 | 知识图谱的应用
开放知识图谱
37+阅读 · 2017年9月26日
【知识图谱】如何构建知识图谱
产业智能官
134+阅读 · 2017年9月19日
项目实战:如何构建知识图谱
PaperWeekly
30+阅读 · 2017年9月14日
知识图谱之语义网络篇
炼数成金订阅号
7+阅读 · 2017年8月16日
漆桂林 | 知识图谱之语义网络篇
开放知识图谱
19+阅读 · 2017年8月12日
Self-Attention Graph Pooling
Arxiv
13+阅读 · 2019年6月13日
Arxiv
3+阅读 · 2019年3月1日
Arxiv
6+阅读 · 2018年3月27日
VIP会员
相关VIP内容
专知会员服务
143+阅读 · 2020年8月21日
最新《图神经网络知识图谱补全》综述论文
专知会员服务
155+阅读 · 2020年7月29日
【SIGMOD2020-腾讯】Web规模本体可扩展构建
专知会员服务
29+阅读 · 2020年4月12日
【ICLR2020-哥伦比亚大学】多关系图神经网络CompGCN
专知会员服务
49+阅读 · 2020年4月2日
【图神经网络(GNN)结构化数据分析】
专知会员服务
115+阅读 · 2020年3月22日
【斯坦福大学-论文】实体上下文关系路径的知识图谱补全
知识图谱融合方法,140页ppt,南京大学胡伟老师
专知会员服务
142+阅读 · 2020年2月19日
知识图谱本体结构构建论文合集
专知会员服务
106+阅读 · 2019年10月9日
医疗知识图谱构建与应用
专知会员服务
384+阅读 · 2019年9月25日
相关资讯
知识图谱在贝壳找房的从0到1实践
ResysChina
13+阅读 · 2018年9月6日
技术动态 | 自底向上构建知识图谱全过程
开放知识图谱
8+阅读 · 2018年7月28日
知识图谱系列 | 知识图谱的前世今生与RDF的实践
人工智能头条
6+阅读 · 2018年7月27日
干货好文!自底向上——知识图谱构建技术初探
科普 | 知识图谱相关的名词解释
开放知识图谱
12+阅读 · 2017年12月4日
漆桂林 | 知识图谱的应用
开放知识图谱
37+阅读 · 2017年9月26日
【知识图谱】如何构建知识图谱
产业智能官
134+阅读 · 2017年9月19日
项目实战:如何构建知识图谱
PaperWeekly
30+阅读 · 2017年9月14日
知识图谱之语义网络篇
炼数成金订阅号
7+阅读 · 2017年8月16日
漆桂林 | 知识图谱之语义网络篇
开放知识图谱
19+阅读 · 2017年8月12日
Top
微信扫码咨询专知VIP会员