Bagikan melalui


Contoh skema GQL: Jejaring sosial

Nota

Fitur ini saat ini dalam pratinjau publik. Pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi lebih lanjut, lihat Supplemental Terms of Use for Microsoft Azure Previews.

Artikel ini menyediakan spesifikasi teknis lengkap untuk jenis grafik jejaring sosial yang digunakan di seluruh dokumentasi GQL. Skema ini menunjukkan banyak fitur umum grafik kompleks dan berfungsi sebagai fondasi untuk semua contoh kueri dalam dokumentasi bahasa GQL.

Nota

Jejaring sosial adalah contoh berasal dari LDBC SNB (LDBC Social Network Benchmark) yang diterbitkan oleh GDC (Graph Data Council). Lihat artikel "Tolok Ukur Jejaring Sosial LDBC" untuk detail lebih lanjut. Lihat contoh himpunan data grafik jejaring sosial untuk cara mendapatkan salinan himpunan data turunan.

Diagram memperlihatkan skema jejaring sosial.

Spesifikasi domain

Domain jejaring sosial memodelkan platform sosial yang komprehensif dengan entitas berikut:

  • Orang dengan sifat demografis dan perilaku
  • Organisasi termasuk lembaga pendidikan (universitas) dan pengusaha (perusahaan)
  • Hierarki geografis dari kota melalui negara/wilayah ke benua
  • Sistem konten dengan forum, posting, dan komentar berulir
  • Sistem taksonomi dengan tag dan klasifikasi tag
  • Hubungan sosial dan profesional antara orang dan organisasi

Untuk pengenalan yang lebih rinci tentang entitas domain ini, lihat panduan bahasa GQL.

Fitur skema yang ditunjukkan

Jenis grafik ini menampilkan kemampuan GQL tingkat lanjut:

  • Pewarisan jenis node menggunakan jenis dasar abstrak (Message, Organization, Place)
  • Beberapa pola pewarisan dengan definisi properti bersama
  • Keluarga jenis edge tempat label hubungan yang sama menyambungkan kombinasi jenis node yang berbeda
  • Sistem batasan komprehensif yang memastikan integritas data melalui batasan utama
  • Pola hubungan campuran termasuk penahanan hierarkis, koneksi sosial, dan interaksi konten

Definisi skema lengkap

Jenis grafik berikut menyediakan definisi skema lengkap dalam sintaks 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)

Analisis skema

Hierarki jenis node

Skema mendefinisikan tiga hierarki pewarisan:

Hierarki geografis:

  • Place(abstrak) → City, , CountryContinent

Hierarki organisasi:

  • Organization (abstrak) → University, Company

Hierarki konten:

  • Message (abstrak) → Post, Comment

Keluarga jenis edge

Beberapa label tepi membentuk jenis keluarga yang menghubungkan kombinasi node yang berbeda:

Hubungan lokasi (isPartOf):

  • Kota milik negara/wilayah: (:City)-[:isPartOf]->(:Country)
  • Negara/wilayah milik benua: (:Country)-[:isPartOf]->(:Continent)

Interaksi konten (likes):

  • Orang-orang menyukai postingan: (:Person)-[:likes]->(:Post)
  • Orang-orang menyukai komentar: (:Person)-[:likes]->(:Comment)
  • Orang-orang menyukai pesan: (:Person)-[:likes]->(<:Message)

Lokasi geografis (isLocatedIn):

  • Orang-orang tinggal di kota: (:Person)-[:isLocatedIn]->(:City)
  • Universitas yang berlokasi di kota: (:University)-[:isLocatedIn]->(:City)
  • Perusahaan yang berlokasi di negara/wilayah: (:Company)-[:isLocatedIn]->(:Country)
  • Postingan yang berlokasi di negara/wilayah: (:Post)-[:isLocatedIn]->(:Country)
  • Komentar yang terletak di negara/wilayah: (:Comment)-[:isLocatedIn]->(:Country)

Batasan kunci

Setiap jenis node memiliki batasan kunci yang sesuai yang memastikan identifikasi unik berdasarkan id properti:

  • tag_class_pk, tag_pkplace_pk, organization_pk, person_pk, forum_pk, message_pk