Title: Datové formáty
Tags: XML Multimedia JSON Text 5 XPATH XSLT GeoData CSV Key-value Tisk

Q: Proč je dobré oddělovat  data od aplikace, tj. nezávislá data?
A: Můžeme zvlolit jiné aplikace.

Q: K čemu je konceptuální model?
A: Říct si jaké entity.
Jaké mají vazby a jak jsou propojeny.
Měl by mu rozumět i laik.

Q: Z čeho se skládá UML diagram?
A: Z entit - tříd a vazeb - asociací.
- entity mají atributy
- vazby mají kardinalitu - multiplicitu

Q: Co jsou otevřená data?
A: Otevřená data jsou informace a data zveřejněná na internetu, která jsou:
- úplná,
- snadno dostupná,
- strojově čitelná,
- používající standardy s volně dostupnou specifikací,
- zpřístupněná za jasně definovaných podmínek užití dat s minimem omezení a
- dostupná uživatelům při vynaložení minima možných nákladů

Q: Co je datový model?
A: sada nástrojů k reprezentaci dat z nějaké konkrétní domény

Q: Co je datový formát?
A: - Jedná se o způsob jak datový model reprezentovat jako soubor.
- Můžu se rozhodnout, jaký datový formát použiju pro daný datový model.
- Jedná se o fyzický pohled na model.
- Jak jsou data serializována do souborů.

Q: Jaké jsou známé modely
A: - grafové ( rdf graph model = turtle, trig, rdfa), property graph = csv, json, cypher)
- hierarchické (DOM = xml, xhtml | json = json, xml)
- relační ( csv, sql dump)

Q: Co je datové schéma?
A: schéma omezuje množinu dokumentů v daném datovém formátu, které budou v daném jazyku validní.
- Také definuje jazyk pro výměnu dat.
- Pojí se s datovým formátem.

Q: Napište nějaké jazyky datových schémat.
A: csv on the web -> csv
shacl -> rdf
json schema -> json
xml schema -> xml

Q: Co jsou metaformáty (hostitelské formáty)?
A: Slouží jako hostitelské formáty pro specifické use casy.
Tj. xml, rdf, ... jsou někdy nazývané meta formáty.
GeoJson -> json
svg, atom, rss, .docx -> xml
dcat, schema.org -> rdf

Q: Co je otevřený formát?
A: - specifikace volně dostupná na webu
- volně přístupné komukoli,
- bez omezení používání
- Metaformáty: XML, JSON, CSV, RDF,...
- Specifické formáty: SVG, GeoJSON, ...
=> každý může vytvořit aplikaci, která umí pracovat s tomto formátu

Q: Co jsou uzavřené formáty?
A: - specifikace není přístupná => nutnost platby za přístup specifikace
- potřeba registrace
- potřeba certifikace knihovny/aplikace nárok na kompatibilitu
Příklady
- railML.org (na základě XML, potřeba certifikace)

Q: Co jsou strojově čitelné formáty?
A: - není to vlastnost formátu
- závisí na formě konkrétní datové instance
- říká, zda jsou data snadno zpracována vhodnými aplikacemi

Q: Co je binární soubor?
A: binární soubory = struktura popsána bit po bitu
- netextový soubor
- čitelný hex editorem, nečitelný textovým editorem

Q: Co je textový soubor
A: textový soubor = obsahuje text
- strukturovaný po řádcích typicky
- čitelný hex editorem i textovým editorem
- text je zakódován do 1 a 0 pomocí character encoding

Q: Napiště nějaké character encoding?
A: např. US-ASCII = 7 bit na character

Q: Co je character encoding?
A: character encoding = reprezentace chareckterů jako binární sekvence (mn. číslo) (čísel)

Q: Jak se reprezentuje newline?
A: CR = carriage return \r = vrácení se na začátek
LF = line feed - \n = nová řádka
CR LF = oboje - \r\n

Q: Co je UTF-8?
A: = character encoding
- character má 1 až 4 bajty (nejčastěji 2)
-prvná bajt je kompatibilní s US-ASCII
- emoji má 4 bajty

Q: Co je BOM?
- kde je?
- používá se?
A: bajtové číslo, které říká jaké konrétní kódování bylo použito.
- na začátku textového souboru
- většinou se používá UTF-8 bez BOM (protože jiné varianty UTF8 se skoro nepoužívají)

Q: Co je ABNF?
A: = jazyk nějakého formátu

Q: Lze na první pohled rozeznat mezi URI, URL, IRI a URN?
A: Nejde, to.
Rozdíl mezi URI a URL je, že když URL dáme do prohlížeče, tak získáme nějaké informace.
- IRI => můžeme tam psát UTF-8 => tj. emotikony, atd.
- URN => nemá spojitost s tím co definuje.

Jak by mohla vypadat IRI a URI?

Q: K čemu je Punycode?
A: Překlad UTF8 IRI znaků do něčeho čiteného.

Jak vypadají typické datové typy používané napřič formáty?

Jak reprezentovat data jako graf?

Q: Co je dobré s takovým grafovým modelem udělat?
A: Všechny popisky převést na URL.
Lze prefxovat pro zkrácení:

Jak lze grafový model převést do RDF?

Q: Co je RDF?
A: RDF = grafový datový model
- je to webový standard W3C = slouží k reprezentaci dat na webu
- máme orientované hrany a uzly
- skládá se ze setů trojic - triples: subject - predicate - object

Q: Jak vypadá RDF trojice - triple?
A: - identifikované pomocí uri/url => <url> <url> <url> .

Q: Může objektem být jednoduchý primitivní typ?
A: Ano, může = jedná se o literál - literálová hodnota, o které nejde říct nic dalšího.

Q: Jak vytvořit prefix?
A: pomocí @prefix název_prefixu: <url>
- prefix.cc = služba, která zjistí o jaký prefix se jedná

Q: Je v RDF uspořádání?
A: Není tam uspořádání.

Q: Z čeho se skládá literál?
A: - z hodnoty = textová reprezentace
- iri identifikující datový typ

Q: Popište textový literál přirozenéh jazyka?
A: Nemá odkaz na datový typ, ale langage tag.

Q: Co když u literálu není uveden datový typ? (jeho iri)
A: Jedná se o string.

Q: K čemu je rdf:type?
A: Říka, co je jakého typu.
- Jedná se o predikát.

Q: K čemu jsou prázdné vrcholy - blank nodes?
A: = obyčejný uzel, ale nemá iri
- prefix podtržítko _

Q: Jak teda funguje rdf?
A: = pojmenovaný (mají svojé iri) orientovaný (predikáty = orientované hrany = ze subjektu do objektu) multigraf (mezi dvěma uzly může být více hran)

Q: Co je rdf serializace?
A: = jak můžeme data na která koukáme skrze rdf zapsat do textu

Q: Popište N-Triples rdf serializaci.
A: Vezmeme každou trojici: <iri subjektu> <iri predikátu> <iri objektu> .
- lze psát komentáře pomocí: #komentar
- objekt nemusí být iri, ale literál
- jednoduché vytvořit parser
- zabírá hodně místa na disku

Q: Jak lze optimalizovat N-Triples?
A: - IRI se opakují => zavedou se prefixy.
- Nahradím IRI v subjektech za prexify
- pokud se opakují subjekty => na konec řádky středník ; a lze vynechat subjekt na dalším řádku
- opakuje se subjekt i predikát => použiju čárku ,

K čemu je prefix : ? [2 - 32:00]

Q: Jak zkrátit jinak trojice?
A: Pomocí relatiních IRI.
- definice domovského adresáře => @base <iri> . = základna vůči, které jsou relativní iri relativní.

Q: Lze v RDF Turtle používat víceřádkový string?
A: Ano, jde to:
"""a string
with newlines
"""

Q: Jak lze v RDF Turtle zkrátit predikát typu?
A: Místo rdf:type použijeme a

Q: Jaká je RDF Turtle zkratka za blank node _ ?
A: Pomocí hranatých závorek [ ].
- adresa je blank node

Jak se v RDF Turtle zkracují datové typy?

Q: Co je teda RDF Turtle?
A: Optimalizace RDF Triples.

Q: Jak přidat nějaká data o trojici?
A: Přidáme trojici - statementu IRI nebo z něj uděláme blank node = reifikace
- nevýhody = horší dotazování nad daty

Q: Jak jinak vyřešit problém dat o trojici? [2 - 45:00]
A: Pomocí named graph.

