ssrq-schema
TEI-XML Schema der Sammlung Schweizerischer Rechtsquellen
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (3.7%) to scientific vocabulary
Repository
TEI-XML Schema der Sammlung Schweizerischer Rechtsquellen
Basic Info
- Host: GitHub
- Owner: SSRQ-SDS-FDS
- License: mit
- Language: Python
- Default Branch: main
- Homepage: https://schema.ssrq-sds-fds.ch
- Size: 52.3 MB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 4
- Releases: 11
Metadata Files
README.md
SSRQ-Schema 
Dieses Repository beinhaltet Quellcode und sonstige Dateien im Zusammenhang mit dem XML-Schema der Sammlung der Schweizerischen Rechtsquellen.
- SSRQ-Schema
Initiale Zielsetzung der Entwicklung
- Aktualisierung und Anpassung des bestehenden Schemas an Neuentwicklungen TEI-Guidelines
- Aufarbeitung von Rück-/Misständen
- Eindeutige Versionierung (Daten entsprechen einem Schema einer bestimmten Version)
- Testbarkeit
- Erzeugung einer Web-Dokumentation aus dem Schema heraus (ersetzt die Dokumentation im Wiki)
- Erarbeitung von XSLT-Skripten (o.ä.) zur Migration zwischen Datenständen
- Öffentlicher Zugriff auf vormals interne Dokumentation
Dokumentation
Versionierung
Die Versionierung des Schemas erfolgt gemäß Semantic Versioning. Dies erlaubt die eindeutige Zuordnung eines bestimmten Datenmodells zu einer bestimmten Version. Die Grundregel lautet:
MAJOR.MINOR.PATCH
Die Versionsnummer wird als Tag in der Git-History hinterlegt und ist zudem in der Datei
pyproject.toml in der Tabelle ssrq.schema.meta hinterlegt. Die kompilierten Versionen des
Schemas folgen dem Muster tei-ssrq-schema-version.(rng|odd) und verwenden die in dieser
Projektkonfiguration hinterlegte Versionsnummer.
Was ist wo?
Das Repository ist wie folgt aufgeteilt:
ssrq-schema/
├─ .github/
├─ src/
│ ├─ docs/
│ ├─ schema/
│ │ ├─ commons/
│ │ ├─ elements/
│ │ ├─ examples/
│ │ ├─ main.odd.xml
├─ utils/
│ ├─ commons/
│ ├─ docs/
│ ├─ schema/
├─ .gitignore
├─ .gitmodules
├─ CITATION.cff
├─ LICENSE
├─ mkdocs.yml
├─ poetry.lock
├─ pyproject.toml
├─ README.md
├─ Taskfile
src: hier befinden sich die Quelldateien des Schemas sowie Teile der Dokumentation (.md), die nicht Teil des ODDs sindtests: der Name sagt esbuild: dieser Ordner wird dynamisch generiert und steht nicht unter Versionskontrolle; hier befinden sich die kompilierten Schemadateien sowie die HTML-Doku
src/docs
Siehe Erzeugung der Dokumentation.
src/schema
- der Unterordner
elementsenthält die Schema-Deklarationen je Element; pro spezifizierten Element wird eine Datei nach dem Mustername.odd.xmlerstellt – sofern verschiedene Spezifikationen für unt. Typen (Einleitung, Transkripte, etc.) festgelegt werden, wird der Typ mit-typean den Namen angehängt - der Unterordner
commonsenthält Spezifikationen, die von verschiedenen Teilen des Schemas wiederverwendet werdenclasses.odd.xml: Klassendefinitionenconstrains.odd.xml: globale Schematron-Regelncontent.odd.xml: Inhaltstypendatatypes.odd.xml: Datentypen, die als Inhalt für Attribute oder Elemente verwendet werdenmodules.odd.xml: SSRQ-spezifische Module in Ergänzung der TEIpatterns.odd.xml: sog. Patterns, die als Inhaltsmodelle an verschiedenen Stellen verwendet werden – bspw. das Muster für Personen-IDs
- konkrete Schemadeklrationen werden auf der obersten Ebene festgelegt; die benötigten Bestandteile werden hier eingebunden
src/utils/schema/lib/tei_stylesheets
Die Stylesheets der TEI werden als git submodule eingebunden. Um die Version der Stylesheets und
damit auch die zugrunde liegende Version der TEI-Richtlinien zu aktualisieren kann man wie folgt
vorgehen:
git submodule set-branch -b
Technisches Setup
Verwendete Software / Technologien
Einrichtung / Anforderungen an die Umgebung
Das Repository wird regulär über git clone ausgecheckt. Für die vollständige Funktionalität
müssen dann noch die Git-Submodule initialisiert werden:
sh
git submodule update --init --recursive
Für die Kompilierung des Schemas sowie die Ausführung der Tests ist es erforderlich, dass eine
JAVA-Laufzeitumgebung sowie Python in Version 3.11 auf dem System installiert ist. Ferner ist
es erforderlich, dass der Python-Paketmanager poetry installiert ist.
Alle weiteren Abhängigkeiten können dann über folgenden Befehl install werden
sh
sh ./Taskfile install
Wiederholt ausgeführte Aufgaben (bspw. Ausführung der Tests) sind im sog. Taskfile
gebündelt. Für die einfachere Benutzung empfiehlt es sich in der lokalen Shell-Konfigurationen
einen Alias für das Taskfile nach dem Schema alias run=./Taskfile einzurichten, dann lassen
sich die diversen Aufgaben nach folgendem Muster ausführen:
sh
run test
Weitere Parameter (bspw. -s um print-Statement immer anzuzeigen) können einfach übergeben werden:
sh
run test -s
Anpassung
Anpassung von Übersetzungen
Das Schema ist in vier verschiedene Sprachen übersetzt: de, fr (sowie z.T. en und it)
Beschreibungen von Elementen werden i.d.R. in Deutsch, Englisch und Franzözisch verfasst. Die
Spezifikation eines Element (siehe /src/elements) sollte immer ein Element <desc/> je
Sprache enthalten. Für das Element <cell/> sieht das bspw. so aus:
xml
<desc xml:lang="de" versionDate="2023-03-03">Auszeichnung von Tabellenzellen.</desc>
<desc xml:lang="en" versionDate="2023-03-03">Table cell mark-up.</desc>
<desc xml:lang="fr" versionDate="2023-03-03">Balisage des cellules de tableau.</desc>
Neben der Sprache sollte das Attribut @versionDate verwendet werden.
Beschreibungen von Attributwerten werden in der z.T. in der digitalen Edition verwendet und müssen in diesen Fällen immer in allen vier Sprachen angelegt werden. Dies kann folgendermaßen aussehen:
xml
<valItem ident="Sack">
<desc xml:lang="de" versionDate="2023-03-17">Sack</desc>
<desc xml:lang="de" type="plural" versionDate="2023-03-17">Säcke</desc>
<desc xml:lang="fr" versionDate="2023-03-17">sac</desc>
<desc xml:lang="fr" type="plural" versionDate="2023-03-17">sacs</desc>
<desc xml:lang="en" versionDate="2023-03-17">bag</desc>
<desc xml:lang="en" type="plural" versionDate="2023-03-17">bags</desc>
<desc xml:lang="it" versionDate="2023-03-17">sacchetto,</desc>
<desc xml:lang="it" type="plural" versionDate="2023-03-17">sacchetti</desc>
</valItem>
Anpassung von Inhaltstypen
ToDo
Anpassung von Attributwerten
Todo
Anpassung / Erstellung von Tests
Die im Schema festgelegten Regeln werden automatisch mit pytest überprüft. Hierfür müssen
Testfälle definiert werden. Tests werden im Unterordner test erstellt. Es wird zwischen
Tests, die allgemeine Bedingungen des Schema prüfen, und elementspezifischen Tests unterschieden.
Allgemeine Tests befinden sich gemeinsam mit den Konfigurationsdateien (conftest.py) auf der
obersten Ebene. Elementspezifische Tests befinden sich in test/element. Nach Möglichkeit
sollten immer mehrere Fälle je Test überprüft werden -- siehe hierzu
Parametrizing fixtures and test functions.
Im Testfile eines Elements müssen zunächst die benötigten Module importiert werden.
```python import pytest from ssrq_cli.validate.xml import RNGJingValidator
from main import Schema
from ..conftest import SimpleTEIWriter ```
Anschließend können die Tests erstellt werden. Hierbei wird zwischen Tests zum Prüfen von RELAXNG- und Schematron-Regeln unterschieden (siehe bspw. test_idno.py). Die Testdefinition ist dabei weitestgehend an der Triple-A-Rule (Arrange-Act-Assert) orientiert und folgt typischerweise folgendem Muster:
```python
ARRANGE
@pytest.mark.parametrize(
"name, markup, result",
[
(
"valid-text",
" foo bar foo foo hallo welt! hallo welt!
# ACT & ASSERT innerhalb der generischen Funktion `test_element_with_rng`
test_element_with_rng("text", name, markup, result, False)
```
Sollen nur die Tests eines Elements ausgeführt werden, dann kann dazu folgender Befehl verwendet werden:
sh
run test tests/src/schema/elements/test_cell.py
Links zwischen Bestandteilen des Schemas und der (übrigen) Dokuseite
Aus dem Schema wird statisch eine Dokumentationsseite erzeugt (siehe oben). Einige Bestandteile
dieser Seite liegen statisch als .md-Dateien vor. Verknüpfungen zwischen Schema und diesen
Einzeldateien (oder umgekehrt) können über direkten Verweis auf die jeweilige Datei vorgenommen
werden.
Aus dem Schema heraus:
xml
<ref target="print.md"
`
Oder aus einer Markdown-Datei auf ein Element:
md
Der Tag [TEI][tei.de.md]
Die relative Pfaden (von a zu b) werden während des Build-Prozesses automatisch aufgelöst und müssen nicht händisch nachgeführt werden.
Schema erzeugen
Erzeugung einer neuen Version und Upload
Die Version eines Schemas ist je Inhaltstyp in der Datei pyproject.toml festgelegt. Sieh
hierzu den Abschnitt Versionierung. Der Befehl
sh
run compile
erzeugt die jeweiligen Schemadateien. Je Inhaltstyp werden eine .odd sowie eine .rng im
Ordner /build gespeichert.
Erzeugung der Dokumentation
Die Dokumentation für das Schema zur Validierung der Transkriptionen der ‚Stücke‘ (der Quelldokumente) wird aus dem ODD selbst erzeugt. Mithilfe des Dokumentations-Frameworks mkdocs wird eine statische HTML-Seite erzeugt. Diese beinhaltet sowohl die Dokumentation der einzelnen Tags als auch erläuternde Texte zu philologischen Grundlagenentscheidungen.
Befehle
run serve-docs: Erzeugt die Dokumentation und startet zugleich einen Webserver (gedacht für die lokale Entwicklung)run build-docs: Generiert die statische Dokumentationsseite. Das Ergebnis wird im Ordner/siteabgelegt.
Datei- / Ordnerstruktur
Die Quelldateien für die Dokumentation sind einerseits die einzelnen Elementdefinitionen, diese
befinden sich /src/elements und andererseits spezifische Dateien für die Dokuseite:
mkdocs.yml: Konfigurationsdatei fürmkdocs; enthält ebenso Übersetzungen für die Navigationutils/docs/odd2md.py: Python-Skript zur Umwandlung der ODD-Datei in einzelne Markdown-Dateien je Element (Quelle ist ein kompiliertes ODD)utils/docs/doc_hooks.py: Hook (‚Event-Skript‘), welches vonmkdocsbeim Start aufgerufen wird – der Hook bindet wiederumodd2md.pyeinsrc/docs: grundlegende Quelldateien für die Dokuseiteindex.md: Startseite (das Kürzel.deoder.frverweist auf die jeweilige Sprachversion)assets: CSS, Bilddateien usw.base: Markdowndateien mit statischen Beschreibungstexten (bspw. Datierungsrichtlinien)elements: leerer Ordner, in welchen die Markdowndateien je Element temporär gespeichert werdentranslations: Übersetzungen für Bestandteile des UIs / des Inhalts
Autor:innen
- Bastian Politycki – Swiss Law Sources
- Christian Sonder – Swiss Law Sources
- Pascale Sutter – Swiss Law Sources
Lizenzierung
Siehe LICENSE.
Owner
- Name: Rechtsquellenstiftung des Schweizerischen Juristenvereins
- Login: SSRQ-SDS-FDS
- Kind: organization
- Email: info@ssrq-sds-fds.ch
- Location: St. Gallen
- Website: www.ssrq-sds-fds.ch
- Repositories: 1
- Profile: https://github.com/SSRQ-SDS-FDS
Research institution that publishes sources of old law up to 1798 in the collection of Swiss law sources.
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Politycki" given-names: "Bastian" orcid: "https://orcid.org/0000-0002-6308-2424" - family-names: "Sonder" given-names: "Christian" - family-names: "Sutter" given-names: "Pascale" orcid: "https://orcid.org/0000-0003-4348-4394" title: "TEI-XML Schema der Sammlung Schweizerischer Rechtsquellen" version: 1.0.0-alpha.1 url: "https://github.com/SSRQ-SDS-FDS/ssrq-schema"
GitHub Events
Total
- Release event: 7
- Delete event: 125
- Issue comment event: 41
- Push event: 688
- Pull request review comment event: 6
- Pull request review event: 80
- Pull request event: 240
- Create event: 123
Last Year
- Release event: 7
- Delete event: 125
- Issue comment event: 41
- Push event: 688
- Pull request review comment event: 6
- Pull request review event: 80
- Pull request event: 240
- Create event: 123
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 2
- Total pull requests: 213
- Average time to close issues: about 20 hours
- Average time to close pull requests: 4 days
- Total issue authors: 1
- Total pull request authors: 4
- Average comments per issue: 0.0
- Average comments per pull request: 0.23
- Merged pull requests: 142
- Bot issues: 0
- Bot pull requests: 95
Past Year
- Issues: 0
- Pull requests: 85
- Average time to close issues: N/A
- Average time to close pull requests: 3 days
- Issue authors: 0
- Pull request authors: 4
- Average comments per issue: 0
- Average comments per pull request: 0.13
- Merged pull requests: 58
- Bot issues: 0
- Bot pull requests: 13
Top Authors
Issue Authors
- ChristianSonderUniSG (3)
- dependabot[bot] (2)
- Bpolitycki (1)
Pull Request Authors
- dependabot[bot] (192)
- ChristianSonderUniSG (86)
- Bpolitycki (45)
- PascaleSSRQ (14)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- Bpolitycki/setup-xmllint-action 1.0.1 composite
- abatilo/actions-poetry v2 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- webfactory/ssh-agent v0.7.0 composite
- Bpolitycki/setup-xmllint-action 1.0.1 composite
- abatilo/actions-poetry v2 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- webfactory/ssh-agent v0.7.0 composite
- aiohttp 3.8.4 develop
- aiosignal 1.3.1 develop
- async-timeout 4.0.2 develop
- attrs 23.1.0 develop
- black 23.3.0 develop
- cfgv 3.3.1 develop
- click 8.1.3 develop
- colorama 0.4.6 develop
- commonmark 0.9.1 develop
- distlib 0.3.7 develop
- elementpath 4.1.2 develop
- execnet 1.9.0 develop
- filelock 3.12.2 develop
- frozenlist 1.3.3 develop
- ghp-import 2.1.0 develop
- identify 2.5.26 develop
- iniconfig 2.0.0 develop
- jinja2 3.1.2 develop
- lxml 4.9.2 develop
- markdown 3.3.7 develop
- markupsafe 2.1.2 develop
- mergedeep 1.3.4 develop
- mkdocs 1.4.3 develop
- mkdocs-material 9.1.15 develop
- mkdocs-material-extensions 1.1.1 develop
- mkdocs-static-i18n 0.56 develop
- multidict 6.0.4 develop
- mypy 1.3.0 develop
- mypy-extensions 1.0.0 develop
- nodeenv 1.8.0 develop
- packaging 23.1 develop
- pathspec 0.11.1 develop
- platformdirs 3.5.1 develop
- pluggy 1.0.0 develop
- pre-commit 3.3.3 develop
- pygments 2.15.1 develop
- pymdown-extensions 10.0.1 develop
- pyschval 0.2.0 develop
- pytest 7.3.1 develop
- pytest-xdist 3.3.1 develop
- python-dateutil 2.8.2 develop
- pyyaml 6.0 develop
- pyyaml-env-tag 0.1 develop
- regex 2023.5.5 develop
- rich 12.6.0 develop
- ruff 0.0.261 develop
- setuptools 68.0.0 develop
- shellingham 1.5.0.post1 develop
- six 1.16.0 develop
- snakemd 2.1.0 develop
- ssrq-cli 0.6.1 develop
- tomli-w 1.0.0 develop
- typer 0.7.0 develop
- types-requests 2.31.0.1 develop
- types-urllib3 1.26.25.13 develop
- virtualenv 20.24.1 develop
- watchdog 3.0.0 develop
- yarl 1.9.2 develop
- certifi 2023.5.7
- charset-normalizer 3.1.0
- idna 3.4
- pydantic 1.10.7
- requests 2.30.0
- saxonche 12.2.0
- saxonche-stubs 0.4.0
- semver 2.13.0
- typing-extensions 4.5.0
- urllib3 2.0.2
- pydantic ^1.10.5
- python ^3.11
- requests ^2.30.0
- saxonche ^12.0.0
- saxonche-stubs ^0.4.0
- semver ^2.13.0
- actions/setup-python v4 composite
- webfactory/ssh-agent v0.7.0 composite