diff --git a/docs/CONCEPTS.md b/docs/CONCEPTS.md index 23c51b3811..64cd328d77 100644 --- a/docs/CONCEPTS.md +++ b/docs/CONCEPTS.md @@ -48,7 +48,7 @@ These core requirements capture the guiding principles behind the concepts and d ## Overview Conceptually, OPA is a collection of algorithms that answer questions about policy. -![Overview](./overview.png) + At a high level, using OPA involves: @@ -68,7 +68,7 @@ When OPA is started for the first time it contains no policies or data. Applicat Applications interact with OPA via HTTP. -![Deployment](./deployment.png) + ## APIs @@ -186,11 +186,11 @@ Conceptually, there are two kinds of documents in OPA: **Virtual documents** are defined by rules inside policies. OPA computes the contents of virtual documents when callers execute queries against rules or when dependant documents are modified. Virtual documents are defined in terms of base documents and other virtual documents. Policy authors can use virtual documents to define abstractions which are useful for expressing high level policy and insulating policy from schema changes in low level data. -![Data Model](data-model-dependencies.png) + When defining policies, rules are written which contain expressions that reference documents. The language that rules are written in ("Opalog") lets you reference base documents and virtual documents in exactly the same way. -![Data Model Logical](data-model-logical.png) + ## Policies diff --git a/docs/data-model-dependencies.png b/docs/data-model-dependencies.png deleted file mode 100644 index be558ea938..0000000000 Binary files a/docs/data-model-dependencies.png and /dev/null differ diff --git a/docs/data-model-dependencies.svg b/docs/data-model-dependencies.svg new file mode 100644 index 0000000000..6922615268 --- /dev/null +++ b/docs/data-model-dependencies.svg @@ -0,0 +1,3 @@ + + + Produced by OmniGraffle 6.5 2016-03-18 04:17:26 +0000Data Model DependenciesLayer 1violation[] = x :- x = t[].x, x.attr = …{ violation: [ ]}{ “…”: “...", “…”: […]}{ n: bar, z: 3.14, baz: [{a: b}]}{ “…”: “…”, d: {g: h}, e: [{1: 2}]}{ mt: abc, 12: [false, n] “…”: blk}[ abc, def, {foo: bar}]u[] = y :- q[].attr1 = yq[] = x :- r[].bar[] = xt[] = x :- p[] = x, not x = z[], x > m[].bappappvirtual documentsbase documentsrules diff --git a/docs/data-model-logical.png b/docs/data-model-logical.png deleted file mode 100644 index b9e3af0b84..0000000000 Binary files a/docs/data-model-logical.png and /dev/null differ diff --git a/docs/data-model-logical.svg b/docs/data-model-logical.svg new file mode 100644 index 0000000000..9e9b0862f9 --- /dev/null +++ b/docs/data-model-logical.svg @@ -0,0 +1,3 @@ + + + Produced by OmniGraffle 6.5 2016-03-18 04:17:26 +0000Data Model Logical 2Layer 1data {}opa {}examples {}package opa.examplesimport ...public_servers[] = server :- server = servers[] server.ports[] = ports[i].id ports[i].network = networks[j].id networks[j].public package opa.examplesimport data.serversviolations[] = server :- server = servers[] public_servers[] = server server.protocols[] = “http”ports [ … ]networks [ … ]servers [ … ]public_servers [ … ]violations [ … ]appapp diff --git a/docs/deployment.png b/docs/deployment.png deleted file mode 100644 index fa63afd268..0000000000 Binary files a/docs/deployment.png and /dev/null differ diff --git a/docs/deployment.svg b/docs/deployment.svg new file mode 100644 index 0000000000..b4ac3a5277 --- /dev/null +++ b/docs/deployment.svg @@ -0,0 +1,3 @@ + + + Produced by OmniGraffle 6.5 2016-03-18 04:17:26 +0000DeploymentLayer 1serveropadAPPAPPappprocessIPC (http) diff --git a/docs/overview.png b/docs/overview.png deleted file mode 100644 index c02136d939..0000000000 Binary files a/docs/overview.png and /dev/null differ diff --git a/docs/overview.svg b/docs/overview.svg new file mode 100644 index 0000000000..de8861a3ef --- /dev/null +++ b/docs/overview.svg @@ -0,0 +1,3 @@ + + + Produced by OmniGraffle 6.5 2016-03-18 04:17:26 +0000OverviewLayer 1opapolicy storeq[k] = v :- d.e[k] = vt :- p[] = x, q[] =xp[] = x :- r[].bar[] = xr[] = v :- …data crudpolicy crudtxnevaluation enginehttpdocument store{ foo: bar, z: 3.14, baz: [{a: b}]}[1, 2, false, “qui”]{m: n, n: 100}{ emp: [{name: … office: {ca: …}triggers