Q: Co je RDF datová sada (data set)
A: RDF datová sada se skládá z:
- množina pojmenovaných grafů (identifikovaných pomocí svých IRIs)
- jeden defualt (= výchozí) graf

Q: V čem spočívá RDF N-Quads?
A: Na základe RDF N-Triples, přidává podporu pro named graphs (= pojmenované grafy)

Q: Co je RDF Trig?
A: - Serializace založená na RDF Turtle
- Přidává podporu pro pojmenované grafy.
- RDF dataset se skládá z 1 výchozího grafu a N pojmenovaných grafů
subjekt -predikát - objekt - graf

Q: Co jsou RDF slovníky?
A: rdf slovník = definice tříd a predikátů, které můžu použít pro reprezentaci dat v datovém modelu RDF.

Q: Co je RDFS?
A: RDF slovník RDF Schema.

Jak v RDFS (RDF Schema) definovat třídy = říct, že něco je třída.

Q: Jak v RDFS říct, že něco je podtřída jiné třídy?
A: Můžeme mít i vícenásobnou dědičnost:

Q: Definice properties - predikátů.
A: - rdfs:range = obor hodnot
- rdfs:domain = definiční obor
=> pozor domain nelze míchat dohromady váha se vztahuje k obojímu...

Q: K čemu je rdfs:lavel, comment, seeAlso, isDefinedBy
A: rdfs:label = lidsky čitelné jméno resource
rdfs:comment = lidsky čitelný delší popis resource
rdfs:seeAlso = míří na jinou resource, která mi dá více informací o resource subjektu
rdfs:isDefinedBy = In a sense not specified by RDF

Q: Jak zachovat pořadí trojic v RDF?
A: Pomocí rdf:List = implementováno jako spojový seznam.
- pro uzavřené kolekce
Nebo containers - pro otevřené kolekce:

Q: Co je Open World Assumption (OWA) ?
A: = pravdivostní hodnota nějakého tvrzení může být pravdivá jen když nevíme jestli je nebo není pravdivá.
V Closed: ne, protože není součástí tabulky.
V Open, nevíme, protože nemáme o něm žádná data.

Q: Co jsou nepropojená data? (regular data)
A: Např. csv, json, které visí někde na webu  a chceme s nimi pracovat:

Q: Nevýhody nepropojených dat?
A: Nejednoznačná identifikace entit v datech
- Osoba s ID aaa1234 v dokumentu umístěném na mém notebooku ve složce /data/temp/people.json
- Další osoba s ID aaa1234 v souboru XML na tomto CD
Nízká dohledatelnost a dostupnost dat
- Získat data o osobě aaa1234 => Přejít do mého notebooku, otevřít složku, načíst/otevřít soubor, hledat/dotaz
Žádné kontextové informace
- Osoba aaa1234 žije v Praze. Chci vědět víc o Praze.
- Kde a jak získám informace?

Q: Jak vyřešit problémy nepropojených dat?
A: - Identifikátory entit v datech musí být globální, jednoznačné.
- Data musí být nalezitelná a dostupná => najít data podle identifikátorů, zpřístupnění v jednom formátu
- Kontextuální infomrace = když se jeden kus dat týká jiných dat, tak se chceme z dostat z jednoho do druhého
=> Takový systém, kde jsou tyto problémy řešeny = WEB.

Q: Hlavní principy webu?
A: 1. Stránky (dokumenty) se píšou v HTML.
2. URL se používají jako globální unikátní (=jednoznačné) identifikátory dokumentů.
3. Použití prokokolu HTTP k získání obsahu stránky.
4. hyperlinks mezi dokumenty - stránkami

Q: Jaké máme aplikace pro práci na webu?
A: 1. webové prohlížeče = lokalizace a procházení dokumentů přes hypertextové odkazy
2. vyhledávače (search engines) =  indexování a fulltextové vyhledávání dokumenty

Q: K čemu je API?
A: Zpřístupňují data (human readable)
- existence API ušetří jen encding/decoding do html

Q: Problém s daty na webu?
A: (Vlevo web stránek - prostě internet...)

Q: Co jsou propojená data (linked data) ?
A: = aplikace web of documents na nepropojená data
- jsou to nějaké best-practices pro publikování a linkování dat o entitách na webu
sada best practises s dvěma cíly
1. Popsat co data znamenají, třeba RDF slovníky
2. Propojovat data z různých datových zdrojů - odkazování mezi nimi

Q: Napičtš 4 principy propojených dat.
A: 1. Používejte URI jako názvy věcí
2. Používejte HTTP URI, aby lidé mohli vyhledávat tyto názvy vyhledat.
3. Když někdo vyhledá URI, poskytněte užitečné informace pomocí standardů (RDF, SPARQL)
4. Zahrňte odkazy na další URI, aby mohli zjistit další věci.
= Aplikace web of documents principů na data.

Q: Jak by vypadal web of documents, kdyby porušoval první 2 pravidla?
A: Bez URI bychom nebyli schopni na stránku ukázat.

Q: Jak aplikovat na data první dva principy?
A: Přiřadit entitám URI.

Q: Jak aplikovat 4. pravidlo?
A: => poskytnout kontext:

Porovnejte web of documents s web of data?

Q: Co je Linked Open Vocabularies?
A: Je to katalog slovníků použitých na Web of Data.
- zde se najdou registrované existující RDF slovíky

Q: Co je DBPedia?
A: Z wikipedie se vytahaly infoboxy (takové ty základní informace ) a převedly se do linked data.

Q: K čemu GeoName?
A: Říct o nějakém objektu, kde se nachází.

Q: Co mají otevřená data?
A: Mají nějaké podmínky užití => říkají právně, co s nimi můžeme dělat.

Q: Otevřená data - 5 star classification
A: 1. hvězdička = data vypadají libovolně, ale máme právní jistotu
2. hvězdička = pokud data byla zdrojově zpracovatelná u zdroje, tak jsou i u nás
3. hvězdička = formát, ve kterém data jsou , je otevřený
4. hvězdička = entity jsou identifikovány svými URI/IRI => RDF
5. hvězdička = data jsou propojená (kontext, objevování jiných datových sad)

Q: Co jsou propojená otevřená data?
A: = data, která jsou zároveň otevřená (open) i propojená (linked) => 5 star

Přeložte do RDF:

Q: Co je SPAQL?
A: Je to dotazovací jazyk nad daty v RDF.

Q: Co je SPARQL endpoint?
A: = přístupvý bod RDF databáze = nějaká webová služba založena na HTTP
=> input = sparql query | output = data ( rdf, csv, json, xml, ...)
- často má nějaký formulář (yasgui) a ne jen konzoli

Q: Co je wikidata?
A: = strukturovaná databáze, kde může člověk přijít a měnit data

Q: Jak fungují proměnné ve se SPARQL?
A: => ?název_proměnné
- ptáme se, které subjekty mi s daným predikátem dají daný objekt

Q: V jakém pořadí se matchují data?
A: 1. objekt -> 2. predikát -> 3. získám možné subjekty -> 4. když mám match - variable binding = přiřazení matche do ?s

Prostudovat matchování:
- atributy
- typ třídy

Q: Jak v SPARQL query říct, že něco je nepovinné?
A: - pomocí OPTIONAL

Q: Co je výsledkem sparql query?
A: solution table

Q: Jak se typicky dotazujeme?
A: Většinou jen, že neco je nějakého typu není optional, všechno ostatní je optional.

Q: Jak spojit grafové vzory pomocí sjednocení?
A: např. pomocí UNION = sjednocení

Q: Co dělá SELECT?
A: Vrací konkrétní sloupečky tabulky (stejně jako v SQL)

Popište tento dotaz:

Jak zadefinovat zkratky pomocí prefixů/relativních uri?

Q: Jaký je problém s blank nodes v sparql?
A: blank nodes = nejsou identifikovány svými iri
-> blank node bude mít ve výsledku po každém spuštění sparql query jiné id, tj. nemůžeme se na něj znova zeptat => potřebovali bychom plnohodnotný uzel

Q: Jak použit sparql pro named graph?
A: Pomocí klíčového slova GRAPH

Q: Jak se zbavit duplicit ve výsledku?
A: za SELECT je potřeba dát DISTINCT, tak jako v SQL

Jaké jsou zkratkyv sparql?

Q: Jak logicky omezit výsledek (tj. ekvivalent sql where)?
A: Pomocí FILTER

