หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Note
คุณลักษณะนี้อยู่ในการแสดงตัวอย่างสาธารณะ การแสดงตัวอย่างนี้จะมีให้โดยไม่มีข้อตกลงระดับบริการ และไม่แนะนําสําหรับปริมาณงานการผลิต คุณลักษณะบางอย่างอาจไม่ได้รับการสนับสนุนหรืออาจมีความสามารถที่จํากัด สําหรับข้อมูลเพิ่มเติม ให้ดู เงื่อนไขเพิ่มเติมของการใช้สําหรับการแสดงตัวอย่าง Microsoft Azure
บทความนี้มีข้อกําหนดทางเทคนิคที่สมบูรณ์สําหรับกราฟประเภทเครือข่ายสังคมที่ใช้ตลอดทั้งเอกสารประกอบ GQL Schema นี้แสดงให้เห็นถึงคุณลักษณะทั่วไปจํานวนมากของกราฟที่ซับซ้อนและทําหน้าที่เป็นพื้นฐานสําหรับตัวอย่างคิวรีทั้งหมดในเอกสารภาษา GQL
Note
เครือข่ายสังคมเป็นตัวอย่างมาจาก LDBC SNB (LDBC Social Network Benchmark) ที่เผยแพร่โดย GDC (Graph Data Council) ดูบทความ "มาตรฐานเครือข่ายทางสังคมของ LDBC" สําหรับรายละเอียดเพิ่มเติม ดู ชุดข้อมูลกราฟตัวอย่างเครือข่ายสังคมสําหรับ วิธีการรับสําเนาของชุดข้อมูลที่ได้มา
ข้อกําหนดโดเมน
แบบจําลองโดเมนเครือข่ายสังคมออนไลน์ที่ครอบคลุมแพลตฟอร์มโซเชียลด้วยเอนทิตีต่อไปนี้:
- บุคคล ที่มีคุณสมบัติข้อมูลประชากรและพฤติกรรม
- องค์กรต่าง ๆ รวมถึงสถาบันการศึกษา (มหาวิทยาลัย) และนายจ้าง (บริษัท)
- ลําดับชั้นทางภูมิศาสตร์ จากเมืองผ่านประเทศ/ภูมิภาคไปยังทวีป
- ระบบเนื้อหา ที่มีฟอรัม โพสต์ และข้อคิดเห็นแบบเธรด
- ระบบการจัด หมวดหมู่ที่มีแท็กและการจัดประเภทแท็ก
- ความสัมพันธ์ทางสังคมและระดับมืออาชีพ ระหว่างบุคคลและองค์กร
สําหรับคําแนะนําโดยละเอียดเพิ่มเติมเกี่ยวกับเอนทิตีของโดเมนนี้ ดูคู่มือภาษา GQL
สาธิตคุณลักษณะ Schema
กราฟชนิดนี้แสดงความสามารถ GQL ขั้นสูง:
-
การสืบทอดชนิดโหนด โดยใช้ชนิดฐานนามธรรม (
Message,Organization,Place) - รูปแบบการสืบทอดหลายรายการ ที่มีข้อกําหนดคุณสมบัติที่ใช้ร่วมกัน
- กลุ่มประเภทขอบ ที่ป้ายความสัมพันธ์เดียวกันเชื่อมต่อชุดประเภทของโหนดที่แตกต่างกัน
- ระบบข้อจํากัดที่ครอบคลุม ทําให้เกิดความสมบูรณ์ของข้อมูลผ่านข้อจํากัดหลัก
- รูปแบบความสัมพันธ์แบบผสม รวมถึงการจํากัดขอบเขตแบบลําดับชั้น การเชื่อมต่อทางสังคม และการโต้ตอบกับเนื้อหา
ทําข้อกําหนด Schema ให้เสร็จสมบูรณ์
ชนิดกราฟต่อไปนี้มีข้อกําหนด Schema ที่สมบูรณ์ในไวยากรณ์ 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)
การวิเคราะห์ Schema
ลําดับชั้นของชนิดโหนด
Schema จะกําหนดลําดับชั้นการสืบทอดสามรายการ:
ลําดับชั้นทางภูมิศาสตร์:
-
Place(บทคัดย่อ) →City,CountryContinent
ลําดับชั้นขององค์กร:
-
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_pkmessage_pk