DSPL Eğitimi

DSPL, Veri Kümesi Yayınlama Dili anlamına gelir. DSPL'de açıklanan veri kümeleri, verilerin zengin ve görsel bir şekilde keşfedilmesini sağlayan bir araç olan Google Public Data Explorer'a aktarılabilir.

Not: Herkese Açık Veri yükleme aracını kullanarak Google Herkese Açık Veriler'e veri yüklemek için Google Hesabınızın olması gerekir.

Bu eğitim, temel bir DSPL veri kümesinin nasıl hazırlanacağıyla ilgili adım adım açıklamalı bir örnek sunar.

DSPL veri kümesi, bir XML dosyası ve bir dizi CSV dosyası içeren bir pakettir. CSV dosyaları, veri kümesinin verilerini içeren basit tablolardır. XML dosyası, ölçüm açıklamaları gibi bilgi amaçlı meta veriler ve tablolar arasındaki referanslar gibi yapısal meta veriler dahil olmak üzere veri kümesinin meta verilerini açıklar. Meta veriler, uzman olmayan kullanıcıların verilerinizi keşfetmesine ve görselleştirmesine olanak tanır.

Bu eğiticiyi anlamanın tek ön koşulu, XML'i iyi anlamaktır. Basit veritabanı kavramlarını (ör. birincil anahtarlar gibi) işe yarayabilir ancak şart değildir. Referans olması amacıyla, bu eğitimle ilişkili tamamlanan XML dosyası ve eksiksiz veri kümesi paketi de incelenebilir.

Genel bakış

Veri kümemizi oluşturmaya başlamadan önce, bir DSPL veri kümesinin neler içerdiğine dair genel bir bakışı burada bulabilirsiniz:

  • Genel bilgiler: Veri kümesi hakkında
  • Kavramlar: Veri kümesinde görünen "şeylerin" tanımları (ör. ülkeler, işsizlik oranı, cinsiyet vb.)
  • Dilimler: Veri içeren kavramların kombinasyonları
  • Tablolar: Kavramlar ve dilimlere ilişkin veriler. Kavram tablolarında numaralandırmalar, dilim tablolar ise istatistiksel veriler içerir
  • Konular: Etiketleme aracılığıyla veri kümesi kavramlarını anlamlı bir hiyerarşi içinde düzenlemek için kullanılır

Daha soyut olan bu kavramları örneklendirmek için bu eğitim boyunca kullanılan veri kümesini (kurmaca verilerle) göz önünde bulundurun. Çeşitli ülke, ABD eyaleti ve cinsiyet kombinasyonlarıyla toplanan, nüfus ve işsizlik istatistiksel zaman serisi.

Bu örnek veri kümesi şu kavramları tanımlar:

  • country
  • gender
  • nüfus
  • state
  • işsizlik oranı
  • yıl

Eyalet gibi kategorik kavramlar, tüm olası değerlerini (Kaliforniya, Arizona vb.) sıralayan kavram tablolarıyla ilişkilendirilir. Kavramlar, bir eyaletin adı veya ülkesi gibi özellikler için ek sütunlar içerebilir.

Dilimler, veri kümesinde istatistiksel verileri bulunan her bir kavram kombinasyonunu tanımlar. Bir dilim boyutlar ve metrikleri içerir. Yukarıdaki resimde boyutlar mavi, metrikler ise turuncu renktedir. Bu örnekte gender_country_slice dilimi, population metriği ile country, year ve gender boyutlarına ait verileri içermektedir. country_slice adlı başka bir dilim, ülkeler için toplam yıllık nüfus sayılarını (metrik) verir.

Boyutlara ve metriklere ek olarak, dilimler gerçek verileri içeren tablolara da başvurur.

Şimdi, DSPL'de bu tür bir veri kümesinin nasıl oluşturulduğunu adım adım inceleyelim.

Veri Kümesi Bilgileri

Öncelikle veri kümemiz için bir XML dosyası oluşturmamız gerekiyor. Örnek veri kümemiz için bir DSPL açıklamasının başlangıcını burada görebilirsiniz:

<?xml version="1.0" encoding="UTF-8"?>
<dspl targetNamespace="http://www.stats-bureau.com/mystats"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://schemas.google.com/dspl/2010"
   xmlns:time="http://www.google.com/publicdata/dataset/google/time"
   xmlns:geo="http://www.google.com/publicdata/dataset/google/geo"
   xmlns:entity="http://www.google.com/publicdata/dataset/google/entity"
   xmlns:quantity="http://www.google.com/publicdata/dataset/google/quantity">

  <import namespace="http://www.google.com/publicdata/dataset/google/time"/>
  <import namespace="http://www.google.com/publicdata/dataset/google/entity"/>
  <import namespace="http://www.google.com/publicdata/dataset/google/geo"/>
  <import namespace="http://www.google.com/publicdata/dataset/google/quantity"/>

  <info>
    <name>
      <value>My statistics</value>
    </name>
    <description>
      <value>Some very interesting statistics about countries</value>
    </description>
    <url>
      <value>http://www.stats-bureau.com/mystats/info.html</value>
    </url>
    </info>

  <provider>
    <name>
      <value>Bureau of Statistics</value>
    </name>
    <url>
      <value>http://www.stats-bureau.com</value>
    </url>
  </provider>
 ...