Select URI and labels of all skos:ConceptSchemes from a
given SPARQL endpoint, which are labeled „Paragraf“.

Q: co dělají bound, isIri, isBlank, isLiteral v sparql?
A: bound = je v proměnné navázána nějaká hodnota?
isIri = je v proměnné iri?
isLiteral = je v proměnné literal?
isBlank = je v proměnné blank node?

Q: Jak získat části literálu v sparql?
A: pomocí str, lang, dataType

Select first 100 inspections of CTIA, which have a fine as a result.
Return its value.

Q: Jak vrátit prvních N řešení?
A: pomocí LIMIT N

Select first 100 inspections of CTIA, which have a fine as a result. Return its value. Pomocí property Paths.

Popište operace na property paths? [3 - 45:00]

Q: Jak získat maximum v sparql?
A: pomocí MAX(?promenna)

Jaké jsou agragační funkce v sparql?

Q: Co dělá agregační funkce SAMPLE?
A: Vybere náhodně jedno řešení a to vrátí.

Q: Co dělá GROUP_CONCAT(?x ; separator = "|")
A: Vezme všechny hodnoty dané proměnné (?x) a splácne je do jednoho textu a oddělí je separatorem.

Q: Co je federované dotazování (federated query)? [3 - 47:00]
A: sparql endopoint jsou webové služby na webu => jedním dotazem můžu obsáhnout spoustu endpontů
- pomocí SERVICE

Q: Jak vytvářet proměnné, do které můžu něco spočítat?
A: Pomocí BIND-AS

Q: Select first 100 inspections of CTIA, which have a fine as a result.
Return its value and whether it is higher than 1000.
A: if:
1. parametr je výraz
2. co se vrátí, pokud ano
3. co se vrátí, pokud ne

Q: Co dělá coalesce? ... COALESCE(1/0, ?x, ...)
A: Vrátí první parametr, který nevrátí chybu.

Q: Co dělá exists/not exists { graph patern }
A: jestli existuje nějaký grafový vzor

K čemu je IN / NOT IN?

Q: Co dělá IRI?
A: Vezmě řetězec, které obsahuje IRI a zkontruuje IRI, které identifikuje uzel v grafu.

Q: Co dělá STRDT?
A: Vezme řetězec a iri datového typu a vytváří literál s danou hodnotou a daným typem.

Q: Co dělá STRLANG?
A: Bere string a langage tag a vytváří literál s řetězcem a lang tagem.

Q: Co dělá UUID?
A: Vygeneruje náhode URI.

Q: Co dělá ENCODE_FOR_URI?
A: Vezmě řetězec a zakóduje ho tak, aby byl použitelný v nějaké URI

Q: Co dělá langMatches?
A: Vezme dva lang tagy a řekne, jestli na sebe matchují.
- en a en-nz => vrátí true na tuto dvojici

Další string funkce.

Q: Create IRI for entities with IDs
the Frequency EU vocabulary
A: => CONSTRUCT = vezmeme tabulku řešení a dosadíme do šablony řešení => pro transformaci rdf dat z jedné podoby do jiné (např podle jednoho slovníku do druhého)

Nějaké matemaitcké funkce.

Časové funkce.

Jak na podpříkazy v sparql?

Q: Co dělá VALUES ?
A: Říká jakých dat může proměnná nabývat.
- Pokud nenamatchuje danou hodnotu, tak ji nedá do výsledku.
- náhrada za FILTER

Jak použít VALUES pro překlad jednich hodnot na druhé?

Q: Co dělá ASK?
A: Na stejné úrovni jako SELECT a CONSTRUCT.
= kontroluje jestli existuje aspoň jeden item ve výsledku => výsledek ASK je true/false

Result: RDF graph constructed from a template.

Q: Co dělá DESCRIBE?
A: = DESCRIBE <IRI entity> => vrátí informace o entitě (= nějaký rdf graf o dané resource)
- může vracet, všechny informace, kde toto je iri/predikát, atd.
- kdyby iri bylo blank node, tak vrací všechny pod trojice rekurzivně, atd.

Q: Jak řadit?
- podle více kritérií
- vzestupně/sestupně
A: Pomocí ORDER BY
- ASC (default), DESC

Q: V  jakém pořadí se řadí?
A: variable < blank node < URI < literal

Ukázka ORDER BY.

Q: Co dělá LIMIT?
A: Omezí množinu výsledků.
- best practise = u neznámého endpointu je dobré dát limit 10

Q: Co dělá OFFSET ?
A: Vrací výsledky až od několikátého výsledku.
Používané pro paging skrze výsledky:

Jak použít HAVING a GROUP BY?

Q: K čemu je UPDATE?
A: Pokud máme práva, tak můžeme data měnit/mazat, ...

Q: Co je entailment regimes?
A: Jaká další odvozování faktů jsou v endpointu nasazena.

Q: K čemu jsou federated query?
A: Pro dotazování se z jednoho dotazu nad více endpointy.
Pomocí SERVICE.

Q: Definujte:
A: - SPARQL 1.1 Overview: Poskytuje komplexní úvod a shrnutí specifikací SPARQL 1.1 pro dotazování a manipulaci s RDF daty.
- SPARQL 1.1 Query Language: Definuje syntaxi a sémantiku pro dotazování na RDF dataset, včetně podpory filtrování, agregací a poddotazů.
- SPARQL 1.1 Update: Specifikuje syntaxi a operace pro úpravu RDF datasetů, jako je vkládání, mazání a aktualizace trojic.
- SPARQL 1.1 Service Description: Popisuje, jak zveřejnit informace o schopnostech a funkcích SPARQL endpointu.
- SPARQL 1.1 Federated Query: Umožňuje spouštění dotazů nad více SPARQL endpointy současně.
- SPARQL 1.1 Query Results JSON Format: Specifikuje formát JSON pro serializaci výsledků SPARQL dotazů.
- SPARQL 1.1 Query Results CSV and TSV Formats: Definuje jednoduché formáty CSV a TSV pro serializaci výsledků SPARQL dotazů.
- SPARQL Query Results XML Format (Second Edition): Specifikuje formát XML pro serializaci výsledků SPARQL dotazů.
- SPARQL 1.1 Entailment Regimes: Popisuje pravidla pro rozšířené odvozování nad RDF daty při použití SPARQL.
- SPARQL 1.1 Protocol: Specifikuje protokol pro komunikaci mezi klientem a SPARQL endpointem.
- SPARQL 1.1 Graph Store HTTP Protocol: Definuje, jak manipulovat s grafy RDF pomocí HTTP operací.

Q: Proč potřebujeme standardizaci v RDF?
-> tj. názvu nechceme říkat Label,  Title, Name.
A: Abychom docílili interoperabilitu.

Q: K čemu je Dublin Core?
A: Původně k popisu knihy, základní atributy jako creator, date, publisher, rights, language, ...

Q: Z DC vzniklo něco jiného?
A: DC Terms, purl.org/dc/terms.

Q: Co je SKOS?
A: RDF slovník k výčtům - číselníkům
- například výčet možných známek v SISu, atd.

Q: Co je skos:Concept?
A: Core třída skosu => pro myšlenky, jednotky

Q: Jak říct, že skos:Concept je součástí nějaké taxonomie - nějakého číselníku?
A: => skos:conceptScheme = nějaký číselník
- musíme do něj přiřadit jednotlivé položky.

Q: K čemu je skos: Lexical Label?
A: String v nějakém přirozeném jazyce.
prefLabel => preferovaný název, dává smysl jeden pro každý jazyk
altLabel => jiný název než ten preferovaný
hiddenLabel => např. u názvů kde jso učasto překlepy, je to nějaký častý název kde se dělají chyby => dáme ho do hiddenLabel => uživatel takto najde.

K čemu je skos:notation?

Příklad SKOS Concept Scheme

Q: K čemu jsou skos:semanticRelation
A: k tvorbě hierarchických struktur => k jejímu vyjádření.
- skos:related = číká, že  jeden koncept je v nějkém vztahu k jinému konceptu.
- skos:broaderTransitive - skos:broader - např. z D do B
- skos:narrower - to by bylo např. z A do C
- Transitive verze pro odvozené vztahy z dat.

Q: K čemu jsou skos: Collections
A: - obyčejná kolekce skos:Collection = bez pořadí, přidání členu pomocí skos:member
- skos:OrderedCollection = má pořadí, přidání členu pomocí skos:memberList (implementace skrze spojové seznamy)

Q: Jak namapovat na sebe dvě schémata = spojit dvě schémata/koncepty (z různých ConceptSchemes)?
A: - skos:relatedMatch = je tam vztah ale není jasné jaký, ale obě z jiných ConceptShcemes
- skos:broadMatch = jeden je širší pojem než druhý, ale obě z jiných ConceptShcemes
- skos:exactMatch = dva koncepty reprezentují to samé, je tranzitivní
- skos:closeMatch = ne tranzitivní verze exactMatch, říkáme, že to je skoro to samé

Q: K čemu skos teda?
A: hierarchie, číselníky, taxonomie

Q: K řemu GoodRelations?
A: e-commerce
zkratka gr

Q: Popište GR Agent-Promise-Object princip.
A: - agent - gr:BussinessEntity = nějaká byznys entita
- Object/service - gr:ProductOrService= nějaká služba, stříh u holiče
- Promise - gr:offering = příslib toho, že nějakou službu nakoupím/poskytnu, ...
- Location - gr:Location= nějaká fyzická lokace

Jak vypadá gr:BussinessEntity?

Jak vypadá gr:Location?

Q: Co dělá gr:OpeningHoursSpecification?
A: Jedna entita gr:OpeningHoursSpecificationurčuje časový interval a odkazuje na dny.

Jak použít gr:Offering a gr:PriceSpecification?

Jak popsat produkt = Product nebo službu = Service v gr?

Jak vypadá gr:SomeItems?

Jak propojovat data v gr?

Q: Co jsou kvalitativní hodnoty v gr?
A: Nemají číselnou část.
pomocí gr:QualitativeValue

Q: Jak funguje schema.org?
A: Vezme existující slovníky a integruje/improtuje je do sebe. Prostě vezme něco a řekne, že to je schema.org.
Pak už ale nefungujou s těma původníma.
Slouží hlavně k anotaci dat na webových stránkách.

Typová inkonzistence v schema.org:

Q: K čemu jsou wikidata?
A: = rdf slovník, jako wikipedie, akorát ne pro dokumenty ale jako fakta => strukturovaná databáze => každy může přijít a oeditovat

Popište prvky wikidat.

Q: Co je ve WD alias?
A: Vícejazyčný popis.

Q: Jsou ve wikidatech IRI predikátorů?
A: Máme zde P čísla.

Q: Mají ve WD třídy IRI?
A: Mají Q čísla.

Jak vypadá query na WD?

Jak vypadá rdf model ve wiki datech?

K čemu je wikibase:around?

Q: Co je graf?
A: Diskrétní entity a jejich vztahy různých typů.

Q: Kde se graf hodí?
A: - pokud jsou spojení entit stejně důležité jak entity anebo spojení jsou důležitější než entity.
- procházení do hloubky
- nejkratší cesta, ...

Q: Co je LPG labaled property graph?
A: je to grafový datový model

Q: Rodzíl mezi RDF a LPG?
A: vrcholy a hrany nesjou v lpg identifikované pomocí iri.
- hrany mají název (=typ) a můžou mít svoje vlastní seznamy hodnot
- vrcholy mají svůj vlastní seznam hodnot => vrcholy můžou mít jiný seznam hodnot, uzly mohou mít labely (libovolně mnoho)

Q: V čem spočívá LPG (4 body)?
A: 1. Orientovaný multigraf
2. Uzly mají sady labelů
3. Hrany mají labely
4. Uzly a hrany mají sady vlastností (seznamy hodnot) klíč–hodnota

Q: Co je Cypher?
A: Dotazovací jazyk nad daty v LPG.

Jednoduchá query:

Who uses a camera owned by a followed person?

Q: Je cypher otevřený?
A: Ano, je už jako openCypher. Ale dříve nebyl.

Popište základní syntax v Cypheru.
- labely reprezetnující typ
- properties uzlů
- vztahy
- směr
- properties vztahů

Ukázka Cypheru.

Ukázka Cypheru

Q: K čemu je SET?
A: Můžu měnit výsledky pomocí klauzule SET => to se odrazí ve výsledku
- pomocí klauzule set můžu přidat i něco, co v původních datech nebylo.

Q: Jak zajistit unikátnost?
A: Pomocí CONTRAINT ON.
=> REQUIRE zajistí, že nepůjde přidávat neunikátní prvky

Q: K čemu je příkaz MERGE?
A: Nevytvoří ty samé prvky znovu => najde a pokud neexistuje tak vytvoří.

Q: K čemu je ON CREATE SET?
A: - pokud dojde k vytvoření, tak se mu nastaví vlastnost v ON CREATE SET.

Jak vracet cesty v Cypheru?

Q: Jak ignorovat směr v Cypheru?
A: - nenapíšeme šipku nikde
- ve výsledku ale směr mít bude, takový který má v databázi

Q: Jak v cypheru vypadá query pro nejkratší cestu?
- šlo by to ve sparql?
A: - nešlo

Q: Jaké reprezentace lze dostat v cypheru?
A: tabulka nebo graf

Q: Popište style guide cypheru.
A: - Syntakticky nedůležité.

Q: Jak fungují agragace?
A: Pokud použijeme agragační funkci tak implicitně se provede group by podle ostatních prvnů v return, tj. těch, co nejsou v agregační funkci.

Q: Jak filtrovat výsledky?
A: Pomocí WHERE, tak jako v SQL

Q: Je v Cypheru null?
A: Není, spíš něco jako ve sparql = not bound = chybějící hodnota => jsou jen ve výsledcích doatzů.

Q: Jak na regulární výrazy v cypheru?
A: Pomocí ~-

Q: K čemu je klauzule WITH v cypheru?
A: nějak upraví výsledek než se předá dalšímu příkazu

Jak do cypher loadnout CSV?

Další ukázka importu csv.

Q: V čem exceluje cypher?
A: grafové algoritmy, podpora pro strojové učení, podobnost uzlů

Q: Co je GQL?
A: - Graph Query Language
- Je to standard, grafová ekvivalence k SQL.
- Hotový - duben 2024
- postavený na openCypheru

Q: Srovnání RDF a LPG.
A: - RDF zaměřené pro data na webu - globální identifikace
- v RDF jsou slovníky => v různých datových zdrojích = interoperabilita
- zaměřené na propojování dat od různých publishers
- LPG => jedna centralizovaná databáze, ne ke sdílení na webu
- chci řešit grafové algortimy, všechno je místní, nemáme IRI (ale jde to)
- je to uzavřený svět

Q: Vzniká v LPG problém s reifikací?
A: Ne, nevzniká.

Q: Mám v LPG problém z RDF, kdy jsme nebyli schopni něco říct o predikátu?
Tj. třeba číct, kdy něco bylo vytvořeno, jaký měla zdroj, atd..
A: Takový problém v LPG nevzniká => máme seznamy vlastností u hran (vztahů), kde si to můžeme vést.
V RDF jsme to museli řešit reifikací.

Q: Co je RDF*?
A: Rozšíření RDF pro řešení problému metadat trojic - jako subject můžu použít celou trojici
- speciální trojice quoted triple
- do << >> dáme celou trojici
- za << >> dáme nějaké info o trojici (predikát a subjekt)

Ukázka RDF*.

Q: Co je SPARLQL*
A: Rozšíření SPARQL aby podporoval RDF*

Q: Jak vypadá validní xml dokument?
A: dokumentově centrické (orientovné) xml = validní xml

Q: Jaký je XML datový model?
A: Hierarchický => musí mít kořen = někde musí začínat
- všechny vazby jsou orientované = podle toho jak se vnořují
- často nelze jen uml diagram pokrýt jedinou xml strukturou

Q: Ukázka data-centric XML.
A: - je pravidelnější
- když se zbavím veškerého xml tak zde již nezískam lidsky čitelný text
- lépe se s tím pracuje

Q: Která verze XML se používá?
A: Verze XML 1.0, 1.1 se nepoužívá, ale máme nějaké novější edice 1.0, které se přibližují verzi 1.1

Q: Jak vypadá halvička XML?
A: - je zde verze a encoding, dohromady se to nazývá PROLOG

Q: 1. Co je element?
2. Kolik je kořenových elementů?
3. Co v sobě mohou mít elementy?
A: 1. To co začíná start tagem a končí end tagem.
2. Můžeme mít pouze jeden.
3. Atributy, ty můžeme také nahradit elementem s jednoduchým obsahem. => V elementech mohou být další elementy.
- Na pořadí podelementů záleží, na pořadí atributů ne.
- komentáře pomocí <!-- komentar -->

Q: Co v sobě může mít element?
A: podelementy, textový obsah, smíšený obsah

Q: Co je smíšený obsah (mixed content) ?
A: Obsahuje jak kusy textu, tak podelementy.

Q: jsou elementy case sensitive?
A: Ano, musí sedět v start tagu i end tagu.

Q: Je potřeba dbát na správné uzávorkvání elementů?
A: Ano, je.

Q: Co znamená, že xml document je well-formed?
A: XML dokument je well-formed, pokud splňuje syntaktická pravidla XML.

Q: Co jsou xml namespaces?
A: Nehceme, aby dva stejné elementy se stejným významem měli jiný název.

Q: Čím je identifikovaný XML namespace?
A: Svým URI.

Q: Jak se říká jménu elementu/atributu, které se skládá z dvou částí - uri namespace a lokální jméno.
A: = Qualified name (QName)

Q: Co lze říct o QName?
A: Všechny elementy jsou identifikované svými QName.

Q: Jak zadefinovat namespace?
A: V praxi na kořeni, aby platily pro celý dokument.

Q: Co je výchozí (default) namespace?
A: xmlns je default namespace => používaji pak všechny elementy/atributy, pokud ho nemají daný.

Q: K čemu jsou CDATA?
A: Je to nějaká sekce, kde dáme text, který bychom museli složitě escapovat.

Q: Jak se definuje jazyk v xml?
A: Pomocí namespacu xml:lang=".."

Q: Co je xml-stylesheet?
A: Je to instrukce pro zpracování => návěští pro program, který xml zpracovává => říká, že existuje nějaká transformace a kde je.
- není součástí prologu

Q: Ukázka xml stylesheet?
A: - ukázka transforamce xml na html => dříve se tak vytvářely stránky

Q: Co jsou xml entity?
A: Předdefinované xml entity:

Q: Je vhodné dávat tabulky v csv do xml?
A: Není to vhodné, nevyužívá se nijak hierarchie => jen technický přepis, není to správná volba.

Q: Jak zpracovat XML dokument?
A: 1. Document Object Model = celý xml dokument se nahraje do pamět
- nefunguje pro streamy
- nefunguje pro velké soubory
2. Simple API for XML (SAX parser) = zpracovává xml soubor jako stream eventů = parsuje element po elementu, atribut po atributu,...
+ funguje pros streamy
+ funguje pro velké soubory
- nedá se dotazovat nad vším = lze se dotázat jen nad tím co SAX našel.
Sax parser pushuje eventy do našeho kódu

Průběh SAXu:

Q: Jaké je další zpracování XML dokumentu?
A: 3. Streaming API for XML (StAX) = zpracovává XML jako stream eventů
- funguje jako SAX, ale mymu říkáme jak má zpracovávat

Q: Co je XML Schema?
A: Nejpoužívanější jazyk pro psaní - validaci XML dokumentu.

Q: Známé jazyky na dotazování:
A: XPath a XQuery

Q: Pomocí čeho transformace?
A: XSLT

Q: Jak serializovat RDF do XML?
A: Pomocí RDF XML = rdf into xml serializace
- moc se nepoužívá

Q: Co je SVG?
A: = formát pro vektorovou grafiku pod XML

Q: Co je OOXML?
A: Office Open XML = .docx, .xslx, ...
- je založený na xml

Q: Co je Atom, RSS?
A: Další XM specifické formáty pro web feeds.

Q: Co je XML Schema
A: = jazyk pro popsání daného xml formátu - jaké elementy jaké datové typy, jaké atributy...

Q: Používá XML Schema XMl jako hostitelský formát?
A: Ano, popužívá.

Jak linkovat schémata s instancema?

Q: Co znamená, že XML dokument je validní?
A: XML dokument je validní, pokud má nějaké schéma a je vůči němu validní.

Q: Co jsou simple types?
A: - používají se všude:v xml, cvs, rdf, ...

Q: Co je Base64 encoding?
A: - běžné v eGovernment
- druh zakódování

Q: Druhy datových typů v xml:
A: Simple a Complex

Základní principy XMLSchema ?

XSD Ukázka:

Další ukážka

Q: Co je simpleType?
A: Nemá podelementy ani atributy.

Ukázka:

Ukázka 2:

Ukázka 3:

Jak na List?

Jak na sjednocení jednoduchých typů?

Jak na výčet - enumaration?

Q: K čemu je complexType?
A: Může mít pod elementy a atributy.

Popište strukturu XML Schema.

Q: K čemu slouží atribut maxOccurs?
A: Určuje maximální počet.
- využití pro multiplicity

Q: Jak omezovat simpleType?
A: - xs:restriction baseé"xs:Integer" mi zaručí, že budu mít jenom integery
- říct aby číslo bylo aspoň něco pomocí xs:minInclusive

Jak získat jenom listy celých čísel?

Q: Jak říct, aby simpleType nabýval jenom konkrétních hodnot?
A: Pomocí xs:enumaration.

Q: Co dělá complexType?
A: Umí podelementy i atributy.
- může v sobě mít i simpleContent

Q: K čemu je xs:sequence?
A: Nějaká sekvence elementů,
- lze určit. min. počet elementů pomocí minOccurs="int.." a maximální počet maxOccurs="int..", lze i dosadit unbounded = neomezeno
- záleží na pořadí
- lze i říct že můžu mít více sekvencí:

Q: K čemu je xs:choice?
A: Může se vyskytnout ale nemusí.

Q: K čemu je xs:all?
A: Stejné jako sekvence,ale nezáleží na pořadí.

Q: Jak se říká schématu bez namespaců?
A: No namespace schema.

Q: K čemu ale typicky je namespace v xml?
A: Definuje type atributů, apod.

Ukázka namespaců:

Q: K čemu je XPATH?
A: Dotazovací jazyk nad dokumenty v XML.

Q: Jak se dotázat na kořen XML dokumentu?
A: /

Q: Jak sedotázat na první element?
A: /název_elementu
=> výsledkem xpath dotazu je množina

Q: Jak se zanořovat?
A: Prostě jak normální file cesta:

Q: Co je výsledkem?
A: - výsledkem je množina dvou title elementů (ne nejich text. obsahu)
- kdybych chtěli jejich obsah tak

Q: Může se použít relativní cesta?
A: Ano, nemusí začínat lomítkem / => potom je realtivní

Q: Jak probíhá ve skutečnosti query?
A: Ve skutečnosti jsme brali děti

Jak jít do všech dětí?

Jak získat potomky, které se nějak jmenují?

Jak získat všechny nějaké potomky něčeho?

Jak získat všechny atributy?

Q: Jak vzít předchozího sourozence?
A: pomocí /preceding-sibling::název_elementu/
se jde do "My catalog" a do jeho před. sourozence => nemá žádného => jde se do "Muj katalog" => ten má pred. sourozence = "My Catalog => /text() => získáme "My Catalog"

Q: Co dělá descendant-or-self?
A: or self = jestli aktuální uzel je součástí výsledku
-> jsme v catalog a hledáme všechny potomky title nebo catalog samotný
- například lze tak získat všechny titly

Q: Jak získat rodiče / sebe?
A: rodič = ..
self = .

Q: Jak se počítá document order?
A: Číslují se obyčejně postupně starting tagy elementů.

Ukázka všech os:

Q: K čemu je name() ?
A: Pro získání názvu elementu.

Q: K čemu je position() ?
A: vrátí pozici elementu v daném elementu odkud voláme

Q: Co dělá funkce last() ?
A: Vrací počet elementů ve svém předkovi.

Cheatsheet XPATH

Ukázka XPATH 1.

Ukázka XPATH 2

Co umí XPATH 2.0?

Co umí XPATH 3.0?

Q: K čemu je jazyk XSLT?
A: XSLT = transformace xml do jiných formátů / dokumentů

Ukázka XSLT transformace.

Q: Jak může vypadat xslt transformace?
A: Je to zase xml dokument => říká se mu stylesheet.
- jeho součástí je XPATH => vybírání částí k transformaci

Q: Co je vstupem XSLT?
A: nějaký xml dokument nebo i více

Q: Co je výstupem xslt?
A: Může to být xml, html. rdf turtle, txt, ...
=> jakýkoliv textový soubor

