Skip to content

Commit 1fc8459

Browse files
committed
Merge remote-tracking branch 'origin/main'
2 parents 4a9b6df + 4d237f1 commit 1fc8459

32 files changed

+315
-119
lines changed

.github/workflows/publish.yml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
# This workflow converts your bikeshed (.bs) file to html and pushes to gh-pages
2-
31
name: CI
4-
5-
# Controls when the action will run. Triggers the workflow on push or pull request
6-
# events but only for the main branch
72
on:
83
push:
94
branches: [ main ]
@@ -12,9 +7,9 @@ on:
127
jobs:
138
main:
149
name: Build, Validate and Deploy
15-
runs-on: ubuntu-20.04
10+
runs-on: ubuntu-24.04
1611
steps:
17-
- uses: actions/checkout@v2
12+
- uses: actions/checkout@v4
1813
- uses: w3c/spec-prod@v2
1914
with:
2015
GH_PAGES_BRANCH: gh-pages

cli/cmd.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# run in oydid/docs
1+
# run in soya/docs
22
docker run --rm -v $(pwd):/data jplimce/bikeshed:3.2.0 bikeshed spec /data/index.bs
3-
file:///Users/christoph/semcon/soya/docs/index.html
3+
file:///Users/christoph/dev/soya/docs/index.html
44

55
# test docker image
66
docker run -it --rm -w /usr/src/app/docker/pytest oydeu/soya-cli:alpha pytest