</dspl>

Veri kümesi açıklaması, üst düzey bir <dspl> öğesiyle başlar. targetNamespace özelliği, bu veri kümesini benzersiz şekilde tanımlayan bir URI içerir. Veri kümesinin ad alanı, veri kümenizin genel tanımlayıcısı olacağından ve başkalarının bu veri kümesine başvuruda bulunması açısından bir araç olacağından, veri kümesini yayınlarken özellikle önemlidir.

targetNamespace özelliğinin atlanabileceğini unutmayın. Bu durumda, veri kümesi içe aktarıldığında otomatik olarak benzersiz bir ad alanı oluşturulur.

Diğer veri kümelerindeki bilgileri kullanma

Veri kümeleri, bu veri kümelerini içe aktararak diğer veri kümelerindeki tanımları ve verileri yeniden kullanabilir. Her <import> öğesi, bu veri kümesinin başvuracağı başka bir veri kümesinin ad alanını belirtir.

Örnek veri kümemizde, sırasıyla zaman, varlıklar ve coğrafya ile ilgili tanımlar sağlayan zaman, varlık ve geo veri kümelerinde (Google tarafından oluşturulan, sayısal miktarları tanımlamakta faydalı kavramları içeren bir veri kümesi) http://www.google.com/publicdata/dataset/google/quantity bazlı bazı tanımlara ihtiyacımız olacak.

En üstteki <dspl> öğesi, bir ad alanı ön eki bildirimi sağlar (ör. xmlns:time="http://...") içerir. Diğer veri kümelerindeki öğelere kısa ve öz bir şekilde referansta bulunmak için ön ek bildirimleri gereklidir. Örneğin time:year, ad alanı time önekiyle ilişkilendirilmiş olan içe aktarılan veri kümesindeki year tanımına referans verir.

Veri kümesi ve sağlayıcı bilgileri

<info> öğesi, veri kümesi hakkında genel bilgiler içerir: ad, açıklama ve daha fazla bilginin bulunabileceği URL.

<provider> öğesi, veri kümesinin sağlayıcısı hakkında bilgi içerir: Veri kümesinin adı ve daha fazla bilginin bulunabileceği URL (genellikle veri sağlayıcının ana sayfası).

Kavramları Tanımlama

Veri kümesi hakkında bazı genel bilgiler sağladığımıza göre artık veri kümesinin içeriğini tanımlamaya başlayabiliriz. Bir sonraki hedefimiz, ülkelerin son 50 yıldaki nüfus istatistiklerini eklemek.

Yapmamız gereken ilk şey nüfus, ülke ve yıl kavramları için bazı tanımlar sunmaktır. DSPL'de, bu tanımlara kavramlar denir.

Kavram, veri kümesinde görünen bir veri türünün tanımıdır. Belirli bir kavrama karşılık gelen veri değerleri, söz konusu kavramın örnekleri olarak adlandırılır.

Nüfus

Popülasyon kavramını tanımlayarak başlayalım. Bir DSPL dokümanında kavramlar, veri kümesi ve sağlayıcı bilgilerinden hemen sonra gelen bir <concepts> öğesinde tanımlanır.

Herhangi bir kavram için gereken minimum düzeyde bilgi içeren bir popülasyon kavramı aşağıda verilmiştir: id (benzersiz bir tanımlayıcı), name ve type.

<dspl ...>
  ...
  <concepts>
    <concept id="population">
      <info>
        <name>
          <value>Population</value>
        </name>
      </info>
      <type ref="integer"/>
    </concept>
  ...
  </concepts>

Bu örnek şu şekilde çalışır:

  • Her kavram, veri kümesindeki kavramı benzersiz şekilde tanımlayan bir id sağlamalıdır. Diğer bir deyişle, aynı veri kümesinde tanımlanan hiçbir kavram aynı kimliğe sahip olamaz.
  • Tıpkı veri kümesi ve sağlayıcısı gibi <info> öğeleri de kavram hakkında metinsel bilgiler (ör. ad ve açıklama) sağlar.
  • <type> öğesi, kavramın örnekleri için veri türünü (diğer bir deyişle, "değerleri") belirtir. Bu örnekte, population türü integer olarak belirlenmiştir. DSPL, aşağıdaki veri türlerini destekler:
    • string
    • integer
    • float
    • boolean
    • date