Q: Co je xslt stylesheet?
A: = dokument specifikující transformaci
- xml dokument
- je to sada šablon = jednotlivé sekce => vyberou kousek xml dokumentu a nějak ho ztransformují

Q: Co je xslt template?
A: = namatchuje část xml dokumemtu pomocí XPATH query a vyprodukuje podle styleshetu výstup

Q: Co je xslt procesor?
A: Program který vezme xml dokument a stylesheet a vyprodukuje výstup.

Q: Jak vypadá prázdná šablona?
A: method => říká co bude výstupem
indent="yes" => zformátuje třeba html nebo xml výstupy

Q: Co dělé indent="no"
A: Prostě jen vygeneruje vstup s whitespacama.

Q: K čemu je v xslt match?
A: Obsahuje xpath výraz s tím co chceme namatchovat

Q: Jak se dotázat na data - výsledek xpath výrazu
A: pomocí value-of

Q: Pokud chceme mít více template za sebou tak jak?
A: Je potřeba použít xsl:apply-templates => aplikují se šablony na potomky

Q: Co jsou implicitní šablony?
A: Aplikují se, pokud neřekneme jinak.

Jak zrušit implicitní templaty?

Jak aplikovat šablony jen na určité elementy?

Q: Lze šablonám dávat jména?
A: Ano jde to,
- pak ale musíme volat pomocí xsl:call-template

Jak na globální proměnné?

Jak na for loopy v xslt?

Q: K čemu je xsl:include?
A: Vezme xslt dokument a tak jak je tak ho strčí na pozici includu

Q: Jak funguje xsl:import?
A: Importuje šablony
- šablony při importu šablony stylů přednost před importovanými šablonami

Q: Co je geomatika?
A: Disciplína zabývající se sběrem, distribucí, skladováním, analýzou,
zpracování,prezentace geografických dat nebo geografických informací.

Q: Co jsou Geographic data (Geodata)?
A: Data a informace, které mají implicitní nebo explicitní spojení s
umístění, vzhledem k Zemi.

Q: Co je koordinační referenční systém ?
A: = framework používaný k přesnému měření míst na povrchu Země jako souřadnice.
Používá proto reference ellipsoid + Datum, také používá map projections

Q: Geodata můžou být dvojího druhu.
A: Implicitní – souřadnice, směr a vzdálenost,
explicitní – zeměpisný název, adresa.

Q: Co je koordinační referenční systém?
A: = Systém, který umožňuje každé místo na Zemi pomocí sady čísel, písmen a symbolů.
Využívá k tomu:
- referenční elipsoid – aproximace geoidu
- geodetické datum – mapování sférických souřadnic na elipsoid,
- mapová projekce – převod geodetických souřadnic na rovinnou mapu.

Jaké máme spatial objekty?

Q: Co je well known text?
A: = (WKT) je text markup language pro reprezentaci objektů vektorové geometrie, tj. pro reprezenatci 2D objektů.
- mohout to být 2D, 3D, 4D vektory.

Q: Co je standard pro geometrickou reprezentaci?
A: Geography Markup Language GML
- velmi robustní
- psaní je ale komplikované

Tabulka reprezentací a geoformátů.

Q: Na čem je založená Geography Markup Language (GML)?
A: Formát založený na XML, popsaný více XSD soubory.
GML se používá v infrastruktuře pro Prostorové informace v Evropě (INSPIRE) jako hlavní formát pro data. Nařízení
se zaměřuje na sdílení (prostorových) dat o prostředí po celé Evropě v a standardizovaným způsobem.

Q: Co je GeoJSON?
A: Je to JSON based formát pro geodata.
- má vlastní geometrickou reprezentaci

Q: Co je Shapefile
A: = otevřený formát pro geodata
- použávaný gis v česku
- skládá se z více souborů

Q: Co je OGC GeoPackage?
A: = SQLite database soubor
- podporuje jednoduché i složité geometrické struktury
- podporuje vektorová i rastrová data
- velmi rychlý a velmi komplexní
- největší využití

Q: Jde reprezentovat geodata v CSV?
A: Ano, jde to.

Q: Co je Geo WGS-84?
A: = spatial linked data formát

Q: Co je geosparql?
A: Ontologie a dotazovací jazyk podporující spatial operace
Geometrie reprezentována v GML i WKT
Podporuje mnoho CRS

Q: Co je GeoJSON-LD
A: = geojson linked datový formát

Q: Co chceme konfigurovat?
A: nějaké environment proměnné, cmd příkazy, konfigurační soubory

Q: Co jsou .properties file?
A: = používají se pro holding konfigurací
- pro javu
- je to hash table
- má xml rozšíření
- používá se pro lokalizaci/překlady

Ukázka .properties files?

Q: Co je INI file?
A: - používá se pro držení konfigurace
- původně z msdos
- nemá specifikaci
- je to 2-úrovňová hash table
- iso 8859-1

Ukázka INI

Q: Co je TOML?
A: = je to config soubor formát "pro lidi"
- lidsky čitelný, psatelný
- jednoduše parsovatelný
- používá unicode
- mapuje se na hash table
- native datové typy (parsuje se na datové typy prog. jazyku)

Ukázka TOML 1:

Ukázka TOML 2:

Ukázka TOML 3:

Q: Co je YAML?
A: YAML je human friendly standard pro serializaci dat pro všechny prog. jazyky
● Unicode
● Lidsky čitelné
● Strojově parsovatelné
- nemá Media type

Q: Je indentace povinná v yamlu?
A: Ano je, je to zásadní pro yaml.
Odsazování je povinné.

Co jsou yaml schémata a tagy?

Q: vektorová grafika
A: body, křivky, text
- např. svg (založený na xml)

Q: Co je SVG?
A: - xml based formát => dá se embedovat do html
- formát vektorové grafiky

Q: Co je Universal 3D?
A: datový formát pro 3D vektorovou grafiku
dá se embedovat do PDF

Q: Co je principem rastrové grafiky?
A: Založena na pixelech
- Rozlišení = počet řádků a počet sloupců / celkový počet pixelů
- jemonst = pixely na palec PPI, tiskárny dots na palec DPI

Q: Co je pixel?
A: = bod/tečka nějaké barvy
- barva monochrome (č/b), grayscale, palletized, fullcolor

Q: Co je barevný model?
A: = barevná reprezentace barvy, je to nějaký matematický model (trojice/čtveřice čísel) - moc nesouvisí s realným světem.
- RGB model - aditivní model, barvy červená, modrá, zelená
- míchámé intenzity těchto 3 barev (255,255,255 = bílá, 0,0,0 = černá)
- CMYK = subtraktivní, cyan, magenta, yellow, black

Q: Co je barevný prostor (color space)?
A: Barvy reprezentovány vlnovou délkou.

Q: Co je gamut?
A: = všechny barvy dosažitelné zobrazovačem,většinou v % nějakého barevného prostoru

Q: Co je bitová hloubka?
A: = počet bitů použitých k reprezentaci barvy pixelu

Q: Co je průhlednost pixelu?
A: Pomocí RGBA - jak je průhledný = transparentní.

Q: Co je dithering?
A: = technika dosáhnutí více barevných kombinací než zobrazovač umí (z primárních barev)
- technika získávání barevných kombinací z dostupných primárních barev

Q: Co je BMP?
A: = formát rastrové grafiky
- bere formát DIB a přidává k němu hlavičky
- zabírá hodně místa - 12 MP obrázek => 36MB

Q: Jak funguje bezztrátová komprese?
A: Snížení velikosti bitové reprezentace, tak abychom jí zachovali.
- např run length coding => řekneme, že 4x je barva A, 2x barva B atd, nebo kde začínají/končí jednotlivé barvy
=> Za předpokladu že znám délku řádku tak můžu zjednodušit.
- nevyužívá se nějaká znalost sloupců

Q: Co je blockwise coding?
A: = je to extenze run length coding do 2D.

Q: Co je quadtree coding?
A: = opět bezztrátová komprese, rozdělujeme do kvadrantů, dokud bloky nemají stejné barvy.

Q: Co je Huffmanovo kodování a LZ77 comprese?
A: oboje bezztrátová komprese

Q: Co je GIF?
A: = formát bezztrátové komprese, 8 bitů na pixel, paleta 256 barev vybraných pro  konrkétní obrázek vybraných z 24bit RGB modelu
- bezztrátová LZV komprese
- .gif
- mediatype image/gif
- animace

