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.

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM