2018 yılında, Iowa teknoloji topluluğunda zamanımı nereye yatırmam gerektiğini belirlemek için bir ağ modeli oluşturdum. Model, şirketler, kuruluşlar, kişiler, şehirler ve bağlantı gibi yaklaşık 10.000 öğeye ulaştı. Özvektör merkeziyetini kullanarak, benimle bağlantım olmayan ancak başka yerlerde yüksek bağlantılılığa sahip düğümleri ortaya çıkardım. Bu, gerçek kararlarımı etkiledi: TAI yönetim kuruluna katıldım, varlığından haberdar olmadığım toplulukları keşfettim ve Des Moines ile kıyı ekosistemleri arasındaki yoğunluk farklılıklarını haritalandırdım.

O model aklımdan çıkmadı. Brale’da geçirdiğim yıllar boyunca, kuvvet yönlendirmeli ilişki grafikleri sürekli karşımıza çıkıyor – ihraççıları varlıklara ve ray sistemlerine eşleştiriyor, program operatörlerini üzerinde çalıştıkları blok zincirlerine bağlıyor. Her seferinde, biri görsel dili yeniden icat ediyor. Bir renk ne anlama geliyor? Kalın bir çizgi neyi temsil ediyor? Bir şirketi, bir kişiyi ve bir olayı birbirinden ayıran şekil nedir? Bu kararlar her projede yeniden alınıyor. Grafiği açan bir sonraki kişi, içeriği okuyabilmek için tümünü tersine mühendislik yoluyla çözmek zorunda kalıyor.

Geçen yıl, CSF (Commons Stablecoin Format), fon akışlarını çizme yöntemimizi standartlaştırdı. Spesifikasyonu bir LLM’ye yapıştırın, “stablecoin” fon akışı isteyin; her seferinde bu formata uygun sonuç alırsınız. Aynı şeyi ilişki grafikleri için de istedim. Bu yüzden Graphing Standard Format – GSF – adında, türün şekli nasıl belirlediğini, ağırlığın boyutu nasıl etkilediğini ve yoğunluk seviyelerinin neyin açıklanacağını nasıl kontrol ettiğini tanımlayan küçük bir dil kuralı yazdım.

İşte GSF ile oluşturulmuş ağım:

yoğunluk
GSF v0.5.2

Daireler insanları temsil eder. Yuvarlatılmış dikdörtgenler kuruluşları temsil eder. Üçgenler, bunları üreten şirketlerden ayrı olarak etkinlikleri temsil eder. Elmaslar yerleri temsil eder. Altıgenler kavramları temsil eder. Haplar sistemleri temsil eder. Profil kartını görmek için herhangi bir düğüme tıklayın. Rengi görmek için Medium'a geçin. Bunların hiçbirini siz karar vermek zorunda değildiniz. GSF karar verdi.

İşte GSF'nin ilk kez kullanımını gösteren bir video. Oldukça iyi bir iş çıkardı!

GSF ve CSF

CSF GSF
Çıktı Denizkızı sekans diyagramları D3 ilişki grafikleri
Cevaplar A'dan B'ye değer adımları, sırayla Neler var ve bunlar nasıl birbirine bağlı?
Doğa Zamansal, adım sıralı Yapısal, zamansız
Seviyeler Hafif / Orta / Ağır Hafif / Orta / Ağır

Her ikisi de aynı değer katmanı temel öğelerini uygular: ValueType, TransferType, Exchange. CSF'den GSF'ye geçerken yaşanan tek kayıp, grafikler zamansal olmadığından sıra düzenidir.

Standart

GSF, görselleştirmenin kendisini değil, görselleştirme kurallarını özetler. Bu standart kullanıldığında, neyin gösterileceğini siz tanımlarsınız ve format, bunun nasıl gösterileceğini halleder. Temel yapı, projeler arasında tutarlı kalır.

Üç nokta:

  • GSF bir kural setidir. Asla görselleştirilmez.
  • Bir veri kümesi, {view, nodes, links} GSF'ye uygun bir örnektir. İşlenip görüntülenen budur.
  • Bir görüntüleyici, kuralları ve veri kümesini alır ve görüntüyü oluşturur.

