• dgraph的查询语言--【graphQL+-】阅读笔记


    原文:https://docs.dgraph.io/query-language/

        dgraph的graphQL+-是基于facebook的graphQL语言的一门查询语言。graphQL并不是为图数据库开发的语言,而是一种比较像图的查询语法,schema和子图让它成为一门很棒的语言。我们开发者修改了这门语言(graphQL),让它可以更好地支持图的操作,我们增减了graphQL的一些功能以让它能更好地支持图数据库。所以我们把这个被简化丰富过的语言叫做graphQL+-.

    graphQL+-还在开发中,我们仍然在增加一些feature,我们将来可能还会简化它。

        这个文档是dgraph的查询参考材料,它不是一个tutorial。如果你已经知道怎样用graphQL+-写查询语句但想知道一些细节,比如语法,indices或是功能等等,那么这个文档很适合你。

    注:如果你是dgraph的新手,想要学习怎么用dgraph和graphQL+-,可以参考 https://tour.dgraph.io

    Running examples

    文档例子用的是21 million triples(不知道怎么翻译)关于电影和演员的数据。这些示例的查询语句运行后返回数据。这些查询底层其实是由https://play.dgraph.io/.的Dgraph实例执行出来的。为了能本地运行这些查询语句或为了能体验更多,建议先到Getting Started 看下,这里面展示了怎么加载数据集。

    GraphQL+- 基本原理

    一个graphQL+-查询语句基于查询的条件来找相应的node,匹配图中的部分并返回。

    一个查询是由一些内部嵌套的块组成的。由一个左大括号开始,里面写的是一些过滤条件。

    返回值

    每个查询都有一个名字,写在查询的最开始,返回值也会以这个名字返回。

    如果一个边是一值类型,那么这个值可以通过给出边名的形式返回。

    查询示例:在这个鸽子中,边(edge)联系了电影、导演和演员,电影有一个名字、发行日期、标识符。这个bladerunner的查询语句,过滤条件是一个电影的名字

    这里省略了很多。。。。之后慢慢看

    语言支持

    Note :@lang directive must be specified in the schema to query or mutate predicates with language tags.如(@lang是表明当前是什么语言标签)

     dgraph支持UTF-8字符串

    在一个查询中,假设一个字符串edge,那么语法

    edge@lang1:...:langN

    表示:

    -最多将返回一条结果

    -偏好列表是从左至右:如果一个值在最左边的语言中没有找到,那么将去匹配下一个,以次类推。

    -如果在所有的语言中都没有找到,那么没有返回值。

    -最后的点“.”表示如果没有找到任何一个语言,那么会随便返回一个语言(不知道是不是这个意思),原句是A final . means that a value without a specified language is returned or if there is no value without language, a value in “some” language is returned.

     示例:

    name=>寻找一个未加标签的字符串,如果没有未加标签的值那么什么也不返回

    name@.=>查询一个未加标签的字符串,如果没有那么可以返回任意语言

    name@en=>查询一个加了en标签的字符串,如果没有那什么也不返回

    name@en:.=>查询一个加了en标签的字符串,然后查询未加标签的字符串,如果没有那么返回任意语言

    name@en:pl=>查询en,然后查询pl,如果什么都没有那什么也不返回

    name@en:pl:.=>查询en,然后查询pl,然后未加标签,如果没有那么返回任意语言

    Note: In functions, language lists are not allowed. Single language, . notation and attribute name without language tag works as described above.

    Note: In case of full text search functions (alloftextanyoftext), when no language is specified, default (English) Full Text Search tokenizer is used.

  • 相关阅读:
    关于session
    信息查找界面
    Java8 新特性 (三)Java内置的函数式接口
    第二节:表的管理
    【LeetCode-数组】有序数组中的单一元素
    【LeetCode-字符串】一次编辑
    【LeetCode-贪心】跳跃游戏 II
    【LeetCode-数组】三个数的最大乘积
    学习进度条94
    学习进度条93
  • 原文地址:https://www.cnblogs.com/zuxiaoyuan/p/9274912.html
Copyright © 2020-2023  润新知