资讯专栏INFORMATION COLUMN

Cayley图数据库的可视化(Visualize)

BakerJ / 3271人阅读

摘要:本文将继续上篇文章的旅程,给读者介绍如何在图数据库中实现查询结果的可视化。下面,让我们一起来探究的奥秘吧查询结果可视化图数据库的查询语句的参考网址为。我们使用的数据仍来自文章图数据库的简介及使用。

引入

  在文章Cayley图数据库的简介及使用中,我们已经了解了Cayley图数据库的安装、数据导入以及进行查询等。
  Cayley图数据库是Google开发的开源图数据库,虽然功能还没有Neo4J来得那么强大,但也有很多新的功能等待着我们去探索。本文将继续上篇文章的旅程,给读者介绍如何在Cayley图数据库中实现查询结果的可视化。
  下面,让我们一起来探究Cayley的奥秘吧~

查询结果可视化

  Cayley图数据库的查询语句的参考网址为:https://github.com/cayleygraph/cayley/blob/master/docs/GizmoAPI.md 。 若想实现查询结果的可视化,则需要使用Tag()函数,返回的结果样式应当如下:

[
{
  "source": "node1",
  "target": "node2"
},
{
  "source": "node1",
  "target": "node3"
},
]

即返回的结果中对节点会打上Tag,source为来源,颜色为蓝色,target为目的地,颜色为橙色。
  我们使用的数据仍来自文章Cayley图数据库的简介及使用 。 首先导入数据:

./cayley load -c cayley_example.yml -i data/China_Movie.nq

接着启动查询语句的web界面:

./cayley http -i ./data/China_Movie.nq -d memstore --host=:64210

在浏览器中输入网址:http://localhost:64210 ,选择Visualize,

输入命令:

g.V("<沈腾>").Tag("source").Out("").Tag("target").All();

就能能到关系图的可视化结果了,如下:

  接着我们来查看某个实体的所有属性及属性值,输入的命令如下:

var eq = "<流浪地球>";
var attrs = g.V(eq).OutPredicates().ToArray(); 

values = new Array();
for (i in attrs) {
    var value = g.V(eq).Out(attrs[i]).ToValue();
    values[i] = value;
}

var s = new Array();


for (i in attrs) {
  var key_val_json = new Object();
  key_val_json["id"] = values[i];
  key_val_json["source"] = eq;
  key_val_json["target"]= attrs[i]+":"+values[i];
  s[i] = key_val_json;
}

for (i =0; i< s.length; i++) {
    g.Emit(s[i]);
}

出来的图如下:

这样我们就实现了Cayley图数据库的可视化,但是效果一般,而且不支持对边赋值,因此无法在边上显示关系。

利用D3.js实现可视化展示

  利用D3.js,我们可以把查询到的结果,自己来画关系图。笔者主要参考的项目的Github地址为: https://github.com/ownthink/KG-View/blob/master/index.html 。我们只需要将查询到的结果复制粘贴到该HTML文件中即可。还是以《流浪地球》的所有属性及属性值为例,查询的命令如下:

var eq = "<流浪地球>";
var attrs = g.V(eq).OutPredicates().ToArray(); 

values = new Array();
for (i in attrs) {
    var value = g.V(eq).Out(attrs[i]).ToValue();
    values[i] = value;
}

var s = new Array();

for (i in attrs) {
  var key_val_json = new Object();
  key_val_json["source"] = eq;
  key_val_json["rela"] = attrs[i];
  key_val_json["target"] = values[i];
  key_val_json["type"] = "resolved";
  s[i] = key_val_json;
}

for (i =0; i< s.length; i++) {
    g.Emit(s[i]);
}

返回的结果如下:

{
    "result": [
        {
            "rela": "",
            "source": "<流浪地球>",
            "target": "",
            "type": "resolved"
        },
        {
            "rela": "",
            "source": "<流浪地球>",
            "target": "2",
            "type": "resolved"
        },
        {
            "rela": "",
            "source": "<流浪地球>",
            "target": "/item/%E6%B5%81%E6%B5%AA%E5%9C%B0%E7%90%83",
            "type": "resolved"
        },
        {
            "rela": "",
            "source": "<流浪地球>",
            "target": "40.83亿",
            "type": "resolved"
        },
        {
            "rela": "",
            "source": "<流浪地球>",
            "target": "46",
            "type": "resolved"
        },
        {
            "rela": "",
            "source": "<流浪地球>",
            "target": "50",
            "type": "resolved"
        },
        {
            "rela": "",
            "source": "<流浪地球>",
            "target": "2019.02.05",
            "type": "resolved"
        }
    ]
}

将result的结果数组复制粘贴至index.html文件,内容如下:






在浏览器中打开,效果如下:

这个绘图的效果会比Cayley自带的效果好一些,但功能还是有限。

总结

  网上关于Cayley的相关资料比较少,基本只有官方文档和社区作为参考。本文所讲述的内容如有不足之处,还请读者多多指教~另外,关于Cayley的可视化,如读者有更好地办法实现,也欢迎告知笔者~

注意:不妨了解下笔者的微信公众号: Python爬虫与算法(微信号为:easy_web_scrape), 欢迎大家关注~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17988.html

相关文章

  • Cayley据库简介及使用

    摘要:图数据库现已涌现出许多出众的软件,比如笔者写过的文章入门之中国电影票房排行浅析中的,为进行关系数据分析而构建的,高度可扩展的分布式图数据库以及的开源图数据库等。 图数据库   在如今数据库群雄逐鹿的时代中,非关系型数据库(NoSQL)已经占据了半壁江山,而图数据库(Graph Database)更是攻城略地,成为其中的佼佼者。  所谓图数据库,它应用图理论(Graph Theory)可...

    icyfire 评论0 收藏0
  • 利用Python实现卷积神经网络视化

    摘要:卷积神经网络模型可视化的重要性正如上文中介绍的癌症肿瘤诊断案例所看到的,研究人员需要对所设计模型的工作原理及其功能掌握清楚,这点至关重要。研究人员使用张迷彩坦克照片及张树林照片来训练一个神经网络。 摘要: 本文简单说明了CNN模型可视化的重要性,以及介绍了一些可视化CNN网络模型的方法,希望对读者有所帮助,使其能够在后续深度学习应用中构建更好的模型。 对于深度学习这种端到端模型来说,如...

    light 评论0 收藏0
  • 一文带你用视化理解卷积神经网络

    摘要:尤其当我们处理基于成千上万数据的卷积神经网络时更是如此。在本文中,我们将介绍多种用于可视化卷积神经网络的技术。我们将使用中的函数来可视化模型体系结构。滤波器可视化的构成模块滤波器是任何卷积神经网络的基本构建模块。 你的神经网络是如何生成这个结果的?这个问题也曾让许多数据科学家陷入了困境。其实,让我们去解释一个层数较少的简单神经网络工作原理并不难,但是当我们将计算机视觉项目中的神经网络层...

    alaege 评论0 收藏0

发表评论

0条评论

BakerJ

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<