cli/docker/Dockerfile-local

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ COPY docker/local-gem/*.gem /tmp/
2828

2929
RUN addgroup -S user && \
3030
adduser -S user -G user && \
31-
apk add --no-cache vim libsodium-dev git make gcc musl-dev jq npm openjdk8 bash curl py3-pip && \
31+
apk add --no-cache vim libsodium-dev git make gcc musl-dev jq npm openjdk8 bash curl py3-pip openssl openssl-dev build-base ruby-dev && \
3232
gem install /tmp/*.gem && \
3333
gem install httparty ed25519 multibases multihashes multicodecs json-canonicalization optparse rbnacl dag uri && \
3434
gem install securerandom -v 0.1.1 && \

docs/index.bs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ Title: Semantic Overlay Architecture
4747
Shortname: soya-spec
4848
Level: 1
4949
Status: w3c/CG-DRAFT
50-
Group: w3c-ccg
5150
URL: https://ownyourdata.github.io/soya/
5251
5352
Editor: Christoph Fabianek, OwnYourData https://OwnYourData.eu, christoph@ownyourdata.eu, https://www.linkedin.com/in/fabianek/
@@ -97,7 +96,6 @@ SOyA is a data model authoring and publishing platform and also provides functio
9796
<img src="res/overview.png" width="800"><br>
9897
<em>Figure 1: Building blocks in SOyA</em>
9998
</p>
100-
</div>
10199

102100

103101
## Terminology ## {#terminology}
@@ -114,7 +112,7 @@ This document uses the following terms as defined in external specifications and
114112
*in RDF:* an RDF Class with one or more properties
115113

116114
: <dfn lt=DRIs>DRI</dfn>
117-
:: A **D**ecentralized **R**esource **I**dentifier represents a content based address for a [=terms/structure]. Within SOyA Multihash [[MULTIHASH]] (default: `sha2-256`) is used for hashing a JSON object and Multibase [[MULTIBASE]] (default: `base58-btc`) for encoding the hash value.
115+
:: A **D**ecentralized **R**esource **I**dentifier represents a content based address for a [=terms/structure=]. Within SOyA Multihash [[MULTIHASH]] (default: `sha2-256`) is used for hashing a JSON object and Multibase [[MULTIBASE]] (default: `base58-btc`) for encoding the hash value.
118116

119117
: <dfn>Instance</dfn>
120118
:: is a data record (e.g. an data describing an employee) with a set of properties as defined in a [=terms/Base=] or [=terms/Structure=]<br>
@@ -161,7 +159,7 @@ The Semantic Overlay Architecture (SOyA) strategy is intended to simplify the en
161159
<img src="res/concept.png" width="800"><br>
162160
<em>Figure 2: Conceptual view of SOyA</em>
163161
</p>
164-
</div>
162+
165163

166164
A **Knowledge Scientist** is responsible for designing the data model for certain applications. This person has considerable experience in data modeling, however, does not necessarily have the knowledge of Semantic Web technologies. Unlike Data Engineers, the focus is mainly on the data model and does not concern with populating the data model with data instances. The following requirements are identified:
167165

@@ -194,7 +192,6 @@ The Semantic Overlay Architecture (SOyA) is built on the following core componen
194192
<img src="res/components.png" width="800"><br>
195193
<em>Figure 3: SOyA Components</em>
196194
</p>
197-
</div>
198195

199196

200197
Structures {#structure_element}

docs/index.html

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,7 @@
606606
<div class="head">
607607
<p data-fill-with="logo"><a class="logo" href="https://www.w3.org/"> <img alt="W3C" height="48" src="https://www.w3.org/StyleSheets/TR/2016/logos/W3C" width="72"> </a> </p>
608608
<h1 class="p-name no-ref" id="title">Semantic Overlay Architecture</h1>
609-
<h2 class="no-num no-toc no-ref heading settled" id="profile-and-date"><span class="content">Draft Community Group Report, <time class="dt-updated" datetime="2022-07-07">7 July 2022</time></span></h2>
609+
<h2 class="no-num no-toc no-ref heading settled" id="profile-and-date"><span class="content">Draft Community Group Report, <time class="dt-updated" datetime="2023-08-22">22 August 2023</time></span></h2>
610610
<div data-fill-with="spec-metadata">
611611
<dl>
612612
<dt>This version:
@@ -618,7 +618,7 @@ <h2 class="no-num no-toc no-ref heading settled" id="profile-and-date"><span cla
618618
</dl>
619619
</div>
620620
<div data-fill-with="warning"></div>
621-
<p class="copyright" data-fill-with="copyright"><a href="https://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2022 <a href="https://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup> (<a href="https://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a href="https://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>, <a href="https://www.keio.ac.jp/">Keio</a>, <a href="https://ev.buaa.edu.cn/">Beihang</a>). W3C <a href="https://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="https://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document" rel="license">permissive document license</a> rules apply. </p>
621+
<p class="copyright" data-fill-with="copyright"><a href="https://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2023 <a href="https://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup> (<a href="https://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a href="https://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>, <a href="https://www.keio.ac.jp/">Keio</a>, <a href="https://ev.buaa.edu.cn/">Beihang</a>). W3C <a href="https://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="https://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document" rel="license">permissive document license</a> rules apply. </p>
622622
<hr title="Separator for header">
623623
</div>
624624
<div class="p-summary" data-fill-with="abstract">
@@ -705,6 +705,7 @@ <h2 class="no-num no-toc no-ref" id="contents">Table of Contents</h2>
705705
</nav>
706706
<main>
707707
<p>This specification is not a W3C Standard nor is it on the W3C Standards Track. Learn more about <a href="https://www.w3.org/community/">W3C Community and Business Groups</a>. <a href="https://github.com/OwnYourData/soya/issues">GitHub Issues</a> are preferred for discussion of this specification.</p>
708+
<p>Sections of this document have also been submitted to <a href="https://icodse.org/">ICoDSE 2023</a> as part of a paper.</p>
708709
<h3 class="heading settled" id="history"><span class="content">History</span></h3>
709710
<ul>
710711
<li data-md>
@@ -759,12 +760,12 @@ <h3 class="heading settled" data-level="1.2" id="goals"><span class="secno">1.2.
759760
<p><strong>Decentralised:</strong> avoid any centralized components or addressing (i.e., use decentralized resource identifiers - <a data-link-type="dfn" href="#terms-dris" id="ref-for-terms-dris">DRIs</a> - where possible)</p>
760761
</ul>
761762
<h3 class="heading settled" data-level="1.3" id="motivation"><span class="secno">1.3. </span><span class="content">Motivation</span><a class="self-link" href="#motivation"></a></h3>
762-
<p>The growing importance of data over the last two decades has encourage organizations across all sectors to undergo transformations towards data-driven operations. For many years, these organizations used relational databases as their main data solutions. However, the exponential growth of data has exposed the limitations of relational databases, such as the costly adaptation of database schemas and applications in response to evolving application needs and the lack of support for interoperability and exchange between heterogeneous data sources.</p>
763-
<p>RDF and the related semantic web technologies are appealing as a vendor neutral framework for using graph data as alternative solution to address the issues with relational databases. However, the perceived difficulty of use has made RDF and related semantic web technologies to be categorized as a niche technology. This is unfortunate because it restricts uptake and inhibit RDF from being viewed as a feasible choice for many use cases.</p>
764-
<p>To address these challenges, Semantic Overlay Architecture (SOyA), is proposed as a lightweight, semantic-web based approach for data integration and exchange. At the core of this approach is the SOyA structure, a YAML-based data model for describing graph data that is RDF-compatible, which consists of one or more soya:<a data-link-type="dfn" href="#terms-base" id="ref-for-terms-base④">Base</a>, which represent RDF classes and their properties, and zero or more soya:<a data-link-type="dfn" href="#terms-overlay" id="ref-for-terms-overlay①">Overlay</a>, which provides additional information and context to soya:Base as well as processing definitions. Furthermore, to support developers in conducting the most common data processing for graph data, a number of predefined soya:Overlay are defined, e.g., such as soya:AnnotationOverlay for data model description and soya:ValidationOverlay for constraint checking.</p>
763+
<p>The escalating significance of data in the past twenty years has propelled organizations in various sectors to shift towards data-centric operations. Traditionally, these entities relied on relational databases as their primary data repositories. Yet, the rapid surge in data volume has highlighted the drawbacks of such databases, notably their expensive adaptability requirements and the challenges in ensuring compatibility between different data sources.</p>
764+
<p>RDF, along with associated semantic web technologies, stands out as a neutral platform, offering graph data as a solution to the aforementioned relational database problems. Nevertheless, the perceived complexities in utilizing RDF have relegated it to a niche status, limiting its widespread adoption and diminishing its viability for many applications.</p>
765+
<p>To combat these issues, the Semantic Overlay Architecture (SOyA) has been introduced. This offers a nimble, semantic-web centric strategy for data amalgamation and exchange. At its heart lies the SOyA structure: a YAML-based data design that’s compatible with RDF. This structure includes one or more soya:<a data-link-type="dfn" href="#terms-base" id="ref-for-terms-base④">Base</a> entities, which denote RDF classes and attributes, and possibly several soya:<a data-link-type="dfn" href="#terms-overlay" id="ref-for-terms-overlay①">Overlay</a> elements that add depth and context to the soya:Base while also defining processing guidelines. Additionally, to aid developers with routine graph data operations, predefined soya:Overlay types are available, like soya:AnnotationOverlay for data model elaboration and soya:ValidationOverlay for checks and balances.</p>
765766
<h3 class="heading settled" data-level="1.4" id="lifecycle"><span class="secno">1.4. </span><span class="content">Lifecycle of RDF Data Engineering</span><a class="self-link" href="#lifecycle"></a></h3>
766-
<p>A generic lifecycle for construction and maintaining knowledge for knowledge graphs consists of four phases: (i) knowledge creation, (ii) knowledge hosting, (iii) knowledge curation, and (iv) knowledge deployment. The lifecycle is proposed to address two main challenges, which are (a) integrating data from heterogeneous sources in a scalable manner, and (b) to build a high-quality resource given the applications at hand. Complementary to this lifecycle three main roles can be identified in data-driven organizations: Data Engineers, who mainly focus on harnessing and collecting data, Knowledge Scientists, who aim to make reliable data, and Data Scientists, focusing on drawing value from data.</p>
767-
<p>The Semantic Overlay Architecture (SOyA) approach aims to reduce the barrier of entries for non-semantic web experts in utilizing semantic web technologies for addressing their data interoperability and exchange needs. More precisely, SOyA aims to support stakeholders in conducting the steps in the Knowledge Graph lifecycle described above.</p>
767+
<p>A standard process for constructing and sustaining knowledge in knowledge graphs is segmented into four stages: (i) knowledge creation, (ii) knowledge hosting, (iii) knowledge curation, and (iv) knowledge deployment. This process is designed to overcome two primary obstacles: firstly, merging data from diverse sources in an efficient manner, and secondly, crafting a superior-quality resource tailored to specific applications. Alongside this process, there are three key roles evident in data-driven entities: Data Engineers, who primarily gather and manage data; Knowledge Scientists, whose goal is to ensure data reliability; and Data Scientists, who extract insights from the data.</p>
768+
<p>The Semantic Overlay Architecture (SOyA) strategy is intended to simplify the entry for those unfamiliar with semantic web expertise, enabling them to harness semantic web tools for their data compatibility and exchange requirements. Specifically, SOyA seeks to guide users through the stages of the Knowledge Graph process mentioned earlier.</p>
768769
<p align="center"> <img src="res/concept.png" width="800"><br> <em>Figure 2: Conceptual view of SOyA</em> </p>
769770
<p>A <strong>Knowledge Scientist</strong> is responsible for designing the data model for certain applications. This person has considerable experience in data modeling, however, does not necessarily have the knowledge of Semantic Web technologies. Unlike Data Engineers, the focus is mainly on the data model and does not concern with populating the data model with data instances. The following requirements are identified:</p>
770771
<ul>

docs/res/overview.png

-4.04 KB
Loading

docs/res/overview.pptx

192 KB
Binary file not shown.

repo2/app/controllers/api/v1/resources_controller.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ def info
7070
end
7171

7272
def idaustria
73-
7473
STDOUT.sync = true
7574
logger = Logger.new(STDOUT)
7675
level ||= LOGLEVELS.index ENV.fetch("LOG_LEVEL","INFO")

repo2/app/controllers/api/v1/soya_controller.rb

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,18 @@ def read
1515
status: 404
1616
else
1717
if @store.soya_tag == "current"
18-
retval = {
19-
content: @store.item,
20-
"id": @store.id,
21-
"dri": @store.soya_name,
22-
"soya_name": @store.soya_name,
23-
}
18+
dri = @store.soya_name
2419
else
25-
retval = {
26-
content: @store.item,
27-
"id": @store.id,
28-
"dri": @store.soya_dri,
29-
"soya_name": @store.soya_name,
30-
}
31-
end
20+
dri = @store.soya_dri
21+
end
22+
retval = {
23+
data: @store.item,
24+
meta: @store.meta,
25+
"id": @store.id,
26+
"dri": dri,
27+
"soya_name": @store.soya_name,
28+
"soya_yaml": @store.soya_yaml
29+
}
3230
render json: retval.to_json,
3331
status: 200
3432
end
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class ApiController < ApplicationController
2+
def doorkeeper_unauthorized_render_options(error: nil)
3+
{ json: { error: "Not authorized" } }
4+
end
5+
6+
if !(ENV["AUTH"].to_s == "" || ENV["AUTH"].to_s.downcase == "false")
7+
# !!!fix-me ENV["AUTH"] == "optional" handling !!!
8+
if ENV["AUTH"].to_s.downcase != "optional"
9+
before_action -> { doorkeeper_authorize! :read, :write, :admin }, except: [:active, :idaustria]
10+
end
11+
end
12+
end

0 commit comments

Comments
 (0)