Dört temel öğe. Bir renderer'ın ihtiyaç duyduğu her şey:

  1. İlişki – tam olarak iki varlık arasındaki bağlantı. Bağlantılar grafiği oluşturur.
  2. Tür – nitel sınıflandırıcıdır. Şekli ve rengi belirler.
  3. Değişkenler – ayrıntı torbası. Türün kapsamadığı her şeyi içerir.
  4. Ağırlık – nicel büyüklük. Boyut ve genişliği belirler.

Kodlama kuralı: değer ve değerler. Tek nicel değer (bir sayı, weight) boyut ve genişliği belirler. Nitel değerler (kategori, durum, etiket) şekli, rengi, gruplandırmayı ve fareyle üzerine gelindiğinde gösterilenleri belirler.

Öne çıkarılması gereken bir tasarım seçimi: ilişki türleri açık dizilerdir. Kapalı bir liste yoktur. Bir veri kümesi ihtiyaç duyduğu türleri kendisi tanımlar – yukarıdaki grafiğimde founder, cofounder, spinout, ve operateskullanıyor; bunların hiçbiri spesifikasyonda yer almıyor. Sorunsuz bir şekilde görüntülendi. GSF, kodlamayı (türlerin nasıl şekil ve renklere dönüştürüldüğünü) düzeltir, kelime dağarcığını (hangi türleri kullanmanıza izin verildiğini) değil.

Yoğunluk

CSF ile aynı gösterge. Bir görüntüleyicinin ne kadar ayrıntı ve renk göstereceği:

  • Hafif – siyah beyaz. Şekil türü kodlar, çizgi stili ilişki sınıfını kodlar (dolu = değer, kesikli = veri, noktalı = türetilmiş), kalınlık büyüklüğü kodlar, ok ucu yönü kodlar. Renk yok. Baskıya hazır.
  • Orta – üst katman, gösterge ve fareyle üzerine gelindiğinde değişkenler olarak renk ekler.
  • Yoğun – tam kayıt. Tüm değişkenler, aktarım uç noktaları, genişletme olanakları.

Tek kural: Hafif modda siyah-beyaz olarak okunabilmelidir. Renk asla tek sinyal değildir.

Biçim

Bir bağlantının source, destination, ve type. Geri kalan her şey isteğe bağlıdır:

{
  "format": "gsf",
  "version": "0.5.2",
  "renderer": "d3-force",
  "view": { "level": "light", "hops": 1, "focus": ["Person A"] },
  "links": [
    { "source": "Person A", "destination": "Person B", "type": "message" }
  ]
}

Değer katmanı grafikleri için, uç nokta nesneleri value_type ve transfer_type her iki tarafta da taşır. Bunlar farklı olduğunda, bu bir değiş tokuş olduğunu gösterir – ve via değişim yapanın adını belirtir:

{
  "format": "gsf",
  "version": "0.5.2",
  "renderer": "d3-force",
  "view": { "level": "heavy", "hops": 1, "focus": ["Brale"] },
  "nodes": [
    { "id": "Sender", "type": "org" },
    { "id": "Brale", "type": "org", "variables": { "sub_type": "exchange" } },
    { "id": "Recipient Wallet", "type": "system", "variables": { "sub_type": "wallet" } }
  ],
  "links": [
    {
      "source": { "id": "Sender", "value_type": "USD", "transfer_type": "wire" },
      "destination": { "id": "Recipient Wallet", "value_type": "USDC", "transfer_type": "solana" },
      "type": "transfers_via",
      "via": "Brale",
      "weight": 1000,
      "variables": { "exchange": "USD -> USDC", "rate": 1.0 }
    }
  ]
}

Kullanımı

gsf-0.5.2.json dosyasını bir LLM'ye yapıştırın ve kaynak materyali bir GSF veri kümesine dönüştürmesini isteyin. Her seferinde CSF ile aynı biçimi izler. Spesifikasyondaki llm_instructions Spesifikasyondaki blok, makineler tarafından doğrudan işlenebilecek şekilde tasarlanmıştır. En son sürüm için GSF deposuna bakın.

Standart açık kaynaklıdır: github.com/benmilne-com/standards/gsf. Forklayın, kullanın, katkıda bulunun.

Yapı ücretsizdir.