Q: Co je PNG?
A: = formát bezztrátové (DEFLATE) komprese
- náhrada gifu
- 8 bpc, full color RGB
- nepodporuje animace
- podporuje průhlednost
- image/png
- .png

Q: Co je diskrétní kosínova transformace?
A: DCT = transformace obrázku z rastrové reprezentace do frekvenční reprezentace
- obrázek je prezentovaný jako součet kosinových funkcí

Q: V čem spočívá ztrátová komprese?
A: Zahodíme vyšší frekvence v obrázku (tj. některé kosínovy funkce) = quantizace

Q: Co je chroma subsampling?
A: chroma subsampling = redukce rozlišení chroma (jas) komponent

Q: Co je JPEG?
A: = rastrový formát se strátovou kompresí
- na vstupu bitmapa
1. převedení z RBG do yCbCr
2. provede se 4.2.0 chroma subsampling
3. rozdělení do bloků 8x8 pro každé X, Cb Cr
4. DCT bloků
5. Quantizace - úroveň komprese 0 až 100 => tolik se zahodí funkcí
6. bezztrátová komprese
=> získáme desetinovou velikost originálu
- umí se načítat po úrovních detailů = progresivní komprese
- .jpeg
- image/jpeg

Q: Ztrátová vs beztrátová komprese.
A: Ztrátová => fotografie (JPEG, WebP, AVIF)
Bezztrátová => velké plochy stejné barvy = malůvky, screenshoty (PNG, WebP, AVIF)

Q: Co je formát RAW?
A: = nezpracovaný obrázek přímo ze senzorů

Q: Co je formát R210?
A: = video formát = série bitmap (10bpc RGB) - datově náročná reprezentace videa

Q: Co je MJPEG?
A: = video formát, série jpegů za sebou

Q: Jak funguje technika komprese videa inter picture prediction?
A: 1. rozdělení na makro bloky => komprese (jako v JPEGu) => pro každý makroblok se přidá informace jakým směrem se posune v dalším snímku  = inter-picture-prediction
- jsou na ni založeny ostatní metody komprese videa

Q: Co je H.261?
A: = formát videa

MPEG-1

Q: Co je predicted fram P-frame?
A: reprezentuje rozdíl od minulého snímku

Q: Co je Interlaced video support?
A: Interlaced video = v jednom snímku máme sudé řádky, v dalším snímku liché řádky

MPEG2

MPEG4

Q: Co je Global motion compensation?
A: technika, která posunuje celý snímek a ne jenom makrobloky.

Q: Co je Qpel?
A: Quarter-pixel motion compensation - more precise motion vectors

HEVC

Q: Jsou H. formáty patentované?
A: Ano jsou, musíme získat licensi => drahé => vznikl otevřený formát V8 => V9 (Google)

H.266

Q: Co je formát WebP?
A: = nástupce GIF, PNG a JPEGu
- otevřený formát
- na základě VP8 I-frame kodování => tj. založený na video formátu
- .webp

Q: Audio formáty - jak převést analogovou vlnu do digitálního světa?
A: - pomocí PCM  = pulce code modulation
1. Amplituda analogového signálu je vzorkována při pravidelných intervalech
2. quantizováno na nejbližší hodnotu v rámci rozsahu digitálních kroků

Q: Co je WAV?
A: = audio formát nekomprimovaného audia

Q: Co je FLAC?
A: = audio formát s bezztrátovou kompresí => aproximuje zvukovou funkci
- .flac

Q: Co je MP3?
A: = audio formát se ztrátovou kompresí = DCT => zahazují se frekvence, které člověk nedokáže slyšet
- modernější formát AAC = nástupce MP3

Q: Co je OPUS?
A: = otevřený audio formát se ztrátovou kompresí

Q: Co jsou multimediaální kontejnerové formáty?
A: = spojení audio, video a textových formátů (titulků) => jak je prokládat => jak se pohybovat abych měl vše synchronizované, kapitoly
- AVI, MP4, MKV, OGG

Q: Co je plain text / text file?
A: textový soubor obsahuje plain text
- sekvence řádek textu, žádné formátování
- má kódování (většinou UTF8)
- má konce řádek (podle OS)
- text/plain
- .txt

Q: Co je richtext?
A: - kompatibilní s SGML - předchůdce xml
- formátovací příkazy mezi < a >

Q: Co je enriched text?
A: = evoluce richtextu

Q: Co je Rich Text Format?
A: = microsftí textový formát
- inspirován TeXem
- bez specifikace

Q: Co je 602?
A: Český textový formát.

Q: Co je HTML?
A: = textový formát pro web
- spousta verzí
- už nespravuje W3C => WHATWG

Q: Co je markup?
A: = text, který v sobe obsahuje nějaké odlišitelné řetězce - značky.

Q: Co je Markdown?
A: - markup language
- lidsky čitelný i psatelný
- cílem lehká převoditelnost na html
- text/markdown, .md

Q: Jak psát nadpisy v Markdownu?
A: === a --- => dvouúrovňové = setext-style
- atx-style = pomocí # => více úrovňové => kolik # takový <hx/>

Q: Jak v md zvýrazňovat?
A: Pomocí *text* nebo _text_
Dvojité je strong emphasis
1. text dát do **text**
2. text dát do __ text __

Q: Jak dělat seznamy v md?
A: nečíslované = pomocí + / - / *
číslované = pomocí čísla a tečky

Q: Jak na linky v md?
A: 1.inline:
= do hranatých závorek název linku, který se zobrazí, a do kulatých za něj odkaz
2. pomocí referencí

Q: Jak na obrázky?
A: = stejně jako linky, akorát před [] je vykřičník ! a za linkem je název obrázku.

Q: Jak vepsat kód do md?
A: 1. Inline kód ve zpětných apostrofech
2.blok kódu = pomocí 4 mezer / tabulátoru => renderuje se potom bez mezer

Q: Jak na horizontal rule md?
A: - - - / * * * / *** / ***** / ----------------------------------

Dialekty markdownu:

Q: Co je CommonMark?
A: = společná nadmnožina markdownu, která obsahuje všechno co by komunita chtěla
- cíl standardizovat množinu formátovacích funkcí
- sada testů pro testování správnosti
- na githubu, gitlabu, atd.

Q: Co je fenced code block?
A: = začíná a končí 3 zpětnýma apostrofama (lze použít i tilde)
- lze vepsat info stringy = např. prog. jazyk

Q: Jak na vynucené konce řádek v CommonMarku?
A: pomocí .. nebo \

Q: K čemu jsou HTML bloky v CommonMarku?
A: Pokud se najdou html bloky v markdownu, tak se zpracuje jako html (vyrenderuje)

Tabulky  v Kramdownu?

Q: Kde se používá Markdown?
A: - gitlab/github => readme soubory
- Jekyll => staticky generované stránky = stránky v Markdownu, ale publikované v HTML (např. GitHub Pages) => generuje se při změně, ne při každém požadavku

Q: Co je Wikitext?
A: = koknkurence markdownu
- nemá formálni specifikaci, pouze implementace
- používá se pro text na wikipediiích

Jak formátovat ve Wikitextu?

Q: Co je TeX?
A: = systém pro sazbu knižních textů
- 1978
- umožnit komukoliv vyrábět hezky vypadající texty, které vypadají všude stejně
- otevřený

Ukázka TeXu

Q: Co je LaTex
A: = sada maker napsaných v TeXu
- my používáme tato makra a ne low level TeX => nemusíme přemýšlet o formátování v TeXu
=> autoři se můžou soustředit na psaní, ne na TeX
- vypadá všude stejně
- výsledkem (renderovaným) je PDF

Q: Jak na příkazy v LaTeX?
A: - příkazy začínaji zpětným lomítkem \
- parametry v [ ] a v { }
- třída - class udává nějaké základní vlastnosti - třeba article má svoje vlastnosti, report zase svoje, atd.
- prostředí - environment = říká kde začíná a končí nějaká část prostředí

Q: Co je CTAN?
A: = knihavna 6500+ LaTeX balíčků = ty  obsahují funkcionality
- pomocí \usepackage[options]{package}

Q: Jaké jsou v LaTexu režimy?
A: 1. textový
2. matematický
=> přepíná se mezi nimi podle toho co se píše

Jak na basics - metada?
- autor, datum, title

Jak strukturovat text do sekcí?

Q: Jak začínají nové odstavce?
A: - paragrafy začínají prázdnou řádkou
- good practice = dát jednu větu na jeden řádek => pak se dobře ukazují změny