Ülke

Şimdi ülke kavramının tanımını yazalım:

<concept id="country">
  <info>
    <name><value>Country</value></name>
    <description>
      <value>My list of countries.</value>
    </description>
  </info>
  <type ref="string"/>
  <property id="name">
    <info>
      <name><value>Name</value></name>
      <description>
        <value>The official name of the country</value>
      </description>
    </info>
    <type ref="string" />
  </property>
  <table ref="countries_table" />
</concept>

Ülke kavramının tanımı, önceki örnekte olduğu gibi id, info ve type ile başlar.

Kavram değerleri

Ülkeler gibi kategorik kavramlar, tüm olası örneklerin sıralamasına sahiptir. Başka bir deyişle, referans verilebilecek tüm olası ülkeleri listeleyebilirsiniz. Ancak bunun için her ülkenin benzersiz bir tanımlayıcısına ihtiyacı vardır. Bu örnekte, ülkeleri tanımlamak için ISO ülke kodları kullanılmaktadır. Bu kodlar string türündedir.

Bu örnekte, ISO kodunu kullanmanız gerekmez. Ülke adını da kullanabilirsiniz. Ancak adlar dile göre farklılık gösterir, zamanla değişebilir ve veri kümelerinde her zaman tutarlı bir şekilde kullanılmaz. Ülkeler ve genel olarak kategorik kavramlar için kısa, sabit, yaygın olarak kullanılan ve (varsa) dilden bağımsız tanımlayıcılar seçmeniz önerilir.

Kavram özellikleri

Ülke konseptinde id özelliğine ek olarak ülkenin adını belirten bir <property> öğesi bulunur. Başka bir deyişle, ülke adı ("İrlanda") id IE'ye sahip ülkenin mülküdür. Özellikler, DSPL'nin bir kavramın örnekleri hakkında ek yapılandırılmış bilgiler sağlama şeklidir.

Kavramın kendisi gibi, mülklerde de id, info ve type bulunur.

Kavram verileri

Son olarak, ülke kavramı bir <table> öğesi içerir. Bu öğe, tüm ülkelerin listesini numaralandıran bir tabloya başvuruyor.

Tabloları kullanmak bazı kavramlar için anlam ifade ederken bazıları için anlam ifade etmez. Örneğin, kavram popülasyonu için olası tüm değerleri numaralandırmak mantıklı değildir. Ancak, bir kavram için tabloya referans verirseniz bu tabloda, kavramın tüm örnekleri bulunmalıdır. Örneğin, yalnızca birkaç örnek değil, tüm ülkeler listelenmelidir.

Veri kümesi, countries_table tablosunu şu şekilde tanımlar:

...
<tables>
  <table id="countries_table">
    <column id="country" type="string"/>
    <column id="name" type="string"/>
    <data>
      <file format="csv" encoding="utf-8">countries.csv</file>
    </data>
  </table>
  ...
</tables>

Ülkeler tablosu, tablonun sütunlarını ve türlerini belirtir, verileri içeren bir CSV dosyasına referans verir. Bu CSV, veri kümesi XML'i ile paketlenip yüklenebilir veya HTTP, HTTPS ya da FTP aracılığıyla uzaktan erişilebilir. İkinci durumda, countries.csv öğesini bir URL ile değiştirirsiniz (örneğin, http://www.myserver.com/mydata/countries.csv).

CSV dosyası nerede depolandığına bakılmaksızın aşağıdaki gibi görünür:

country, name
AD,      Andorra
AF,      Afghanistan
AI,      Anguilla
AL,      Albania
US,      United States

Tablonun ilk satırında, DSPL table tanımında belirtildiği gibi sütun kimlikleri listelenir. Aşağıdaki satırların her biri, ülke konseptinin bir örneğine karşılık gelir. Kavram bir tabloysa tabloda, kavramın tüm örneklerini içermelidir. Bu örnekte, tüm ülkeler listelenmelidir.

Sütunlar, kimlikleri temel alınarak ülke kavramı ve özellikleriyle eşleştirilir. İlk sütunun kimliği (country), kavram kimliğiyle eşleşir. Bu durum, bu sütunun ülke konseptiyle tanımlanan benzersiz ülke tanımlayıcısını içerdiği anlamına gelir. Sonraki sütun, ülke kavramının name özelliğine karşılık gelir. Bu sütundaki değerler, name özelliğinin değerleriyle eşleşir.

