Výrobní linka je sada nástrojů, které slouží k tvorbě Sémantického slovníku pojmů. V současné době zahrnuje několik komponent:
Orgán veřejné moci
je speciálním případem Organizace
). TermIt pracuje v jazyce OWL.Výrobní linka je rozšiřitelná o další nástroje, které mohou řešit jiné (nebo stejné) dílčí úlohy.
Tento repozitář obsahuje sadu Docker instrukcí pro nasazení Výrobní linky.
Postup:
Stáhni GraphDB Free do složky al-db-server
, např. graphdb-free-9.6.0-dist.zip
.
Vygeneruj soubor s proměnnými pomocí utility gen_env.sh
. Utilita vyžaduje parametr s hodnotou local
, development
nebo production
. V závislosti na parametru bude vygenerován příslušný .env.*
soubor. Konfigurace komponent bude vygenerována z šablony components.yml
a zakódována pomocí base64 do jednoduchého řetězce. Příklad:
./gen_env.sh local
Přidej do .env.<CONTEXT>
proměnné a nastav je:
Tyto proměnné volíš:
GRAPHDB_ZIP_FILE_NAME
- jméno souboru stažené GraphDB (např. graphdb-free-9.6.0-dist.zip
)POSTGRES_DB
- název databáze pro keycloak uživatelePOSTGRES_USER
- uživatelské jméno pro správu databázePOSTGRES_PASSWORD
- heslo pro správu databázeKEYCLOAK_USER
- uživatelské jméno k přihlášení do admin konzole KeycloakuKEYCLOAK_PASSWORD
- heslo k přihlášení do admin konzole KeycloakuKEYCLOAK_API_USER_USERNAME
- uživatelské jméno pro přístup k API Keycloaku (potřebné pro CheckIt)KEYCLOAK_API_USER_PASSWORD
- heslo pro přístup k API Keycloaku (potřebné pro CheckIt)SGOV_SERVER_REPOSITORY_GITHUBUSERTOKEN
- GitHub token pro vytvoření PR (nutné pouze pro publikaci pracovního prostoru na Github)CHECKIT_SERVER_REPOSITORY_GITHUBUSERTOKEN
- GitHub token pro schvalování PR (nutné pouze pro publikaci pracovního prostoru na Github)Spusť docker-compose
s příslušným .env.*
souborem. Příklad:
docker-compose --env-file=.env.local up
URL
příslušného .env.*
souboru
na službu al-nginx
. V případě lokálního nasazení a webového serevru apache2
konfigurace může vypadat následovně:
<VirtualHost *:80>
<Location /modelujeme>
ProxyPass http://localhost:1234/modelujeme nocanon
ProxyPassReverse http://localhost:1234/modelujeme
</Location>
</VirtualHost>
nebo v případe Nginx
:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location /modelujeme {
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:1234/modelujeme;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_read_timeout 600s;
}
}
Pro inicializace al-db-serveru
je potřeba spustit SPARQL dotazy ze složky al-db-server/lucene
na /modelujeme/sluzby/db-server/
v sekci SPARQL
.
V al-auth-serveru (/modelujeme/sluzby/auth-server/admin/
, přihlas se do něj pomocí $KEYCLOAK_USER
a
$KEYCLOAK_PASSWORD
)
Realm Settings/Keys
a klikni na Public key
KEYCLOAK_REALMKEY
,Clients
(levé menu)
al-sgov-server
a v Credentials
zkopíruj hodnotu Secret
klienta do proměnné SGOV_SERVER_KEYCLOAK_CREDENTIALS_SECRET (pokud vidíš *****
použij Regenerate Secret
), Secret
klienta al-termit-server
do proměnné TERMIT_SERVER_KEYCLOAK_CREDENTIALS_SECRET,Secret
klienta al-checkit-server
do proměnné CHECKIT_SERVER_KEYCLOAK_CREDENTIALS_SECRET,Users/Add user
Username
, Email
, First Name
a Last Name
Credentials
Users/Add user
Username
, Email
, First Name
a Last Name
Credentials
Role Mappings
a v Client Roles
vyhledej al-checkit-server
-> klikni na ROLE_ADMIN
a přidej tuto roli mocí tlačítka Add selected
Restartuj služby al-sgov-server
, al-termit-server
a al-checkit-server
:
docker-compose --env-file=.env.local up
nebo
docker-compose stop al-sgov-server ; docker-compose --env-file=.env.local up -d al-sgov-server
docker-compose stop al-termit-server ; docker-compose --env-file=.env.local up -d al-termit-server
docker-compose stop al-checkit-server ; docker-compose --env-file=.env.local up -d al-checkit-server
http://localhost/modelujeme
.Služba al-db-server
představuje RDF úložište obsahující pracovní verze slovníků a uživatele systému. Uživatele systému lze kdykoli smazat a přegenerovat pomocí služby al-auth-server
, která ukláda zdrojové data o uživatelích pomocí služby al-auth-server-db
. Pracovní verze slovníků lze publikovat do Sémantického slovníku pojmů (SSP).
V případě, že jsou všechny slovníky publikované, je možné RDF úložistě smazat a obnovit počáteční stav úložište (viz. body týkající se al-db-serveru
v sekci Nasazení výrobní linky) a importu všech základních dat na /modelujeme/sluzby/db-server/import#server
. Po obnovení počátečního stavu uložiště je potřeba naimportovat slovníky z SSP a obnovit i RDF reprezentaci uživatelů systému v tomto úložišti. Záznam uživatele se v RDF úložišti vytvoří automaticky při libovolné aktualizaci uživatele pomocí uživatelského rozhraní na adrese /modelujeme/sluzby/auth-server/
. Po aktualizaci všech uživatelů je obnova databáze slovníku hotova.
Alternativně lze RDF reprezentaci uživatelů systému nahrát ze zálohy, protože je obsažena v separatním kontextu RDF úložiště (např. https://slovník.gov.cz/uživatel
).
Konkrétní SPARQL dotazy naleznete v dokumentaci GraphDB odpovídající vaší verzi GraphDB v Usage -> Reasoning -> How To's. (Dokumentace 9.6)
Na al-db-serveru v sekci SPARQL (/modelujeme/sluzby/db-server/sparql
) najdete webové rozhraní pomocí, kterého lze nad databází vykonávat SPARQL dotazy. Vložte nový ruleset pomocí SPARQL dotazu ze sekce Add a custom ruleset with SPARQL INSERT
dokumentace GraphDB, kde vložíte text nového rulesetu mezi předpřipravené trojité apostrofy. Tento dotaz by měl vytvořit rulesetu s názvem "custom". To si můžete ověřit pomocí dotazu pro výpis rulesetů v sekci List all rulesets
dokumentace a obsah rulesetu pomocí dotazu v Explore a ruleset
. Nyní nastavte nový ruleset jako výchozí pomocí dotazu v sekci Set a default ruleset
. Nyní by jste měli ve výpisu rulesetů vidět u nového rulesetu status default a current. Posledním krokem je přegenerování odvození pomocí dotazu v sekci Reinferring
. (Doporučujeme přejmenovat nový ruleset pomocí dotazu v sekci Rename a ruleset
, aby se předešlo konfliktu při příštím vytváření "custom" rulesetu.)
Tento repozitář je udržován v rámci projektu OPZ č. CZ.03.4.74/0.0/0.0/15_025/0013983.