Q: Jak na listy v latexu?
A: 1. číslované pomocí \begin{enumerate} \end{enumerate}
2. nečíslované pomocí \begin{itemize} \end{itemize}
- itemy pomocí \item

Q: Jak na labely v latexu?
A: - pomocí \label{name} => pak se můžeme odkazovat na labely pomocí \autoref{name}

Q: Jak na obrázky v latexu?
A: Pomocí {figure}
- \includegraphics => obsahuje odkaz na obrázek
- V textu musí na obrázek existovat odkaz u bakalářek => oponent se na to často dívá

Jak na tabulky v latexu?

Q: Jak na reference a citace v latexu?
A: = odkazy na exist. literaturu => používá se na to BibTeX => nějaký .bib soubor
- v latexu potom jen \bibliography{.bip soubor}

Q: Jak na matematiku v latexu?
A: 1. inline pomocí $
2. nějaká delší formule => math environment => pomocí \[ formule \]

Q: Co je docie.li?
A: = client-side editor pro decentralizované publikování
- pracuje se Solid Pody = web. uložiště, kde se ukládají data ve formátu RDF => html + RDFa se ukládá

Q: Jaké máme textt search způsoby?
A: 1. přesná shoda
2. wildcards
3. regex

Q: Jaké jsou techniky na text search v databázich dokumentů?
A: - inverted index = hromada dokumentů rozpadlých na jednotlivá slova => u nich máme odkazy na dokumenty kde se vyskytují
=> využití pro proximity search

Q: Co je PostScript?
A: = prog. jazyk pro tiskárny
- používá reverzní polskou notaci

Q: Co je EPS - Encapsulated PostScript?
A: = postscirpt, kde byl přidán bitmapový náhled souboru

Q: Co je PDF?
A: = Portable Document Format = nejrozšířenější formát pro tisk
- bude vypadat po tisku vždycky stejně, založen na PostScriptu, ale není globální stav => stránky nezávislé
- podporuje spoustu věcí: videa, 3D, ECMAScript

Q: Co je PDF/A?
A: = podvarianta PDF určená pro archivování => používání jen toho co nezávisí na něčem jiním
=> font musí třeba být vložení přímo v pdf souboru, nemůže se šifrovat, žádný JS

Je spousta podvarian PDF:

Q: Jak editovat PDF?
A: např. Adobe Illustrator ArtWork

Q: Co je JSON?
A: = hierarchický datový formát
- jednodušše čitelný a psatelý lidmi
- JavaScript Object Notation
 media type: application/json | .json

Q: Jaké vypadá JSON String?
A: - UTF-8
- \ escapes
- speciální znaky jsou v json stringu jako \uXXXX => stačí prohran nějakou knihovnou
- uvozovky nejdou jen tak => \"

Q: Jak vypadají čísla v jsonu?
A: - pouze desiítková, hex ani bin nejsou
- nejsou v uvozovkách

Co whitespacy v jsonu?

Q: Co je Json Value?
A: může to být string, decimal číslo, true, false nebo null, nic jiného

Q: Co je json array?
A: = pole v jsonu, ordered collection
- pomocí [ , , , , ,  ]
- klidně různé typy v jednom poli

Q: Co je json object?
A: = unordered množina name/value párů
- pomocí {name : value , name : value, ... }

Ukázka jsonu

Q: Musí mít json kořen - root?
A: Ano, buď object, anebo pole - podle toho jestli záleží na pořadí.

Q: Jak ověřit správnost json souboru? (syntax)
A: jsonlint

Q: Kde se používá JSON?
A: - např. komunikace přes api
- datové standardy
- dokumentová databáze CouchDB
- index search

Q: Co je JSON Lines?
A: = úprava json formátu, něco mezi jsonem a csv
- každá řádka je samostatná validní json value
- .jsonl

Q: Jak lze transformovat json no xml?
A: - pomocí XSLT json-to-xml(), je to jedna ku jedné převod

Q: Co je json pointer?
A: = nějaká cesta ukazující do json souboru, standardizováno
- tj. do url dáme url jsonu a za něj dáme url json pointeru a získáme konkrétní data
- / znamená tilda1
- tilda znamená tilda0

Q: Proč JSON Schema?
A: když máme jen json soubor, tak nevíme co jsou jednotlivé name/value. nevíme co znamenají, chceme něco co to vysvětlí.

Q: K čemu je JSON Schema?
A: - anotace existujících dat
- validační funkce => udávání možných hodnot, ...

Q: Princip json schema:
A: - json chemá je json soubor
- $název => keywordy json schema
- $schema = určije verzi JSON Schema
- $id = url na webu s tímto schématem (toho našeho)
- $type = validační klíčové slovo => kořenem je object
- kořenem je  object

Q: K čemu jsou properties?
A: = říká, jaké názvy hodnot v objectu můžou být
- required klíč říká, které properties jsou povinné

Q: Co lze validovat u čísel?
A: - multipleOf = říct že má být násobkem něčeho
- maximum, minimum, exkluzivní verze jsou kromě => tj. otevřený interval

Q: Jak funguje validace polí?
A: list validation = validace keywordů pro pole
tuple validation = validujeme jednotlivé položky a něco po nich chceme

Q: Vadí u tuple validation, když není počet prvků jako ve schématu?
A: ne, nevadí to, pořád to je validní
- může být i klidně něco navíc ( pokud nemáme additionalItems : false, lze nastavit i typ dalších navíc položek
 )

Co jsou nested json objekty?

Q: Jak na externí schémata?
A: - odkázání se na externí schéma => pomocí $ref
=>

Q: Jak validovat řetězce?
A: - lze validovat délku, matchování regexu

Q: Co je formát v JSON Schema?
A: = jsou to nějaké specifcké formáto pro řetězce => jsou to string, pak se podle toho validuje

Boolean:

Jak kombinovat schémata?

Jak extendovat schémata?

Jak na netextová data?

Q: Co je JSON-LD?
A: = json formát pro linked data
- do klasického json se akorát přidá @context => to nám umožní namapovat json na RDF model
- pouhého json deva, kontext nemusí zajímat
- to co začíná @ je keyword json-ld

Q: K čemu je json schema subject identifier?
A: slouží k tomu "@id"

Type json schema

Q: type/class identifier
A: = chceme/ musíme říct že něco je nějakého typu (jako v rdf)

Q: Jak na realtivní iri?
A: => zadefinujeme base a potom všechny iri jsou relativní vůči němu

Q: co je default slovník?
A: => lze použít výchozí slovník jen pokud máme nšjaký který objímá všechny => schema.org

Jak vyhodit json klič v konečném rdf?

Q: Co jsou kompaktní iri?
A: => pro používání prefixů

Jak dělat typy litrálů?

Q: Jak embeddovat?
A: = používání objektu jako hodnoty v nějakém jiném objektu.

Co jsou scoped contexts?

Jak na jazyky ?

K čemu jsou language maps?

Q: Jak se mapuje list z json do rdf?
A: Pokud chceme pořadí zachovat tak musíme epoužít @list, jinak o pořadí přijdeme

Q: Jak nejlépe mapovat na rodiče?
A: lze i pomocí

Q: Co je SQL DUMP?
A: = způsob jak sdílet relační databázi
-> smaže databázi -> vytvoří novou tabulku => naplní ji

Q: Co je DSV?
A: = delimitr může být cokoliv,
- je to spíš ale separator separated values

Q: Co je formát UNL?
A: = dsv s oddělovačem pipou |

Q: Co je TSV?
A: = separátor je tabulátor, nový řádek = nový záznam

Q: Co je CSV 4180?
A: = prakticky specifikace csv
- kodovani = us-ascii => potom se změnilo na utf-8
- line ending = cr lf

Q: datové typy v csv
A: = zase ty samé jako v json, rdf, ...

Q: hlavičky v csv?
A: = není povinná ale doporučená

Q: jsou v csv null hodnoty?
A: ne, nejsou => prostě tam nic nedáme

špatné jednotky:

Q: jsou dobré složené hodnoty?
A: nejsou, odporuje 1NF => rozdělit na dva sloupce

Jak csv publikovat na webu?

Jak vybrat části csv souboru v url?

row url vs resource url

Q: Co je CVS on the web?
A: = sada doporučení pro publikaci csv na webu
=> principem je anotovat csv tabulky pomocí json-ld deskriptoru

Q: Co je na vrcholu csvw?
A: nějaká skupina tabulek

Jak vypadá deskriptor?