diff --git a/latest/404.html b/latest/404.html index 12a739b40e5a72b77954147a803d906e7c10ad43..7fa4ea6b7ec185cf6e6b72ddb855894721b0953d 100644 --- a/latest/404.html +++ b/latest/404.html @@ -111,6 +111,39 @@ + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + <div class="md-header__source"> <a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services" title="Go to repository" class="md-source" data-md-component="source"> diff --git a/latest/contact/index.html b/latest/contact/index.html index cbea71c63c670e8bb96a1e9c3d5ce7ce24a700b3..364245b16424f1364c7d1c1e1642f9a1dbaa4075 100644 --- a/latest/contact/index.html +++ b/latest/contact/index.html @@ -118,6 +118,39 @@ + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + <div class="md-header__source"> <a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services" title="Go to repository" class="md-source" data-md-component="source"> diff --git a/latest/customization/index.html b/latest/customization/index.html index 977fefab2e36f56d783aeede30a62c067c300add..d901d8a906b9e1f24738bd97d99059a17834d4b8 100644 --- a/latest/customization/index.html +++ b/latest/customization/index.html @@ -120,6 +120,39 @@ + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + <div class="md-header__source"> <a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services" title="Go to repository" class="md-source" data-md-component="source"> diff --git a/latest/deployment/index.html b/latest/deployment/index.html index a435d4d06f1e42abeaa4c07f15e34a98529581b6..33913779d6ab531d5297c6df0b9353ec262b1830 100644 --- a/latest/deployment/index.html +++ b/latest/deployment/index.html @@ -116,6 +116,39 @@ + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + <div class="md-header__source"> <a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services" title="Go to repository" class="md-source" data-md-component="source"> diff --git a/latest/get-started/index.html b/latest/get-started/index.html index 5493a5a65c8e92b4422260d8ea0230f0a98efc35..3860065682844bc2887ffbfb71d4f23c5526a25f 100644 --- a/latest/get-started/index.html +++ b/latest/get-started/index.html @@ -120,6 +120,39 @@ + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + <div class="md-header__source"> <a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services" title="Go to repository" class="md-source" data-md-component="source"> diff --git a/latest/index.html b/latest/index.html index f7412f35472e3a37ea332e1ec796a60113b2bff0..77ceffe2fc7e794ab0a15f71b9e0d82b858dd63f 100644 --- a/latest/index.html +++ b/latest/index.html @@ -118,6 +118,39 @@ + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + <div class="md-header__source"> <a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services" title="Go to repository" class="md-source" data-md-component="source"> diff --git a/latest/publications/index.html b/latest/publications/index.html index 6f49a3392a93eca87e50834caaba1e4c977531d5..76fdf71df6cb3c4e0190d097a654e9b66a7964f9 100644 --- a/latest/publications/index.html +++ b/latest/publications/index.html @@ -120,6 +120,39 @@ + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + <div class="md-header__source"> <a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services" title="Go to repository" class="md-source" data-md-component="source"> diff --git a/latest/search/search_index.json b/latest/search/search_index.json new file mode 100644 index 0000000000000000000000000000000000000000..37a50e92cf832226035c6f3284fd618130532135 --- /dev/null +++ b/latest/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"DBRepo: A Database Repository to Support Research","text":""},{"location":"#problem-statement","title":"Problem Statement","text":"<p>Digital repositories see themselves more frequently encountered with the problem of making databases accessible in their collection. Challenges revolve around organizing, searching and retrieving content stored within databases and constitute a major technical burden as their internal representation greatly differs from static documents most digital repositories are designed for.</p> <p>Get Started Learn More</p>"},{"location":"#application-areas","title":"Application Areas","text":"<p>We present a database repository system that allows researchers to ingest data into a central, versioned repository through common interfaces, provides efficient access to arbitrary subsets of data even when the underlying data store is evolving, allows reproducing of query results and supports findable-, accessible-, interoperable- and reusable data.</p>"},{"location":"#more-information","title":"More Information","text":"<ul> <li>Demonstration instance https://dbrepo1.ec.tuwien.ac.at</li> <li>Sandbox instance https://dbrepo2.ec.tuwien.ac.at</li> <li>System description https://doi.org/10.2218/ijdc.v17i1.825</li> </ul>"},{"location":"contact/","title":"Contact","text":""},{"location":"contact/#team","title":"Team","text":""},{"location":"contact/#project-management","title":"Project Management","text":"<p>Ao.univ.Prof. Dr. Andreas Rauber Technische Universit\u00e4t Wien Research Unit Data Science Favoritenstra\u00dfe 9-11 A-1040 Vienna, Austria</p>"},{"location":"contact/#development","title":"Development","text":"<p>Projektass. Dipl.-Ing. Martin Weise Technische Universit\u00e4t Wien Research Unit Data Science Favoritenstra\u00dfe 9-11 A-1040 Vienna, Austria</p>"},{"location":"contact/#contributors-alphabetically","title":"Contributors (alphabetically)","text":"<ul> <li>Ganguly, Raman</li> <li>Gergely, Eva</li> <li>Grantner, Tobias</li> <li>Karnbach, Geoffrey</li> <li>Michlits, Cornelia</li> <li>Rauber, Andreas</li> <li>Staudinger, Moritz</li> <li>Stytsenko, Kirill</li> <li>Taha, Josef</li> <li>Tsepelakis, Sotiris</li> <li>Weise, Martin</li> </ul>"},{"location":"customization/","title":"Customization","text":"<p>Abstract</p> <p>On this page, we showcase the customization capabilities of DBRepo to e.g. whitelabel your deployment.</p>"},{"location":"customization/#custom-title","title":"Custom Title","text":"<p>The default title is \"Database Repository\" and can be replaced by changing the <code>TITLE</code> environment variable.</p>"},{"location":"customization/#custom-logo","title":"Custom Logo","text":"<p>The default placeholder logo consists of the two universities that developed this software. You can replace it by mounting your own logo with a volume.</p> <pre><code>docker run -v /path/to/your_logo.png:/logo.png ...\n</code></pre> <p>In case your logo is not in PNG format, you need to change the environment variable <code>LOGO</code> accordingly, e.g. for a logo in JPEG format, set <code>LOGO: \"/logo.JPEG\"</code> in the <code>.env</code> file and start the container with a volume.</p> <pre><code>docker run -v /path/to/your_logo.JPEG:/logo.JPEG ...\n</code></pre> <p></p> Custom logo which replaces the default placeholder logo"},{"location":"customization/#custom-icon","title":"Custom Icon","text":"<p>The default placeholder icon can be replaced by mounting your own icon with a volume.</p> <pre><code>docker run -v /path/to/your_logo.ico:/favicon.ico ...\n</code></pre> <p></p> Custom icon which replaces the default placeholder icon <p>In case your icon is not in ICO format, you need to change the environment variable <code>ICON</code> accordingly, e.g. for an icon in GIF format, set <code>ICON: \"/favicon.GIF\"</code> in the <code>.env</code> file and start the container with a volume.</p> <pre><code>docker run -v /path/to/favicon.GIF:/favicon.GIF ...\n</code></pre>"},{"location":"deployment/","title":"Deployment","text":"<p>Abstract</p> <p>We modified some services and exchanged them with reviewed, open-source implementations that extend the functionality even more from version 1.2 onwards. On this page, some of the configuration possible is summarized.</p>"},{"location":"deployment/#authentication-service","title":"Authentication Service","text":""},{"location":"deployment/#broker-service","title":"Broker Service","text":""},{"location":"deployment/#authentication","title":"Authentication","text":"<p>The RabbitMQ client can be authenticated through plain (username, password) and OAuth2 mechanisms. Note that the access token already contains a field <code>client_id=foo</code>, so the username is optional in <code>PlainCredentials()</code>.</p> PlainOAuth2 <pre><code>import pika\n\ncredentials = pika.credentials.PlainCredentials(\"foo\", \"bar\")\nparameters = pika.ConnectionParameters('localhost', 5672, '/', credentials)\nconnection = pika.BlockingConnection(parameters)\nchannel = connection.channel()\nchannel.queue_declare(queue='test', durable=True)\nchannel.basic_publish(exchange='',\nrouting_key='test',\nbody=b'Hello World!')\nprint(\" [x] Sent 'Hello World!'\")\nconnection.close()\n</code></pre> <pre><code>import pika\n\ncredentials = pika.credentials.PlainCredentials(\"\", \"THE_ACCESS_TOKEN\")\nparameters = pika.ConnectionParameters('localhost', 5672, '/', credentials)\nconnection = pika.BlockingConnection(parameters)\nchannel = connection.channel()\nchannel.queue_declare(queue='test', durable=True)\nchannel.basic_publish(exchange='',\nrouting_key='test',\nbody=b'Hello World!')\nprint(\" [x] Sent 'Hello World!'\")\nconnection.close()\n</code></pre>"},{"location":"deployment/#identifier-service","title":"Identifier Service","text":"<p>From version 1.2 onwards there are two modes for the Identifier Service:</p> <ol> <li>Persistent Identifier (PID)</li> <li>Digital Object Identifier (DOI)</li> </ol> <p>By default, the URI mode is used, creating a PID for databases or subsets. If starting the Identifier Service in DOI mode, a DOI is minted for persistent identification of databases or subsets. Using the DOI system is entirely optional and should not be done for test-deployments.</p> <p></p> Minting a test-DOI for a subset"},{"location":"deployment/#gateway-service","title":"Gateway Service","text":"<p>From version 1.2 onwards we use both HTTP and HTTPS to serve the API, especially for the Authentication Service. The Discovery Service lists both the non-secure and secure ports.</p>"},{"location":"get-started/","title":"Get Started","text":"<p>Abstract</p> <p>In this short getting started guide we show the dependencies to run the database repository and perform a small, local, test deployment for quickly trying out the features that the repository offers.</p>"},{"location":"get-started/#requirements","title":"Requirements","text":""},{"location":"get-started/#hardware","title":"Hardware","text":"<p>For this small, local, test deployment any modern hardware would suffice, we recommend a dedicated virtual machine with the following settings. Note that most of the CPU and RAM resources will be needed for starting the infrastructure, this is because of Docker.</p> <ul> <li>8 CPU cores</li> <li>16GB RAM memory</li> <li>100GB SSD memory available</li> </ul>"},{"location":"get-started/#software","title":"Software","text":"<p>Install Docker Engine for your operating system. There are excellent guides available for Linux, we highly recommend to use a stable distribution such as Debian. In the following guide we only consider Debian.</p>"},{"location":"get-started/#deployment","title":"Deployment","text":""},{"location":"get-started/#docker-compose","title":"Docker Compose","text":"<p>We maintain a rapid prototype deployment option through Docker Compose (v2.17.0 and newer). This deployment creates the core infrastructure and a single Docker container for all user-generated databases.</p> <p>Download the latest <code>docker-compose.yml</code>, nginx reverse proxy conf <code>dbrepo.conf</code> and <code>.env</code>:</p> <pre><code>curl -o docker-compose.yml https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/docker-compose.prod.yml\ncurl -o dbrepo.conf https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/dbrepo.conf\ncurl -o .env https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/.env.unix.example\n</code></pre> <p>Increase the virtual memory max swap limit for OpenSearch to at least 262144 on the host machine according to the official manual, you need sudo permissions for this (check first with <code>cat /proc/sys/vm/max_map_count</code>):</p> <pre><code>echo \"vm.max_map_count=262144\" >> /etc/sysctl.conf\nsysctl -p\n</code></pre> <p>Start the services:</p> <pre><code>docker compose pull\ndocker compose up -d\n</code></pre> <p>View the logs:</p> <pre><code>docker compose logs -f\n</code></pre> <p>The Metadata Database still needs to know that the Docker container that holds all user-generated databases exists, we need to insert it:</p> <pre><code>mariadb -h 127.0.0.1 -D fda -u root -pdbrepo -e \"INSERT INTO `fda`.`mdb_containers` \\\n(name, internal_name, image_id, host, port, privileged_username, privileged_password) \\\nVALUES ('MariaDB 10.5', 'mariadb_10_5', 1, 'user-db', 3306, 'root', 'dbrepo')\"\n</code></pre> <p>You should now be able to view the front end at http://127.0.0.1:80</p> <p>Please be warned that the default configuration is not intended for public deployments. It is only intended to have a running system within minutes to play around within the system and explore features.</p> <p>Known security issues with the default configuration</p> <p>The system is auto-configured for a small, local, test deployment and is not secure! You need to make modifications in various places to make it secure:</p> <ul> <li> <p>Authentication Service:</p> <p>a. You need to use your own instance or configure a secure instance using a (self-signed) certificate. Additionally, when serving from a non-default Authentication Service, you need to put it into the <code>JWT_ISSUER</code> environment variable (<code>.env</code>).</p> <p>b. You need to change the default admin user <code>fda</code> password in Realm master > Users > fda > Credentials > Reset password.</p> <p>c. You need to change the client secrets for the clients <code>dbrepo-client</code> and <code>broker-client</code>. Do this in Realm dbrepo > Clients > dbrepo-client > Credentials > Client secret > Regenerate. Do the same for the broker-client.</p> <p>d. You need to regenerate the public key of the <code>RS256</code> algorithm which is shared with all services to verify the signature of JWT tokens. Add your securely generated private key in Realm dbrepo > Realm settings > Keys > Providers > Add provider > rsa.</p> </li> <li> <p>Broker Service: by default, this service is configured with an administrative user that has major privileges. You need to change the password of the user fda in Admin > Update this user > Password. We found this simple guide to be very useful.</p> </li> <li> <p>Search Database: by default, this service is configured to require authentication with an administrative user that is allowed to write into the indizes. Following this simple guide, this can be achieved using the command line.</p> </li> <li> <p>Gateway Service: by default, no HTTPS is used that protects the services behind. You need to provide a trusted SSL/TLS certificate in the configuration file or use your own proxy in front of the Gateway Service. See this simple guide on how to install a SSL/TLS certificate on NGINX.</p> </li> </ul>"},{"location":"get-started/#migration-from-12-to-13","title":"Migration from 1.2 to 1.3","text":"<p>In case you have a previous deployment from version 1.2, shut down the containers and back them up manually. You can do this by using the <code>busybox</code> image. Replace <code>deadbeef</code> with your container name or hash:</p> <pre><code>export NAME=dbrepo-userdb-xyz\ndocker run --rm --volumes-from $NAME -v /home/$USER/backup:/backup busybox tar pcvfz /backup/$NAME.tar.gz /var/lib/mysql\n</code></pre> <p>Wipe all traces of DBRepo from your system</p> <p>To erase all traces of DBRepo from your computer or virtual machine, the following commands delete all containers, volumes and networks that are present, execute the following dangerous command. It will wipe all information about DBRepo from your system (excluding the images).</p> <pre><code>docker container stop $(docker container ls -aq -f name=^/dbrepo-.*) || true\ndocker container rm $(docker container ls -aq -f name=^/dbrepo-.*) || true\ndocker volume rm $(docker volume ls -q -f name=^dbrepo-.*) || true\ndocker network rm $(docker network ls -q -f name=^dbrepo-.*) || true\n</code></pre> <p>You can restore the volume after downloading the new 1.3 images and creating the infrastructure:</p> <pre><code>export NAME=dbrepo-userdb-xyz\nexport PORT=12345\ndocker container create -h $NAME --name $NAME -p $PORT:3306 -e MARIADB_ROOT_PASSWORD=mariadb --network userdb -v /backup mariadb:10.5\ndocker run --rm --volumes-from $NAME -v /home/$USER/backup/.tar.gz:/backup/$NAME.tar.gz busybox sh -c 'cd /backup && tar xvfz /backup/$NAME.tar.gz && cp -r /backup/var/lib/mysql/* /var/lib/mysql'\n</code></pre> <p>Future releases will be backwards compatible and will come with migration scripts.</p>"},{"location":"get-started/#kubernetes","title":"Kubernetes","text":"<p>We maintain a RKE2 Kubernetes deployment from version 1.3 onwards. More on that when the release date is fixed.</p>"},{"location":"publications/","title":"Publications","text":""},{"location":"publications/#refereed","title":"Refereed","text":""},{"location":"publications/#2022","title":"2022","text":"<ol> <li> <p>Ekaputra, F. E., Weise, M., Flicker, K., Salleh, M. R., Rahman, N. A., Miksa, T., & Rauber, A. (2022). Towards A Data Repository for Educational Factories. Proceedings of the 8th International Conference on Data and Software Engineering, pp. 149-154. DOI: 10.1109/ICoDSE56892.2022.9971958.</p> </li> <li> <p>Weise, M., Staudinger, M., Michlits, C., Gergely, E., Stytsenko, K., Ganguly, R., & Rauber, A. (2022). DBRepo: a Semantic Digital Repository for Relational Databases. International Journal of Digital Curation, 17(1), 11. DOI: 10.2218/ijdc.v17i1.825</p> </li> </ol>"},{"location":"publications/#2021","title":"2021","text":"<ol> <li>Weise, M., Michlits, C., Staudinger, M., Gergely, E., Stytsenko, K., Ganguly, R. and Rauber A., 2021. FDA-DBRepo: A Data Preservation Repository Supporting FAIR Principles, Data Versioning and Reproducible Queries. Proceedings of the 17th International Conference on Digital Preservation, Beijing, China, p.34. DOI: 10.17605/OSF.IO/B7NX5</li> </ol>"},{"location":"publications/#other","title":"Other","text":"<ol> <li> <p>Weise, M. (2023). A Repository and Compute Environment for Sensitive Data. FAIRness for Closed Data, at EMBL Bioimaging and the European Open Science Cloud, (Heidelberg, Germany). April, 19-20th, 2023. DOI: 10.34726/3946</p> </li> <li> <p>Staudinger, M. (2022). DBRepo: A Repository to Save Research Databases. [Online]. URL: https://www.tuwien.at/en/tu-wien/news/news-articles/news/dbrepo accessed 2022-04-12</p> </li> <li> <p>Gergely, E. (2021). Better Support for Research: Current Cooperation Projects. [Online]. URL: https://zid.univie.ac.at/it-news/artikel/news/cluster-forschungsdaten/ accessed 2022-04-12</p> </li> </ol>"},{"location":"system/","title":"System","text":"<p>Abstract</p> <p>This is the full system description from a technical/developer view.</p> <p>We invite all open-source developers to help us fixing bugs and introducing features to the source code. Get involved by sending a mail to Prof. Andreas Rauber and Projektass. Martin Weise.</p>"},{"location":"system/#architecture","title":"Architecture","text":"<p>The repository is designed as a microservice architecture to ensure scalability and the utilization of various technologies. The conceptualized microservices operate the basic database operations, data versioning as well as findability, accessability, interoperability and reuseability (FAIR).</p> <p></p> Architecture"},{"location":"system/#services","title":"Services","text":"<p>View the docker images for the documentation of the service.</p>"},{"location":"system/#analyse-service","title":"Analyse Service","text":"<p>Debug Information</p> <ul> <li>Ports: 5000/tcp</li> <li>Prometheus: <code>http://:5000/metrics</code></li> <li>Swagger UI: <code>http://:5000/swagger-ui/index.html</code> view online</li> </ul> <p>It suggests data types for the FAIR Portal when creating a table from a comma separated values (CSV) file. It recommends enumerations for columns and returns e.g. a list of potential primary key candidates. The researcher is able to confirm these suggestions manually. Moreover, the Analyze Service determines basic statistical properties of numerical columns.</p>"},{"location":"system/#authentication-service","title":"Authentication Service","text":"<p>Debug Information</p> <ul> <li>Ports: 8080/tcp, 8443/tcp</li> <li>Admin Console: <code>http://:8443/</code></li> </ul> <p>Very specific to the deployment of the organization. In our reference implementation we implement a security assertion markup language (SAML) service provider and use our institutional SAML identity provider for obtaining account data through an encrypted channel.</p> <p>From version 1.2 onwards we use Keycloak for authentication and deprecated the previous Spring Boot application. Consequently, the authentication will be through Keycloak.</p> <p>Unsupported Keycloak features</p> <p>Due to no demand at the time, we currently do not support the following Keycloak features:</p> <ul> <li>E-Mail verification</li> <li>Temporary passwords</li> </ul> <p>By default, the Authentication Service comes with a self-signed certificate valid 3 months from build date. For deployment it is highly encouraged to use your own certificate, properly issued by a trusted PKI, e.g. G\u00c9ANT. For local deployments you can use the self-signed certificate. You need to accept the risk in most browsers when visiting the admin panel.</p> <p>Sign in with the default credentials (username <code>fda</code>, password <code>fda</code>) or the one you configured during set-up. Be default, users are created using the frontend and the sign-up page. But it is also possible to create users from Keycloak, they will still act as \"self-sign-up\" created users. Since we do not support all features of Keycloak, leave out required user actions as they will not be enforced, also the temporary password.</p> <p>Each user has attributes associated to them. In case you manually create a user in Keycloak directly, you need to add them in Users > Add user > Attributes:</p> <ul> <li><code>theme_dark</code> (boolean, default: false)</li> <li><code>orcid</code> (string)</li> <li><code>affiliation</code> (string)</li> </ul>"},{"location":"system/#groups","title":"Groups","text":"<p>The authorization scheme follows a group-based access control (GBAC). Users are organized in three distinct (non-overlapping) groups:</p> <ol> <li>Researchers (default)</li> <li>Developers</li> <li>Data Stewards</li> </ol> <p>Based on the membership in one of these groups, the user is assigned a set of roles that authorize specific actions. By default, all users are assigned to the <code>researchers</code> group.</p>"},{"location":"system/#roles","title":"Roles","text":"<p>We organize the roles into default- and escalated composite roles. There are three composite roles, one for each group. Each of the composite role has a set of other associated composite roles.</p> <p></p> Three groups (Researchers, Developers, Data Stewards) and their composite roles associated. <p>There is one role for one specific action in the services. For example: the <code>create-database</code> role authorizes a user to create a database in a Docker container. Therefore, the <code>DatabaseEndpoint.java</code> endpoint requires a JWT access token with this authority.</p> <pre><code>@PostMapping\n@PreAuthorize(\"hasAuthority('create-database')\")\npublic ResponseEntity<DatabaseBriefDto> create(@NotNull Long containerId,\n@Valid @RequestBody DatabaseCreateDto createDto,\n@NotNull Principal principal) {\n...\n}\n</code></pre>"},{"location":"system/#default-container-handling","title":"Default Container Handling","text":"Name Description <code>create-container</code> Can create a container <code>find-container</code> Can find a specific container <code>list-containers</code> Can list all containers <code>modify-container-state</code> Can start and stop the own container"},{"location":"system/#default-database-handling","title":"Default Database Handling","text":"Name Description <code>check-database-access</code> Can check the access to a database of a user <code>create-database</code> Can create a database <code>create-database-access</code> Can give a new access to a database of a user <code>delete-database-access</code> Can delete the access to a database of a user <code>find-database</code> Can find a specific database in a container <code>list-databases</code> Can list all databases in a container <code>modify-database-visibility</code> Can modify the database visibility (public, private) <code>modify-database-owner</code> Can modify the database owner <code>update-database-access</code> Can update the access to a database of a user"},{"location":"system/#default-table-handling","title":"Default Table Handling","text":"Name Description <code>create-table</code> Can create a table <code>find-tables</code> Can list a specific table in a database <code>list-tables</code> Can list all tables <code>modify-table-column-semantics</code> Can modify the column semantics of a specific column"},{"location":"system/#default-query-handling","title":"Default Query Handling","text":"Name Description <code>create-database-view</code> Can create a view in a database <code>delete-database-view</code> Can delete a view in a database <code>delete-table-data</code> Can delete data in a table <code>execute-query</code> Can execute a query statement <code>export-query-data</code> Can export the data that a query has produced <code>export-table-data</code> Can export the data stored in a table <code>find-database-view</code> Can find a specific database view <code>find-query</code> Can find a specific query in the query store <code>insert-table-data</code> Can insert data into a table <code>list-database-views</code> Can list all database views <code>list-queries</code> Can list all queries in the query store <code>persist-query</code> Can persist a query in the query store <code>re-execute-query</code> Can re-execute a query to reproduce a result <code>view-database-view-data</code> Can view the data produced by a database view <code>view-table-data</code> Can view the data in a table <code>view-table-history</code> Can view the data history of a table"},{"location":"system/#default-identifier-handling","title":"Default Identifier Handling","text":"Name Description <code>create-identifier</code> Can create an identifier (subset, database) <code>find-identifier</code> Can find a specific identifier <code>list-identifier</code> Can list all identifiers"},{"location":"system/#default-user-handling","title":"Default User Handling","text":"Name Description <code>modify-user-theme</code> Can modify the user theme (light, dark) <code>modify-user-information</code> Can modify the user information"},{"location":"system/#default-maintenance-handling","title":"Default Maintenance Handling","text":"Name Description <code>create-maintenance-message</code> Can create a maintenance message banner <code>delete-maintenance-message</code> Can delete a maintenance message banner <code>find-maintenance-message</code> Can find a maintenance message banner <code>list-maintenance-messages</code> Can list all maintenance message banners <code>update-maintenance-message</code> Can update a maintenance message banner"},{"location":"system/#default-semantics-handling","title":"Default Semantics Handling","text":"Name Description <code>create-semantic-unit</code> Can save a previously unknown unit for a table column <code>create-semantic-concept</code> Can save a previously unknown concept for a table column <code>execute-semantic-query</code> Can query remote SPARQL endpoints to get labels and description <code>table-semantic-analyse</code> Can automatically suggest units and concepts for a table"},{"location":"system/#escalated-user-handling","title":"Escalated User Handling","text":"Name Description <code>find-user</code> Can list user information for a specific user"},{"location":"system/#escalated-container-handling","title":"Escalated Container Handling","text":"Name Description <code>delete-container</code> Can delete any container <code>modify-foreign-container-state</code> Can modify any container state (start, stop)"},{"location":"system/#escalated-database-handling","title":"Escalated Database Handling","text":"Name Description <code>delete-database</code> Can delete any database in any container"},{"location":"system/#escalated-table-handling","title":"Escalated Table Handling","text":"Name Description <code>delete-table</code> Can delete any table in any database"},{"location":"system/#escalated-query-handling","title":"Escalated Query Handling","text":"Name Description /"},{"location":"system/#escalated-identifier-handling","title":"Escalated Identifier Handling","text":"Name Description <code>create-foreign-identifier</code> Can create an identifier to any database or query <code>delete-identifier</code> Can delete any identifier <code>modify-identifier-metadata</code> Can modify any identifier metadata"},{"location":"system/#escalated-semantics-handling","title":"Escalated Semantics Handling","text":"Name Description <code>create-ontology</code> Can register a new ontology <code>delete-ontology</code> Can unregister an ontology <code>list-ontologies</code> Can list all ontologies <code>modify-foreign-table-column-semantics</code> Can modify any table column concept and unit <code>update-ontology</code> Can update ontology metadata <code>update-semantic-concept</code> Can update own table column concept <code>update-semantic-unit</code> Can update own table column unit"},{"location":"system/#api","title":"API","text":""},{"location":"system/#obtain-access-token","title":"Obtain Access Token","text":"<p>Access tokens are needed for almost all operations.</p> TerminalPython <pre><code>curl -X POST \\\n -d \"username=foo&password=bar&grant_type=password&client_id=dbrepo-client&scope=openid&client_secret=MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG\" \\\n http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token\n</code></pre> <pre><code>import requests\n\nauth = requests.post(\"http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token\", data={\n \"username\": \"foo\",\n \"password\": \"bar\",\n \"grant_type\": \"password\",\n \"client_id\": \"dbrepo-client\",\n \"scope\": \"openid\",\n \"client_secret\": \"MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG\"\n})\nprint(auth.json()[\"access_token\"])\n</code></pre>"},{"location":"system/#refresh-access-token","title":"Refresh Access Token","text":"<p>Using the response from above, a new access token can be created via the refresh token provided.</p> TerminalPython <pre><code>curl -X POST \\\n -d \"grant_type=refresh_token&client_id=dbrepo-client&refresh_token=THE_REFRESH_TOKEN&client_secret=MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG\" \\\n http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token\n</code></pre> <pre><code>import requests\n\nauth = requests.post(\"http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token\", data={\n \"grant_type\": \"refresh_token\",\n \"client_id\": \"dbrepo-client\",\n \"client_secret\": \"MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG\",\n \"refresh_token\": \"THE_REFRESH_TOKEN\"\n})\nprint(auth.json()[\"access_token\"])\n</code></pre>"},{"location":"system/#broker-service","title":"Broker Service","text":"<p>Debug Information</p> <ul> <li>Ports: 5672/tcp, 15672/tcp</li> <li>RabbitMQ Management Plugin: <code>http://:15672</code></li> <li>RabbitMQ Prometheus Plugin: <code>http://:15692/metrics</code></li> </ul> <p>It holds exchanges and topics responsible for holding AMQP messages for later consumption. We use RabbitMQ in the implementation. The AMQP endpoint listens to port <code>5672</code> for regular declares and offers a management interface at port <code>15672</code>.</p> <p>The default credentials are:</p> <ul> <li>Username: <code>fda</code></li> <li>Password: <code>fda</code></li> </ul>"},{"location":"system/#container-service","title":"Container Service","text":"<p>Debug Information</p> <ul> <li>Ports: 9091/tcp</li> <li>Info: <code>http://:9091/actuator/info</code></li> <li>Health: <code>http://:9091/actuator/health</code></li> <li>Prometheus: <code>http://:9091/actuator/prometheus</code></li> <li>Swagger UI: <code>http://:9091/swagger-ui/index.html</code> view online</li> </ul> <p>It is responsible for Docker container lifecycle operations and updating the local copy of the Docker images.</p>"},{"location":"system/#database-service","title":"Database Service","text":"<p>Debug Information</p> <ul> <li>Ports: 9092/tcp</li> <li>Info: <code>http://:9092/actuator/info</code></li> <li>Health: <code>http://:9092/actuator/health</code></li> <li>Prometheus: <code>http://:9092/actuator/prometheus</code></li> <li>Swagger UI: <code>http://:9092/swagger-ui/index.html</code> view online</li> </ul> <p>It creates the databases inside a Docker container and the Query Store. Currently, we only support MariaDB images that allow table versioning with low programmatic effort.</p>"},{"location":"system/#gateway-service","title":"Gateway Service","text":"<p>Debug Information</p> <ul> <li>Ports: 9095/tcp</li> <li>Info: <code>http://:9095/actuator/info</code></li> <li>Health: <code>http://:9095/actuator/health</code></li> <li>Prometheus: <code>http://:9095/actuator/prometheus</code></li> </ul> <p>Provides a single point of access to the application programming interface (API) and configures a standard NGINX reverse proxy for load balancing, SSL/TLS configuration.</p>"},{"location":"system/#identifier-service","title":"Identifier Service","text":"<p>Debug Information</p> <ul> <li>Ports: 9096/tcp</li> <li>Info: <code>http://:9096/actuator/info</code></li> <li>Health: <code>http://:9096/actuator/health</code></li> <li>Prometheus: <code>http://:9096/actuator/prometheus</code></li> <li>Swagger UI: <code>http://:9096/swagger-ui/index.html</code> view online</li> </ul> <p>This microservice is responsible for creating and resolving a persistent identifier (PID) attached to a query to obtain the metadata attached to it and allow re-execution of a query. We store both the query and hashes of the query and result set to allow equality checks of the originally obtained result set and the currently obtained result set. In the reference implementation we currently only use a numerical id column and plan to integrate digital object identifier (DOI) through our institutional library soon.</p>"},{"location":"system/#metadata-database","title":"Metadata Database","text":"<p>Debug Information</p> <ul> <li>Ports: 3306/tcp, 9100/tcp</li> <li>Prometheus: <code>http://:9100/metrics</code></li> </ul> <p>It is the core component of the project. It is a relational database that contains metadata about all researcher databases created in the database repository like column names, check expressions, value enumerations or key/value constraints and relevant data for citing data sets. Additionally, the concept, e.g. URI of units of measurements of numerical columns is stored in the Metadata Database in order to provide semantic knowledge context. We use MariaDB for its rich capabilities in the reference implementation.</p> <p>The default credentials are <code>root:dbrepo</code> for the database <code>fda</code>. Connect to the database via the JDBC connector on port <code>3306</code>.</p>"},{"location":"system/#metadata-service","title":"Metadata Service","text":"<p>Debug Information</p> <ul> <li>Ports: 9099/tcp</li> <li>Info: <code>http://:9099/actuator/info</code></li> <li>Health: <code>http://:9099/actuator/health</code></li> <li>Prometheus: <code>http://:9099/actuator/prometheus</code></li> <li>Swagger UI: <code>http://:9099/swagger-ui/index.html</code> view online</li> </ul> <p>This service provides an OAI-PMH endpoint for metadata crawler.</p>"},{"location":"system/#query-service","title":"Query Service","text":"<p>Debug Information</p> <ul> <li>Ports: 9093/tcp</li> <li>Info: <code>http://:9093/actuator/info</code></li> <li>Health: <code>http://:9093/actuator/health</code></li> <li>Prometheus: <code>http://:9093/actuator/prometheus</code></li> <li>Swagger UI: <code>http://:9093/swagger-ui/index.html</code> view online</li> </ul> <p>It provides an interface to insert data into the tables created by the Table Service. It also allows for view-only, paginated and versioned query execution to the raw data and consumes messages in the message queue from the Broker Service.</p>"},{"location":"system/#search-database","title":"Search Database","text":"<p>Debug Information</p> <ul> <li>Ports: 9200/tcp</li> <li>Indexes: <code>http://:9200/_all</code></li> <li>Health: <code>http://:9200/_cluster/health/</code></li> </ul> <p>It processes search requests from the Gateway Service for full-text lookups in the metadata database. We use Elasticsearch in the reference implementation. The search database implements Elastic Search and creates a retrievable index on all databases that is getting updated with each save operation on databases in the metadata database.</p> <p>All requests need to be authenticated, by default the credentials <code>elastic:elastic</code> are used.</p>"},{"location":"system/#semantics-service","title":"Semantics Service","text":"<p>Debug Information</p> <ul> <li>Ports: 9097/tcp</li> <li>Info: <code>http://:9097/actuator/info</code></li> <li>Health: <code>http://:9097/actuator/health</code></li> <li>Prometheus: <code>http://:9097/actuator/prometheus</code></li> <li>Swagger UI: <code>http://:9097/swagger-ui/index.html</code> view online</li> </ul> <p>It is designed to map terms in the domain of units of measurement to controlled vocabulary, modelled in the ontology of units of measure. This service validates researcher provided in units and provides a uniform resource identifier (URI) to the related concept, which will be stored in the system. Furthermore, there is a method for auto-completing text and listing a description as well as commonly used unit symbols.</p>"},{"location":"system/#table-service","title":"Table Service","text":"<p>Debug Information</p> <ul> <li>Ports: 9094/tcp</li> <li>Info: <code>http://:9094/actuator/info</code></li> <li>Health: <code>http://:9094/actuator/health</code></li> <li>Prometheus: <code>http://:9094/actuator/prometheus</code></li> <li>Swagger UI: <code>http://:9094/swagger-ui/index.html</code> view online</li> </ul> <p>This microservice handles table operations inside a database that is managed by the Database Service. We use Hibernate for schema and data ingest operations.</p>"},{"location":"system/#ui","title":"UI","text":"<p>Debug Information</p> <ul> <li>Ports: 3000/tcp, 9100/tcp</li> <li>Prometheus: <code>http://:9100/metrics</code></li> <li>UI: <code>http://:3000/</code></li> </ul> <p>It provides a graphical user interface (GUI) for a researcher to interact with the database repository's API.</p> <p></p> Architecture of the UI microservice"},{"location":"system/#user-service","title":"User Service","text":"<p>Debug Information</p> <ul> <li>Ports: 9098/tcp</li> <li>Info: <code>http://:9098/actuator/info</code></li> <li>Health: <code>http://:9098/actuator/health</code></li> <li>Prometheus: <code>http://:9098/actuator/prometheus</code></li> <li>Swagger UI: <code>http://:9098/swagger-ui/index.html</code> view online</li> </ul> <p>This microservice handles user information.</p>"}]} \ No newline at end of file diff --git a/latest/sitemap.xml.gz b/latest/sitemap.xml.gz index c52d82f721076348dcb559bf5734659a03f0e69b..00d10b371d1c24284d2de09c3551139bac29da8d 100644 Binary files a/latest/sitemap.xml.gz and b/latest/sitemap.xml.gz differ diff --git a/latest/system/index.html b/latest/system/index.html index d1ec0dbb3068587e0f04c9e2778064717414c607..de9fa0cdce4633cd9037b0687537abcf53d21970 100644 --- a/latest/system/index.html +++ b/latest/system/index.html @@ -120,6 +120,39 @@ + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + <div class="md-header__source"> <a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services" title="Go to repository" class="md-source" data-md-component="source">