Kavram tablosu CSV verilerinin birkaç gereksinimi vardır:

  • Veri dosyasının ilk satırındaki sütun başlıkları, verilerin ilişkilendirildiği kavramın id kavramı ve id özelliğiyle tam olarak eşleşmelidir (sıralama değişiklik gösterebilir).
  • Her satırda, kavramdaki özellik sayısıyla tam olarak aynı sayıda öğe bulunmalıdır (değer boş olsa bile).
  • Kavramın id alanındaki her değer (burada ülke kodu) benzersiz olmalı ve boş olmamalıdır (boş alan, sıfır veya yalnızca boşluk karakteri içeren bir değerdir).
  • Diğer kavramlara başvuruda bulunan mülklerin değerleri boş olmalı veya başvuruda bulunulan kavramın geçerli bir değeri olmalıdır.
  • Virgül, çift tırnak veya yeni satır karakteri içeren değerler tamamen çift tırnak içine alınmalıdır.
  • Bir değer içindeki çift tırnak karakterlerinin hemen öncesinde başka bir çift tırnak işareti olmalıdır.

Yıl

Ülke nüfus verilerimiz için ihtiyacımız olan son kavram, yılları temsil etme kavramı. Yeni bir kavram tanımlamak yerine, içe aktardığımız veri kümelerinden birindeki yıl kavramını kullanacağız: "http://www.google.com/publicdata/dataset/google/time". Bunu yapmak için time:year olarak referans vermemiz gerekir. Burada time, başvurulan veri kümesini, year ise kavramı tanımlar.

Standart kavramlar

time:year, Google tarafından tanımlanan küçük bir standart kavram grubunun parçasıdır. Standart kavramlar zaman, coğrafya, sayısal miktarlar, birimler vb. için temel tanımlar sunar.

Aslında yukarıda tanımlanan ülke kavramı standart bir kavramdır. Yalnızca örnek olarak verilmiştir. Mümkün olduğunda veri kümelerinizde standart kavramları doğrudan veya genişleterek kullanmanız gerekir (uzantılar hakkında daha fazla bilgiyi aşağıda bulabilirsiniz). Standart kavramlar verilerinizi diğer veri kümeleriyle karşılaştırılabilir hale getirir ve Public Data Explorer'daki veri kümeleriniz için özellikleri etkinleştirir. Örneğin, zaman içindeki verilere animasyon eklemek veya coğrafi verileri bir haritada göstermek için sırasıyla time ve geo standart kavramları kullanılır.

İlk Dilim

Nüfus, ülke ve yıl kavramlarını öğrendiğimize göre şimdi bunları bir araya getirme zamanı.

Bunun için, bunları birleştiren bir dilim oluşturmamız gerekir. DSPL'de dilim, verilerin mevcut olduğu kavramların kombinasyonudur.

Neden doğru sütunlara sahip bir tablo oluşturmuyorsunuz? Çünkü dilimler veri kümesinin bilgilerini kavramlar açısından yakalar. Veri kümemizin daha fazla parçasını oluşturdukça bu durum daha açık hale gelecektir.

Dilimler, DSPL dosyasında concepts bölümünden hemen sonra görünmesi gereken bir <slices> öğesi altında görünür.

<slices>
  <slice id="countries_slice">
    <dimension concept="country"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <table ref="countries_slice_table"/>
  </slice>
</slices>

Kavramlarda olduğu gibi, her dilimde veri kümesindeki dilimi benzersiz olarak tanımlayan bir id (countries_slice) bulunur.

Bir dilim iki tür kavram referansı içerir: Boyutlar ve metrikler. Metriklerin değerleri, boyutların değerlerine göre değişir. Burada population değeri (metrik), country ve year boyutlarına göre değişir.

Kavramlarda olduğu gibi dilimler de dilimin verilerini içeren bir tabloya başvuru içerir. Başvuruda bulunulan tabloda, dilimin her boyutu ve metriği için bir sütun bulunmalıdır. Kavramlarda olduğu gibi, dilimin boyutları ve metrikleri de aynı kimliklere sahip tablo sütunlarıyla eşlenir.

Dilim tablo

Popülasyon dilimimizin tablosu, DSPL dosyasının tables bölümünde görünür:

<tables>
  ...
  <table id="countries_slice_table">
    <column id="country" type="string"/>
    <column id="year" type="date" format="yyyy"/>
    <column id="population" type="integer"/>
    <data>
      <file format="csv" encoding="utf-8">country_slice.csv</file>
    </data>
  </table>
  ...
</tables>

year sütununun, yılların nasıl biçimlendirildiğini belirten bir format özelliğiyle birlikte geldiğini unutmayın. Desteklenen tarih biçimleri, Joda DateTime biçimi ile tanımlanmıştır.

countries_slice tablosu, tablonun sütunlarını ve türlerini belirtip verileri içeren bir CSV dosyasını işaret eder. CSV dosyası aşağıdaki gibi görünür:

