DeepLab : Teknolojiler
ML/DL/CV Odaklı
• Teknolojiler
– Go, Python, C/C++, Rust, C#
– PyTorch, TensorFlow, Keras, scikit-learn
• Web, Mobile, IoT/Edge ve Back-End olarak…
– OpenCV
– … ve farklı onlarca araç-gereç…
• Databases
– SQL Server, Oracle, PostgreSQL
– MongoDB, Redis, Cassandra
• Distributed Systems
– Distributed Databases
– Distributed Deep Learning
JSON
JSON : JavaScript Object Notation
Cihan Özhan | DeepLab.co | Founder & AI Engineer, Mentor
JSON & BSON
JSON
JSON Nedir?
• JSON, JavaScript Object Notation anlamına gelir.
• Official Website : http://json.org
• Online JSON Parser : http://json.parser.online.fr/beta
• Bu format Douglas Crockford tarafından belirlendi.
• JSON dosya adı uzantısı .json’dur.
• JSON Internet Media Type : ‘application/json’
• The Uniform Type Identifier is public.json
• JSON
– Insan tarafından okunabilir.
– Veri depolamak e değiş-tokuş etmek için bir sözdizimidir.
– Dil bağımsız bir veri formatıdır.
– “Self-Describing” ve anlaşılması kolay.
– JSON JavaScript sözdizimi kullanır ama JSON format metin tabanlıdır. XML gibi…
• Okunabilir ve veri formatı olarak her programlama diliyle kullanılılabilirdir.
• API ve Config için kullanılır.
JSON Sözdizimi
• Veriler name/value ikilisinde oluşur.
• Veriler virgülle ayrılmıştır.
• Küme araçları(Curly Braces) nesneleri tutar.
• Köşeli parantezler(Square Brackets) dizileri tutar.
• JSON'un yaygın bir kullanımı, verileri bir web sunucusundan okumak ve bir web sayfasında
görüntülemektir.
JSON vs. XML
• JSON daha kısadır.
• JSON, bitiş etiketini kullanmaz.
• JSON dizileri destekler.
• JSON'un görüntüleme yeteneği yok.
• Native nesne desteği.
• Her ikisi de 'kendi kendini tanımlayan', yani değerlerin adlandırıldığı anlamına gelir.
• Her ikisi de 'insan tarafından okunabilir’.
• Her ikisi de hiyerarşiktir. (yani değerleri bir başka değer içinde tutabilirsiniz.)
• Her ikisi de ayrıştırılabilir ve birçok programlama dili tarafından kullanılabilir.
• JSON daha az ayrıntılıdır, bu nedenle insanlar için kesinlikle daha hızlı okunabilir.
• JSON, JavaScript'teki eval() prosedürü kullanılarak basit bir şekilde ayrıştırılabilir.
• JSON, {her öğenin kendi adına sahip olmadığı} dizileri içerir.
• Hem JSON hem de XML bir XMLHttpRequest ile getirilebilir
JSON vs. XML
• XML dizi verilerini desteklemez.
• XML, JSON'dan biraz daha karmaşıktır.
• XML, bir öğenin başında ve sonunda bir etiket adı bulunan açılı parantezler kullanır:
– JSON, adı yalnızca öğenin başında olan dalgalı parantezler kullanır.
• XML'de bir öğe için istediğiniz herhangi bir adı kullanabilirsiniz, JSON'da javascript'ten ayrılmış(reserved)
kelimeleri kullanamazsınız.
• XML, bir biçimlendirme dili olduğu için verileri görüntüleme yeteneği sağlar.
• Herhangi bir veri türü kavramı sağlamaz. Tür bilgisi eklemek için XML Şemasına güvenilmelidir.
JSON vs. XML
• İkisi de basit ve açık.
• Her ikisi de unicode'u destekler. Dolayısıyla Internationalization hem JSON hem de XML tarafından
desteklenir.
• Her ikisi de kendi kendini tanımlayan verileri temsil eder.
• Her ikisi de birlikte çalışabilir veya dilden bağımsızdır.
JSON kullanımları
• JSON, tarayıcı uzantısı ve web siteleri içeren JavaScript tabanlı uygulama yazarken kullanılır.
• JSON formatı, yapılandırılmış verileri ağ bağlantısı üzerinden seri hale getirmek(serialization) ve
iletmek için kullanılır.
• JSON, esas olarak sunucu ve web uygulaması arasında veri iletmek için kullanılır.
• Web Servisler ve API'ler, herkese açık veriler sağlamak için JSON biçimini kullanır.
• JSON, modern programlama dilleriyle kullanılabilir.
BSON
{Binary JSON}
BSON
• BSON : Binary JSON
• http://bsonspec.org/
• Lightweight
– Uzamsal(spatial) ek yükü minimumda tutmak, özellikle ağ üzerinden kullanıldığında herhangi bir
veri gösterimi formatı için önemlidir.
• Traversable
– BSON is designed to be traversed easily. This is a virtual property in its role as the primary data
representation for MongoDB.
• Efficient
– Encoding data to BSON and decoding from BSON can be performed very quickly in most
languages due to the use of C data types.
MongoDB BSON’ı Nasıl Kullanır?
• MongoDB, “dökümanlar" için veri depolama ve ağ aktarım biçimi olarak BSON'u kullanır.
• Basit veri yapılarını ve ilişkisel dizileri(associative arrays) temsil etmek için binary bir formdur.
JSON Veri Tipleri
• Object
• Array
• Value
• String
• Number
Value
{...}, [...], 2, "one", true, null
Object
{“firstname”: ”Jane”, ”lastname": ”Doe”}
Array
[{”firstname”: ”Jane”, ”lastname": ”Doe”},
{”firstname”: ”John”, ”lastname": ”Jones”}]
Squiggles, Squares, Colons, Commas
• Dalgalı parantezler 'kapsayıcı' görevi görür.
– {...}
• Köşeli parantezler dizileri tutar.
– [...]
• İsimler ve değerler iki nokta üst üste ile ayrılır.
– name:value
• Dizi öğeleri virgülle ayrılır.
– [member1, member2]
JSON Döküman Doğrulama
• JSON’da Well-Formedness kontrolü
• JSON Dökümanlarını JSON Şemalarına karşı doğrulama
• JSON Şemalarını Şartname’ye(Specification) göre doğrulama
Well-Formedness Kontrolü
• JSON belgesinin JSON belirtimine uyup uymadığını kontrol edin!
• ECMA-404 JSON Veri Değişim Standardı
– http://json.org
Anahtardan sonra ':’ olmalı
',’ olmalı
',’ olmamalı
“ ile kapanmalı
'}’ olmalı
JSON Schema
JSON Şeması, JSON dökümanlarına açıklama eklemenize ve bunları
doğrulamanıza olanak tanıyan bir sözlüktür.
http://json-schema.org
JSON Schema Tanımlamak
• XML Şeması, RNG veya DTD'ye benzer
• JSON ile yazıldı
• JSON verilerinin yapısını tanımlamak için kullanılır
{”type”: ”string”} ”I'm a string”
JSON Schema JSON Instance
JSON Schema JSON Instance
JSON Schema JSON Instance
JSON Schema Tanımlamak
• Şema tanımının ilk seviyede olması tavsiye edilir:
"$schema": "http://json-schema.org/draft-07/schema#"
• JSON Schema kullanılan versiyonlar:
– Draft 4
– Draft 6
– Draft 7
– Draft 8
JSON Schema ile Doğrulamak
• JSON örneğinin tanımlara uyup uymadığını kontrol edin:
Beklenen string, gelen integer
[lastname] gerekirken [familyname]
Geçersiz email adresi
JSON Şemasını İlişkilendir
• Şemayı JSON Dökümana ilişkilendir.
– Doğrudan JSON dökümanında $schema özelliğini kullanarak
– Uygulama ayarlarında
JSON Schema Doğrulamak
• well-formedness Kontrolü
• The Internet Engineering Task Force(IETF) Specification’e Göre Doğrulamak
Schematron ile JSON
Doğrulamak
• JSON Şemasını kullanarak JSON yapısını belirtin.
• Schematron kullanarak ortak kısıtlamalar ve özel kurallar.
• https://schematron.com
JSON için Schematron
• Kuralları belirlemek için XPath kullanın/
JSONPath Kullanarak
Schematron
• Schematron, XML/XPath bakış açısı ile JSON için yeniden tasarlandı.
https://github.com/amer-ali/jsontron
Querying ve Transforming
• JSON Pointer, JSONiq veya XPath kullanarak sorgulamak
• JSON'u JavaScript, XSLT, XQuery kullanarak dönüştürmek
JSON Pointer
Bir JSON belgesindeki belirli bir değeri tanımlamak için kullanılır.
#/employees/0/email
İlk çalışan emaili ile eşleşir.
Specification
https://tools.ietf.org/html/rfc6901
JSONiq
JSON için bir sorgu ve işleme dili
www.jsoniq.org
XPath
• XML dökümanlarını sorgulamak için güçlü dildir.
• JSON için de uygulamalar tarafından benimsenmiştir.
/employees[2]/email
2. çalışan emaili ile eşleşir
JSON'u JavaScript ile işleyin
• JSON belgelerini işlemenin en popüler yolu.
• Birden çok library
var json = '{"name":”John Doe”, "age":42}’;
obj = JSON.parse(json);
console.log(obj.name); // Result John Doe
console.log(obj.age); // Result 42
XSLT/XQuery Kullanarak
Dönüştürme
• JSON dökümanlarını farklı biçimlere dönüştürür.
• JSON dökümanları işlemek için farklı fonksiyonlar :
– json-doc($href as xs:string?) as item()?
– json-to-xml($json-text as xs:string?) as document-node()?
Converting JSON Documents
• JSON'dan XML'e ve XML'den JSON’a
• XSLT kullanarak dönüştürme
• Online Converters
JSON'dan XML'e Dönüştürme Ayrıntıları
XML to JSON
XML'den JSON'a Dönüştürme
Ayrıntıları
• XML nitelikleri özelliklere dönüştürülür:
<person id="1"/> {"person": {"id": 1}}
• Aynı ada sahip birden çok öğe bir diziye dönüştürülür.
<person/> <person/> "person": ["",""]
• Karışık içerikteki metin bir #text özelliğine dönüştürülür.
<p>This is an <b>example</b>!</p>
p": {"#text": "This is an", "b": "example", "#text1": "!"}
XSLT Kullanarak Dönüştürme
• XSLT kullanarak XML'yi JSON'a dönüştüren library
– https://github.com/bramstein/xsltjson
• JSON için XSLT Spesifikasyonu
– http://www.w3.org/TR/xslt-30/#json
JSON API
• https://jsonapi.org/
• https://jsonplaceholder.typicode.com/

MongoDB - JSON'a Genel Bakış

  • 2.
    DeepLab : Teknolojiler ML/DL/CVOdaklı • Teknolojiler – Go, Python, C/C++, Rust, C# – PyTorch, TensorFlow, Keras, scikit-learn • Web, Mobile, IoT/Edge ve Back-End olarak… – OpenCV – … ve farklı onlarca araç-gereç… • Databases – SQL Server, Oracle, PostgreSQL – MongoDB, Redis, Cassandra • Distributed Systems – Distributed Databases – Distributed Deep Learning
  • 3.
    JSON JSON : JavaScriptObject Notation Cihan Özhan | DeepLab.co | Founder & AI Engineer, Mentor
  • 4.
  • 5.
  • 6.
    JSON Nedir? • JSON,JavaScript Object Notation anlamına gelir. • Official Website : http://json.org • Online JSON Parser : http://json.parser.online.fr/beta • Bu format Douglas Crockford tarafından belirlendi. • JSON dosya adı uzantısı .json’dur. • JSON Internet Media Type : ‘application/json’ • The Uniform Type Identifier is public.json • JSON – Insan tarafından okunabilir. – Veri depolamak e değiş-tokuş etmek için bir sözdizimidir. – Dil bağımsız bir veri formatıdır. – “Self-Describing” ve anlaşılması kolay. – JSON JavaScript sözdizimi kullanır ama JSON format metin tabanlıdır. XML gibi… • Okunabilir ve veri formatı olarak her programlama diliyle kullanılılabilirdir. • API ve Config için kullanılır.
  • 7.
    JSON Sözdizimi • Verilername/value ikilisinde oluşur. • Veriler virgülle ayrılmıştır. • Küme araçları(Curly Braces) nesneleri tutar. • Köşeli parantezler(Square Brackets) dizileri tutar. • JSON'un yaygın bir kullanımı, verileri bir web sunucusundan okumak ve bir web sayfasında görüntülemektir.
  • 8.
    JSON vs. XML •JSON daha kısadır. • JSON, bitiş etiketini kullanmaz. • JSON dizileri destekler. • JSON'un görüntüleme yeteneği yok. • Native nesne desteği. • Her ikisi de 'kendi kendini tanımlayan', yani değerlerin adlandırıldığı anlamına gelir. • Her ikisi de 'insan tarafından okunabilir’. • Her ikisi de hiyerarşiktir. (yani değerleri bir başka değer içinde tutabilirsiniz.) • Her ikisi de ayrıştırılabilir ve birçok programlama dili tarafından kullanılabilir. • JSON daha az ayrıntılıdır, bu nedenle insanlar için kesinlikle daha hızlı okunabilir. • JSON, JavaScript'teki eval() prosedürü kullanılarak basit bir şekilde ayrıştırılabilir. • JSON, {her öğenin kendi adına sahip olmadığı} dizileri içerir. • Hem JSON hem de XML bir XMLHttpRequest ile getirilebilir
  • 9.
    JSON vs. XML •XML dizi verilerini desteklemez. • XML, JSON'dan biraz daha karmaşıktır. • XML, bir öğenin başında ve sonunda bir etiket adı bulunan açılı parantezler kullanır: – JSON, adı yalnızca öğenin başında olan dalgalı parantezler kullanır. • XML'de bir öğe için istediğiniz herhangi bir adı kullanabilirsiniz, JSON'da javascript'ten ayrılmış(reserved) kelimeleri kullanamazsınız. • XML, bir biçimlendirme dili olduğu için verileri görüntüleme yeteneği sağlar. • Herhangi bir veri türü kavramı sağlamaz. Tür bilgisi eklemek için XML Şemasına güvenilmelidir.
  • 10.
    JSON vs. XML •İkisi de basit ve açık. • Her ikisi de unicode'u destekler. Dolayısıyla Internationalization hem JSON hem de XML tarafından desteklenir. • Her ikisi de kendi kendini tanımlayan verileri temsil eder. • Her ikisi de birlikte çalışabilir veya dilden bağımsızdır.
  • 11.
    JSON kullanımları • JSON,tarayıcı uzantısı ve web siteleri içeren JavaScript tabanlı uygulama yazarken kullanılır. • JSON formatı, yapılandırılmış verileri ağ bağlantısı üzerinden seri hale getirmek(serialization) ve iletmek için kullanılır. • JSON, esas olarak sunucu ve web uygulaması arasında veri iletmek için kullanılır. • Web Servisler ve API'ler, herkese açık veriler sağlamak için JSON biçimini kullanır. • JSON, modern programlama dilleriyle kullanılabilir.
  • 12.
  • 13.
    BSON • BSON :Binary JSON • http://bsonspec.org/ • Lightweight – Uzamsal(spatial) ek yükü minimumda tutmak, özellikle ağ üzerinden kullanıldığında herhangi bir veri gösterimi formatı için önemlidir. • Traversable – BSON is designed to be traversed easily. This is a virtual property in its role as the primary data representation for MongoDB. • Efficient – Encoding data to BSON and decoding from BSON can be performed very quickly in most languages due to the use of C data types.
  • 14.
    MongoDB BSON’ı NasılKullanır? • MongoDB, “dökümanlar" için veri depolama ve ağ aktarım biçimi olarak BSON'u kullanır. • Basit veri yapılarını ve ilişkisel dizileri(associative arrays) temsil etmek için binary bir formdur.
  • 15.
    JSON Veri Tipleri •Object • Array • Value • String • Number
  • 16.
    Value {...}, [...], 2,"one", true, null
  • 17.
  • 18.
    Array [{”firstname”: ”Jane”, ”lastname":”Doe”}, {”firstname”: ”John”, ”lastname": ”Jones”}]
  • 19.
    Squiggles, Squares, Colons,Commas • Dalgalı parantezler 'kapsayıcı' görevi görür. – {...} • Köşeli parantezler dizileri tutar. – [...] • İsimler ve değerler iki nokta üst üste ile ayrılır. – name:value • Dizi öğeleri virgülle ayrılır. – [member1, member2]
  • 23.
    JSON Döküman Doğrulama •JSON’da Well-Formedness kontrolü • JSON Dökümanlarını JSON Şemalarına karşı doğrulama • JSON Şemalarını Şartname’ye(Specification) göre doğrulama
  • 24.
    Well-Formedness Kontrolü • JSONbelgesinin JSON belirtimine uyup uymadığını kontrol edin! • ECMA-404 JSON Veri Değişim Standardı – http://json.org
  • 25.
    Anahtardan sonra ':’olmalı ',’ olmalı ',’ olmamalı “ ile kapanmalı '}’ olmalı
  • 26.
    JSON Schema JSON Şeması,JSON dökümanlarına açıklama eklemenize ve bunları doğrulamanıza olanak tanıyan bir sözlüktür. http://json-schema.org
  • 27.
    JSON Schema Tanımlamak •XML Şeması, RNG veya DTD'ye benzer • JSON ile yazıldı • JSON verilerinin yapısını tanımlamak için kullanılır {”type”: ”string”} ”I'm a string” JSON Schema JSON Instance
  • 28.
  • 29.
  • 30.
    JSON Schema Tanımlamak •Şema tanımının ilk seviyede olması tavsiye edilir: "$schema": "http://json-schema.org/draft-07/schema#" • JSON Schema kullanılan versiyonlar: – Draft 4 – Draft 6 – Draft 7 – Draft 8
  • 31.
    JSON Schema ileDoğrulamak • JSON örneğinin tanımlara uyup uymadığını kontrol edin: Beklenen string, gelen integer [lastname] gerekirken [familyname] Geçersiz email adresi
  • 32.
    JSON Şemasını İlişkilendir •Şemayı JSON Dökümana ilişkilendir. – Doğrudan JSON dökümanında $schema özelliğini kullanarak – Uygulama ayarlarında
  • 33.
    JSON Schema Doğrulamak •well-formedness Kontrolü • The Internet Engineering Task Force(IETF) Specification’e Göre Doğrulamak
  • 34.
    Schematron ile JSON Doğrulamak •JSON Şemasını kullanarak JSON yapısını belirtin. • Schematron kullanarak ortak kısıtlamalar ve özel kurallar. • https://schematron.com
  • 35.
    JSON için Schematron •Kuralları belirlemek için XPath kullanın/
  • 36.
    JSONPath Kullanarak Schematron • Schematron,XML/XPath bakış açısı ile JSON için yeniden tasarlandı. https://github.com/amer-ali/jsontron
  • 37.
    Querying ve Transforming •JSON Pointer, JSONiq veya XPath kullanarak sorgulamak • JSON'u JavaScript, XSLT, XQuery kullanarak dönüştürmek
  • 38.
    JSON Pointer Bir JSONbelgesindeki belirli bir değeri tanımlamak için kullanılır. #/employees/0/email İlk çalışan emaili ile eşleşir. Specification https://tools.ietf.org/html/rfc6901
  • 39.
    JSONiq JSON için birsorgu ve işleme dili www.jsoniq.org
  • 40.
    XPath • XML dökümanlarınısorgulamak için güçlü dildir. • JSON için de uygulamalar tarafından benimsenmiştir. /employees[2]/email 2. çalışan emaili ile eşleşir
  • 41.
    JSON'u JavaScript ileişleyin • JSON belgelerini işlemenin en popüler yolu. • Birden çok library var json = '{"name":”John Doe”, "age":42}’; obj = JSON.parse(json); console.log(obj.name); // Result John Doe console.log(obj.age); // Result 42
  • 42.
    XSLT/XQuery Kullanarak Dönüştürme • JSONdökümanlarını farklı biçimlere dönüştürür. • JSON dökümanları işlemek için farklı fonksiyonlar : – json-doc($href as xs:string?) as item()? – json-to-xml($json-text as xs:string?) as document-node()?
  • 43.
    Converting JSON Documents •JSON'dan XML'e ve XML'den JSON’a • XSLT kullanarak dönüştürme • Online Converters
  • 44.
  • 45.
  • 46.
    XML'den JSON'a Dönüştürme Ayrıntıları •XML nitelikleri özelliklere dönüştürülür: <person id="1"/> {"person": {"id": 1}} • Aynı ada sahip birden çok öğe bir diziye dönüştürülür. <person/> <person/> "person": ["",""] • Karışık içerikteki metin bir #text özelliğine dönüştürülür. <p>This is an <b>example</b>!</p> p": {"#text": "This is an", "b": "example", "#text1": "!"}
  • 47.
    XSLT Kullanarak Dönüştürme •XSLT kullanarak XML'yi JSON'a dönüştüren library – https://github.com/bramstein/xsltjson • JSON için XSLT Spesifikasyonu – http://www.w3.org/TR/xslt-30/#json
  • 49.
    JSON API • https://jsonapi.org/ •https://jsonplaceholder.typicode.com/