備註
這項功能目前處於公開預覽狀態。 此預覽版是在沒有服務等級協定的情況下提供,不建議用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
本文提供整個 GQL 文件中使用的社交網路圖形型別的完整技術規格。 此結構描述展示了複雜圖形的許多常見功能,並作為 GQL 語言文件中所有查詢範例的基礎。
備註
社交網絡的例子源自 GDC(圖數據委員會)發布的 LDBC SNB(LDBC 社交網絡基準)。 有關更多詳細信息 ,請參閱文章“LDBC 社交網絡基準” 。 請參閱 社交網路範例圖集 ,了解如何取得該衍生資料集的副本。
網域規格
社交網路網域會以具有下列實體的全方位社交平臺為模型:
- 具有人口統計和行為特徵的人
- 包括教育機構(大學)和雇主(公司)在內的組織
- 從城市到國家/地區再到大陸的地理層次結構
- 帶有論壇、帖子和線程評論的內容系統
- 具有標籤和標籤分類的分類系統
- 人與組織之間的社會和專業關係
如需此網域實體的更詳細介紹,請參閱 GQL 語言指南。
示範的結構描述功能
這種圖表類型展示了先進的 GQL 功能:
- 使用抽象基底類型 (,
Message,Organization) 的Place - 具有共用屬性定義的多個繼承模式
- 相同關係標籤連接不同節點類型組合的邊緣類型族群
- 全面的約束系統 ,通過關鍵約束確保數據完整性
- 混合關係模式 ,包括分層遏制、社交聯繫和內容互動
完整的結構描述定義
下列 圖表類型 以 GQL 語法提供完整的結構描述定義:
(:TagClass => { id :: UINT64 NOT NULL, name :: STRING, url :: STRING }),
CONSTRAINT tag_class_pk
FOR (n:TagClass) REQUIRE (n.id) IS KEY,
(:TagClass)-[:isSubclassOf]->(:TagClass),
(:Tag => { id :: UINT64 NOT NULL, name :: STRING, url :: STRING }),
(:Tag)-[:hasType]->(:TagClass),
CONSTRAINT tag_pk
FOR (n:Tag) REQUIRE (n.id) IS KEY,
ABSTRACT
(:Place => { id :: UINT64 NOT NULL, name :: STRING, url :: STRING }),
(:City => :Place),
(:Country => :Place),
(:Continent => :Place),
CONSTRAINT place_pk
FOR (n:Place) REQUIRE (n.id) IS KEY,
(:City)-[:isPartOf]->(:Country),
(:Country)-[:isPartOf]->(:Continent),
ABSTRACT
(:Organization => { id :: UINT64 NOT NULL, name :: STRING, url :: STRING }),
(:University => :Organization),
(:Company => :Organization),
CONSTRAINT organization_pk
FOR (n:Organization) REQUIRE (n.id) IS KEY,
(:University)-[:isLocatedIn]->(:City),
(:Company)-[:isLocatedIn]->(:Country),
(:Person => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
firstName :: STRING,
lastName :: STRING,
gender :: STRING,
birthday :: UINT64,
browserUsed :: STRING,
locationIP :: STRING
}),
CONSTRAINT person_pk
FOR (n:Person) REQUIRE (n.id) IS KEY,
(:Person)-[:hasInterest]->(:Tag),
(:Person)-[:isLocatedIn]->(:City),
(:Person)-[:studyAt { classYear :: UINT64 }]->(:University),
(:Person)-[:workAt { workFrom :: UINT64 }]->(:Company),
(:Person)-[:knows { creationDate :: ZONED DATETIME }]->(:Person),
(:Forum => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
title :: STRING
}),
CONSTRAINT forum_pk
FOR (n:Forum) REQUIRE (n.id) IS KEY,
(:Forum)-[:hasTag]->(:Tag),
(:Forum)-[:hasMember { creationDate :: ZONED DATETIME, joinDate :: UINT64 }]->(:Person),
(:Forum)-[:hasModerator]->(:Person),
ABSTRACT (:Message => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
browserUsed :: STRING,
locationIP :: STRING,
content :: STRING,
length :: UINT64
}),
CONSTRAINT message_pk
FOR (n:Message) REQUIRE (n.id) IS KEY,
(:Post => :Message += {
language :: STRING,
imageFile :: STRING
}),
(:Person)-[:likes { creationDate :: ZONED DATETIME }]->(:Post),
(:Post)-[:hasCreator]->(:Person),
(:Post)-[:isLocatedIn]->(:Country),
(:Forum)-[:containerOf]->(:Post),
(:Comment => :Message),
(:Person)-[:likes { creationDate :: ZONED DATETIME }]->(:Comment),
(:Comment)-[:hasCreator]->(:Person),
(:Comment)-[:isLocatedIn]->(:Country),
(:Comment)-[:replyOf]->(<:Message),
(:Person)-[:likes { creationDate :: ZONED DATETIME }]->(<:Message),
(<:Message)-[:hasCreator]->(:Person),
(<:Message)-[:isLocatedIn]->(:Country),
(<:Message)-[:hasTag]->(:Tag)
綱目分析
節點類型階層
結構描述定義了三個繼承階層:
地理層次:
-
Place(摘要)→City,Country,Continent
組織階層:
-
Organization(摘要)→University,Company
內容層次結構:
-
Message(摘要)→Post,Comment
邊緣類型族群
數個邊標示會形成連接不同節點組合的類型族群:
位置關係 (isPartOf):
- 城市所屬國家/地區:
(:City)-[:isPartOf]->(:Country) - 國家/地區屬於大洲:
(:Country)-[:isPartOf]->(:Continent)
內容互動 (likes):
- 人們喜歡帖子:
(:Person)-[:likes]->(:Post) - 人們喜歡評論:
(:Person)-[:likes]->(:Comment) - 人們喜歡訊息:
(:Person)-[:likes]->(<:Message)
地理位置 (isLocatedIn):
- 人們生活在城市:
(:Person)-[:isLocatedIn]->(:City) - 位於城市的大學:
(:University)-[:isLocatedIn]->(:City) - 位於國家/地區的公司:
(:Company)-[:isLocatedIn]->(:Country) - 位於國家/地區的職位:
(:Post)-[:isLocatedIn]->(:Country) - 留言分布於各國/地區:
(:Comment)-[:isLocatedIn]->(:Country)
主要限制
每個節點類型都有相應的索引鍵約束,確保按屬性唯一 id 識別:
-
tag_class_pk、tag_pk、place_pk、organization_pk、person_pk、forum_pk、message_pk