country, year,  population
AF,      1960,  9616353
AF,      1961,  9799379
AF,      1962,  9989846
AF,      1963,  10188299
...

Veri tablosunun her satırı, country ve year boyutlarının ve population metriğinin karşılık gelen değerinin benzersiz bir kombinasyonunu içerir (örneğin, 1960'ta Afganistan'ın nüfusu - metriği - boyutlar).

country sütunundaki değerlerin, country kavramının değeri/tanımlayıcısı (ülkenin ISO 3166'nın 2 harfli kodu) ile eşleştiğini unutmayın.

Bir dilimin CSV verileri aşağıdaki kısıtlamaları karşılamalıdır:

  • Bir boyut alanının her değeri (country ve year gibi) boş olmamalıdır. Metrik alanlarının (population gibi) değerleri boş olabilir. Boş değer, karakter olmadan temsil edilir.
  • Bir kavrama referansta bulunan boyut alanındaki her bir değer, söz konusu kavramın verilerinde bulunmalıdır. Örneğin, AF değeri country kavram verileri tablosunda bulunmalıdır.
  • Boyut değerlerinin her benzersiz kombinasyonu (ör. AF, 2000) yalnızca bir kez gerçekleşebilir.
  • Veriler, zaman harici boyut sütunlarına göre (herhangi bir sırada) ve isteğe bağlı olarak diğer sütunlara göre sıralanmalıdır. Örneğin, [date, dimension1, dimension2, metric1, metric2] sütunlarını içeren bir tabloda dimension1, ardından dimension2 ve date ölçütlerine göre sıralayabilirsiniz. Ancak date ve ardından boyutlara göre sıralayamazsınız.

Özet

Bu noktada, DSPL'mizde ülke nüfus verilerini tanımlamaya yetecek kadar yer var. Özetlemek gerekirse şunları yapmamız gerekti:

  • Veri kümesi ve sağlayıcısının DSPL başlığını ve açıklamasını oluşturun
  • Tüm ülkeleri ve adlarını listeleyen bir csv dosyası kullanarak nüfus ve ülke için ayrı kavramlar oluşturun.
  • Google'dan içe aktarılan zaman veri kümesinde önceden tanımlanmış yıl kavramını referans alarak, zaman içindeki ülkelere ait nüfus sayılarımızla bir dilim oluşturun.

Bu eğiticinin geri kalanında, daha fazla dilim halinde daha fazla boyut ve konuya göre gruplandırılmış daha fazla metrik ekleyerek veri kümemizi daha zengin hale getireceğiz.

Boyut Ekleme: ABD Eyaletleri

Şimdi ABD'deki eyaletlerin nüfus verilerini ekleyerek veri kümemizi zenginleştirelim. Öncelikle eyaletlerle ilgili bir kavram tanımlamamız gerekiyor. Bu, daha önce tanımladığımız ülke kavramına çok benziyor.

<concept id="state" extends="geo:location">
  <info>
    <name>
      <value>state</value>
    </name>
    <description>
      <value>US states, identified by their two-letter code.</value>
    </description>
  </info>
  <property concept="country" isParent="true" />
  <table ref="states_table"/>
</concept>

Kavram uzantıları ve özellik referansları

Eyalet kavramı, DSPL'ye ilişkin bazı yeni özellikleri de beraberinde getirmektedir.

İlk olarak durum, başka bir kavram olan geo:location (veri kümenizin başında içe aktardığımız harici coğrafi veri kümesinde tanımlanır) geo:location adlı başka bir kavramı extends. Semantik olarak bu, state değerinin bir tür geo:location olduğu anlamına gelir. Bunun sonucunda, geo:location tüm özellik ve özelliklerini devralır. Özellikle konum, latitude ve longitude özelliklerini tanımlar. Önceki kavram genişletildiğinde bu özellikler duruma da uygulanır. Ayrıca konum, entity:entity öğesinden devralındığından name, description ve info_url dahil olmak üzere ikinci öğenin tüm özelliklerini de alır.

Not: Daha önce tanımlanan ülke kavramı, teknik olarak geo:location tarihinden itibaren de geçerli olmalıdır. Bu nokta, kolaylık olması açısından daha önce atlandı. Ancak, son XML dosyasına konumu ülkeden devralmaya ekledik.

Not: Diğer veri kümeleri tarafından tanımlanan bilgileri yeniden kullanmak için kendi veri kümelerinizde extends yapısını kullanabilirsiniz. extends kullanmak, konseptinizin tüm örneklerinin genişlettiğiniz kavramın geçerli örnekleri olmasını gerektirir. Uzantılar, ek özellikler ve özellikler eklemenize ve örnek grubunu genişletilmiş kavramın örneklerinin bir alt kümesiyle kısıtlamanıza olanak tanır.

Devlet özelliği, devralmaya ek olarak kavram references fikrini de sunar. Özellikle eyalet kavramı, yukarıda oluşturduğumuz ülke kavramına referans veren country adlı bir özelliğe sahiptir. Bu işlem, concept özelliği kullanılarak yapılır. Bu mülkün kimlik değil, yalnızca kavram referansı sağladığını unutmayın. Bu, başvurulan kavramın kimliğiyle aynı değere sahip bir kimlik (ör. country) tıklayın. Eyalet ile ilçe arasındaki hiyerarşik ilişki, referansta isParent="true" özelliği kullanılarak yakalanır. Genel olarak, coğrafya gibi hiyerarşik ilişkileri olan boyutlar bu şekilde sunulmalıdır. Alt kavram, isParent özelliğini kullanarak üst kavramı referans gösteren bir mülke sahiptir.

Eyaletlerin tablo tanımı aşağıdaki gibi görünür:

<tables>
  ...
  <table id="states_table">
    <column id="state" type="string"/>
    <column id="name" type="string"/>
    <column id="country" type="string">
      <value>US</value>
    </column>
    <column id="latitude" type="float"/>
    <column id="longitude" type="float"/>
    <data>
      <file format="csv" encoding="utf-8">states.csv</file>
    </data>
  </table>
  ...
</tables>

Ülke sütunu, tüm eyaletler için sabit bir değere sahiptir. Bunu DSPL'de belirtmek, söz konusu değerin verilerdeki her durum için tekrarlanmasını önler. Ayrıca, eyalet, geo:location üzerinden bu özellikleri devraldığından name, latitude ve longitude için sütunlar eklediğimizi unutmayın. Diğer yandan, devralınan bazı mülkler (ör. description) sütunları bulunmaz. Bu durum normaldir. Bir özellik, kavram tanımı tablosundan çıkarılırsa kavramın her örneği için değerinin tanımsız olduğu varsayılır.

CSV dosyası aşağıdaki gibi görünür:

state, name,        latitude,  longitude
AL,    Alabama,     32.318231, -86.902298
AK,    Alaska,      63.588753, -154.493062
AR,    Arkansas,    35.20105,  -91.831833
AZ,    Arizona,     34.048928, -111.093731
CA,    California,  36.778261, -119.417932
CO,    Colorado,    39.550051, -105.782067
CT,    Connecticut, 41.603221, -73.087749
...

Nüfus ve yıl kavramlarına zaten sahip olduğumuzdan, eyalet nüfusu için yeni bir dilim tanımlamak üzere bunları yeniden kullanabiliriz.

<slices>
  <slice id="states_slice">
    <dimension concept="state"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <table ref="states_slice_table"/>
  </slice>
</slices>

Veri tablosu tanımı şöyle görünür:

<tables>
  ...
  <table id="states_slice_table">
    <column id="state" type="string"/>
    <column id="year" type="date" format="yyyy"/>
    <column id="population" type="integer"/>
    <file format="csv" encoding="utf-8">state_slice.csv</file>
  </table>
  ...
</tables>

CSV dosyası da şöyle görünür:

state, year, population
AL,    1960, 9616353
AL,    1961, 9799379
AL,    1962, 9989846
AL,    1963, 10188299

Bir öncekine yeni bir boyut eklemek yerine neden yeni bir dilim oluşturduk?

Bazı satırlar ülke verileri, bazı satırlar eyalet verileri için olacağından hem eyalet hem de ülke için boyutlara sahip bir dilim doğru olmaz. Tabloda bazı boyutlar için "delikler" bulunur. Bu duruma izin verilmez (eksik değerlere boyutlar için değil, yalnızca metrikler için izin verildiğini unutmayın).

Boyutlar, dilim için "birincil anahtar" görevi görür. Bu, her veri satırının tüm boyutlar için değerlere sahip olması gerektiği ve hiçbir veri satırının tüm boyutlar için tam olarak aynı değerlere sahip olamayacağı anlamına gelir.

Metrik Ekleme: İşsizlik Oranı

Şimdi, veri kümemize başka bir metrik ekleyelim:

<concept id="unemployment_rate" extends="quantity:rate">
  <info>
    <name>
      <value>Unemployment rate</value>
    </name>
    <description>
      <value>The percent of the labor force that is unemployed.</value>
    </description>
    <url>
      <value>http://www.bls.gov/cps/cps_htgm.htm</value>
    </url>
  </info>
  <type ref="float/>
  <attribute id="is_percentage">
    <type ref="boolean"/>
    <value>true</value>
  </attribute>
</concept>

Bu metriğin info bölümünde bir ad, açıklama ve URL bulunur (ABD İş Gücü İstatistikleri Bürosu).

Bu kavram, quantity:rate standart kavramını da genişletir. Miktar veri kümesi, sayısal miktarları temsil etmeyle ilgili temel kavramları tanımlar. Veri kümenizde, uygun miktar kavramını genişleterek sayısal kavramlarınızı oluşturmanız gerekir. Dolayısıyla, yukarıda tanımlanan population kavramı teknik olarak quantity:amount tarihinden itibaren uzatılmalıdır.

Kavram özellikleri

Bu kavram, özellik yapısını da tanıtır. Bu örnekte özellik, unemployment_rate değerinin yüzde olduğunu belirtmek için kullanılmıştır. is_percentage özelliği, bu kavramın genişletildiği quantity:rate kavramından devralınmıştır. Bu bilgiler, Public Data Explorer tarafından verileri görselleştirirken yüzde işaretlerini göstermek için kullanılır.

Özellikler, anahtar/değer çiftlerini bir kavrama eklemek için genel bir mekanizma sağlar (ek değerleri bir kavramın örnekleriyle ilişkilendiren özelliklerin aksine). Kavramlar ve mülklerde olduğu gibi özelliklerde de id, info ve type bulunur. Mülkler gibi, diğer kavramları da referans alabilirler.

Özellikler yalnızca sayısal özellikler gibi önceden tanımlanmış genel unsurlara yönelik değildir. Kavramlarınız için kendi özelliklerinizi tanımlayabilirsiniz.

ABD Eyaletleri İçin İşsizlik Oranı Verileri Ekleme

Artık ABD eyaletleri için işsizlik oranı verilerini eklemeye hazırız. İşsizlik oranı bir metrik olduğundan ve eyaletler için nüfus verileri zaten mevcut olduğundan, bunu eyalet ve yıl boyutları için daha önce oluşturduğumuz dilime ekleyebiliriz:

<slices>
  ...
  <slice id="states_slice">
    <dimension concept="state"/>
    <dimension concept="time:year"/>
    <metric concept="population"/>
    <metric concept="unemployment_rate"/>
    <table ref="states_slice_table"/>
  </slice>
  ...
</slices>

... ve tablo tanımına başka bir sütun ekleyin:

<tables>
  ...
  <table id="states_slice_table">
    <column id="state" type="string"/>
    <column id="year" type="date" format="yyyy"/>
    <column id="population" type="integer"/>
    <column id="unemployment_rate" type="float"/>
    <data>
      <file format="csv" encoding="utf-8">state_slice.csv</file>
    </data>
  </table>
  ...
</tables>

... ve CSV dosyasına ekleyin:

state, year, population, unemployment_rate
AL,    1960, 9616353,    5.1
AL,    1961, 9799379,    5.2
AL,    1962, 9989846,    4.8
AL,    1963, 10188299,   6.9

Daha önce, her dilimde boyutların dilim için birincil anahtar oluşturduğunu belirtmiştik. Ayrıca her veri kümesi, belirli bir boyut kombinasyonu için yalnızca bir dilim içerebilir. Bu boyutlar için kullanılabilen tüm metrikler aynı dilime ait olmalıdır.

Diğer Boyutlar: Cinsiyete Göre Nüfus Dökümü

Ülkeler için cinsiyete göre nüfusun dökümüyle veri kümemizi zenginleştirelim. Artık matkabı öğrenmeye başlıyorsunuz... Önce cinsiyet kavramını eklememiz gerekiyor:

<concept id="gender" extends="entity:entity">
  <info>
    <name>
      <value>Gender</value>
    </name>
    <description>
      <value>Gender, Male or Female</value>
    </description>
    <pluralName>
      <value>Genders</value>
    </pluralName>
    <totalName>
      <value>Both genders</value>
    </totalName>
  </info>
  <type ref="string"/>
  <table ref="genders_table"/>
</concept>

Cinsiyet kavramı info bölümünde, cinsiyet kavramının birden fazla örneğini belirtmek için kullanılacak metnin yer aldığı bir pluralName bölümü bulunmaktadır. info bölümü ayrıca cinsiyet kavramının tüm örneklerini tanımlamak için kullanılacak metnin yer aldığı bir totalName içerir. Bunların her ikisi de Public Data Explorer tarafından cinsiyet kavramıyla ilgili bilgileri görüntülemek için kullanılır. Genel olarak, boyut olarak kullanılabilen kavramlar için bunları sağlamanız gerekir.

Cinsiyet kavramının da entity:entity tarihinden itibaren geçerli olduğunu unutmayın. Bu, çeşitli kavram örnekleri için özel adlar, URL'ler ve renkler eklemenize olanak tanıdığından boyut olarak kullanılan kavramlar için iyi bir uygulamadır.

Cinsiyet kavramı, cinsiyet için olası değerleri ve görünen adlarını (burada gösterilmez) içeren genders_table tablosunu ifade eder.

Veri kümemize cinsiyete göre popülasyon eklemek için yeni bir dilim oluşturmamız gerekir (Unutmayın: Kullanılabilen her boyut kombinasyonunun veri kümesindeki bir dilime karşılık geldiğini unutmayın).

<slice id="countries_gender_slice">
  <dimension concept="country"/>
  <dimension concept="gender"/>
  <dimension concept="time:year"/>
  <metric concept="population"/>
  <table ref="countries_gender_slice_table"/>
</slice>

Dilimin tablo tanımı aşağıdaki gibi görünür:

<table id="countries_gender_slice_table">
  <column id="country" type="string"/>
  <column id="gender" type="string"/>
  <column id="year" type="date" format="yyyy"/>
  <column id="population" type="integer"/>
  <data>
    <file format="csv" encoding="utf-8">gender_country_slice.csv</file>
  </data>
</table>

Tablonun CSV dosyası aşağıdaki gibi görünür:

country, gender, year, population
AF,      M,      1960, 4808176
AF,      F,      1960, 4808177
AF,      M,      1961, 4899689
AF,      F,      1961, 4899690...

Önceki ülkeler, nüfus ve işsizlik dilimiyle karşılaştırıldığında bu boyutun ek bir boyutu vardır. Nüfus metriğinin her değeri yalnızca belirli bir ülke ve yıla değil, aynı zamanda belirli bir cinsiyete de karşılık gelir.

"seyrek" bir veri kümesi oluşturduğumuzu unutmayın. Bazı metrikler tüm boyutlar için kullanılamaz: Nüfus, ülkeler ve ABD eyaletleri için yıllık olarak sunulurken işsizlik oranı yalnızca ülkeler için mevcuttur. Cinsiyete göre döküm yalnızca ülkeye göre nüfus için kullanılabilir; işsizlik oranı metriği için kullanılamaz ve eyalet boyutu için kullanılamaz. Boşluklar veri düzeyinde de olabilir. Bazı metriklerde belirli boyut değerleri için değer yoktur, ancak bu durum DSPL'de gösterilmez.

Konular

DSPL'nin veri kümemizde kullanacağımız son özelliği konular. Konular, kavramları hiyerarşik olarak sınıflandırmak için kullanılır. Uygulamalar tarafından kullanıcıların verilerinize ulaşmasına yardımcı olmak için kullanılır.

DSPL dosyasında, konular kavramlardan hemen önce görünür. Aşağıda örnek bir konu hiyerarşisini görebilirsiniz:

<dspl ... >
  ...
  <topics>
    <topic id="geography">
      <info>
        <name>
          <value>Geography</value>
        </name>
      </info>
    </topic>
    <topic id="social_indicators">
      <info>
        <name>
          <value>Social indicators</value>
        </name>
      </info>
    </topic>
    <topic id="population_indicators">
      <info>
        <name>
          <value>Population indicators</value>
        </name>
      </info>
    </topic>
    <topic id="poverty_and_income">
      <info>
        <name>
          <value>Poverty & income</value>
        </name>
      </info>
    </topic>
    <topic id="health">
      <info>
        <name>
          <value>Health</value>
        </name>
      </info>
    </topic>
  </topics>

Konuları gerektiği kadar iç içe yerleştirebilirsiniz.

Konuları kullanmak için aşağıdaki şekilde kavram tanımından referans almanız yeterlidir:

<concept id="population">
  <info>
    <name>
      <value>Population</value>
    </name>
    <description>
      <value>Size of the resident population.</value>
    </description>
  </info>
  <topic ref="population_indicators"/>
  <type ref="integer"/>
</concept>

Bir kavram birden fazla konuya referans verebilir.

Veri Kümenizi Gönderme

Artık veri kümenizi oluşturduğunuza göre sonraki adım onu sıkıştırmak ve Google Public Data Explorer aracına zip dosyasını yüklemektir. Herhangi bir sorunla karşılaşırsanız en yaygın yükleme sorunlarının tartışıldığı SSS bölümüne göz atın.

Referans olması için ayrıca bu eğitimle ilişkili eksiksiz XML dosyasını ve veri kümesi paketini eksiksiz olarak indirebilirsiniz.

Sonraki Adımlar

Tebrikler, ilk DSPL veri kümenizi oluşturdunuz! Artık temel bilgileri anladığınıza göre, diğer konuların yanı sıra çok dilli destek ve eşlenebilir kavramlar gibi "gelişmiş" DSPL özelliklerini belgeleyen Geliştirici Kılavuzu'nu okumanızı öneririz.

Ayrıca, birkaç örnek veri kümesine de göz atabilirsiniz.