• @ALL má oprávnění číst
  • @Celostatni forum má oprávnění nahrávat
  • @Registrovani priznivci má oprávnění nahrávat

Open Graph API

řešitel:
Tomáš Simon Klapka
kontrolor:
Bc. Lukáš Nový
příslušný orgán:
Technický odbor
veřejné peníze:
ne
zahájení:
2012-11-02
popis:
Open Graph API bude inspirována existujícími implementacemi Graph API (např FB Open Graph). Součástí bude grafová databáze s možností připojení aplikací a poskytnutí aplikacím prostoru pro svoje data a navázání vlastní funkcionality nad operace s API (možnost dodefinovat si vlastní API). Do Graph API si budou stranické systémy ukládat data a API umožní komunikaci mezi aplikacemi a systémy. Graph API bude mít public přístup k veřejným datům.

Rozhraní

Graph API bude mít minimálně dvě rozhraní. Jedno přes command line utilitu spouštěnou přímo na serveru, která zpracuje textový dotaz, převede jej na query a pošle jej Graph API. Druhé rozhraní bude REST API, které také převede REST dotaz na query.

Graph API Query je objekt skládající se z nodu, akce a sekvence dat:

  • node - název nodu (příklad: /app/evidence/members, /app/forum/topic, /status, …). Node by mohl být i URL(?)
  • action - create/read/update/delete
  • object - JSON data

Tento dotaz lze textově reprezentovat jako:

<node> <action> [<object> [| [<object2> [| ... ]]] "\n"

Tyto textové reprezentace dotazů mohou být uloženy do souboru jako skript. (navrhuji název formátu: GQL - graph query language)

Příklad:

/app/evidence/members create { name: "Jan Novák" }
/node create { name: "/status", router: { name: "StorageRouter" } }
/app/forum/post create { content: "foo" }
/app/forum/post update { id: "507c7f79fcf86cd7994f6c0e", content: "bar" }
/app/forum/post delete { id: "507c7f79fcf86cd7994f6c0e" }

REST API

REST API převede REST dotaz na query podle mapování REST metod na action

CLI

CLI input představuje command line utilita graph, která zpracuje vstup a předá jej procesoru GQL GQL input převádí GQL sekvence na query

Query

Graph query se podívá na node, zjistí k němu routery a query předá vybraným routerům v sekvenci, případně paralelně, pokud si jiné aplikace naváží nad node další routery. Každý node bude mít specifikovaný svůj hlavní (default) router (nebo sekvenci) a jako výstup bude použit výstup právě z něj. Výstup z případných paralelních routerů navázaných dalšími aplikacemi API vracet zpět klientovi nebude.

Routers

Každý router má metodu

route(query, callback)

EchoRouter vrací zpět data, která dostal RedirectRouter redirectuje dotaz na jiný node HTTPRouter redirectuje dotaz na jiný server přes HTTP dotaz (REST client) StorageRouter obsluhuje databázi

Předpokládané moduly a jejich komponenty

graph-rest-server (app)

  • REST - REST API server volající query

graph (app) - command line utilita používající CLI

graph-cli (lib)

  • CLI - CLI používající GQL volající query

graph-common (lib)

  • Graph
  • Query
  • GQL
  • Storage (drivers pluginable)
  • MongoDBStorage (plugin)
  • ConfigurationManager (replacable/pluginable)
  • NodeManager (replacable/pluginable)
  • RouteManager (replacable/pluginable, routers pluginable)
  • EchoRouter (plugin)
  • StorageRouter (plugin)
  • RedirectRouter (plugin)

graph-router-http (plugin)

  • HTTPRouter - přesměrovává dotazy na HTTP (např. redirectování REST dotazů na jiné URL)

Další kroky

  • database access (Storage, MongoDBStorage, StorageRouter)
  • nodes and routers management - správa nodů a routerů
  • application router - přidávající aplikační vrstvu + OAuth2 + HTTP PUSH
  • přístupy = autentizace (systém identit) a autorizace (systém oprávnění)
  • federace - možnost propojení graphových databází
  • quota - pro možnost nastavení limitů pro aplikace
  • klientské knihovny a ORM drivery
  • transakce
  • verzování dat
  • asym. cryptování objektů (částí objektů)
  • RDF / JSON-LD
  • decentralizace dat
  • decentralizace přístupového bodu API

Kontakty a odkazy

© Piráti, 2016. Všechna práva vyhlazena. Sdílejte a nechte ostatní sdílet za stejných podmínek. Podmínky použití.