├── .gitignore ├── CHANGELOG.md ├── Gemfile ├── LICENSE ├── Makefile ├── README.md ├── RELEASE.md ├── _config.yml ├── _includes └── toc.html ├── _layouts └── default.html ├── assets ├── css │ ├── bo-ghp.css │ ├── side-menu.css │ └── style.css ├── img │ ├── info-box-icon.png │ └── info-box-icon_small.png └── js │ └── ui.js ├── bin ├── include_markdown.rb └── pdf2png.workflow │ └── Contents │ ├── Info.plist │ ├── QuickLook │ └── Preview.png │ └── document.wflow ├── handreichung_opendata.md ├── handreichung_opendata.pdf ├── images ├── B_RBm_Skzl_Logo_DE_V_PW_RGB.png ├── datenrubrik-01.png ├── datenrubrik-dokument-erzeugen.png ├── datenrubrik-hochladen.png ├── datenrubrik-startseite.png ├── datenrubrik-verlinkung.png ├── datensaetze_vornamen.png ├── eu_efre_zusatz_unten.png ├── format-example-tree.pdf ├── format-example-tree.png ├── format-example-tree_lor2021.graffle │ ├── data.plist │ └── image1.pdf ├── format-example-tree_lor2021.pdf ├── format-example-tree_lor2021.png ├── hvd_category_eingabe.png ├── metadaten_daten.pdf ├── metadaten_daten.png ├── musterdatensatz_beispiel.png ├── musterdatensatz_datenportal.png ├── musterdatensatz_eingabe.png ├── offene_daten_uebersicht.pdf ├── offene_daten_uebersicht.png ├── opendata-sise-imperia.png ├── output_datenrubrik.pdf ├── output_datenrubrik.png ├── output_simplesearch.pdf ├── output_simplesearch.png ├── schritt-für-schritt.pdf ├── schritt-für-schritt.png ├── screenshot_dashboard.png ├── screenshot_einloggen.png ├── screenshot_follow_category.png ├── screenshot_menue.png ├── screenshot_neuer_datensatz.png ├── screenshot_pw_zuruecksetzen.png ├── screenshot_pw_zuruecksetzen_anfordern.png ├── screenshot_ressource_hinzufügen.png ├── screenshot_user_profile.png ├── senod-logo.png ├── title.png ├── vera_musterer_avatar.png ├── veroeffentlichungsweg_waehlen.pdf ├── veroeffentlichungsweg_waehlen.png ├── veroeffentlichungsweg_waehlen_90.png └── xkcd_iso_8601.png ├── index.md ├── parts ├── bildverzeichnis.gfm ├── bildverzeichnis.pandoc ├── box_prefix.gfm ├── box_prefix.pandoc ├── box_suffix.gfm ├── box_suffix.pandoc ├── example_tabular_data.gfm ├── example_tabular_data.pandoc ├── grafik_veroeffentlichungsweg.gfm ├── grafik_veroeffentlichungsweg.pandoc ├── grusswort.md ├── latex_impressum.template.md ├── latex_preamble.md ├── pages_impressum.template.md ├── pages_title.md └── simplesearch-api.md ├── simplesearch-api └── index.md └── template ├── default.latex ├── listings-setup.tex └── metadata_yml.template /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .vscode 3 | _site 4 | temp 5 | material 6 | Gemfile.lock 7 | handreichung_opendata.docx 8 | 9 | parts/pages_impressum.md 10 | parts/latex_impressum.md 11 | template/metadata.yml -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## Development 4 | 5 | ## [2.0.1](https://github.com/berlinonline/open-data-handbuch/releases/tag/2.0.1) 6 | 7 | _(2024-11-18)_ 8 | 9 | - Change BerlinOnline company name to "BerlinOnline GmbH". 10 | 11 | ## [2.0.0](https://github.com/berlinonline/open-data-handbuch/releases/tag/2.0.0) 12 | 13 | _(2024-05-29)_ 14 | 15 | - New content about _High-value datasets_ has been added to the section about the [metadata schema](https://berlinonline.github.io/open-data-handbuch/#high-value-datasets) and the [glossary](https://berlinonline.github.io/open-data-handbuch/#glossar). 16 | - New content about the topic _Musterdatenkatalog/Musterdatensatz_ has been added to the section about the [metadata schema](https://berlinonline.github.io/open-data-handbuch/#musterdatensatz) and the [glossary](https://berlinonline.github.io/open-data-handbuch/#glossar). 17 | - Add content about Berlin's new open data strategy from 2023. 18 | - Extend the introduction for the new edition of the Open-Data-Handbuch. 19 | - Extend information about available online resources. 20 | - Removed information on the old GeonutzV license and its Berlin variant, which are no longer used. 21 | - Screenshots have been changed to reflect the current berlin.de design system. 22 | - The font in all illustrations has been changed from BMFChange to Wir.Berlin to reflect the [Berlin corporate design](https://wir.berlin/kampagnen/die-typo). 23 | - Various small changes in the text to reflect e.g. changes in the Imperia CMS, changes in the workflow etc. 24 | - Various corrections (dead links, typos etc.). 25 | - The former Twitter-account @OpenDataBerlin is no longer active, so datasets are no longer announced there. The corresponding text and image have been removed. In the future, we might decide to announce datasets again on a different channel. 26 | - Graphics and text in the print version now use the [Berlin Type font](https://wir.berlin/kampagnen/die-typo) instead of the old BMF Change font. 27 | - Remove attribution of European Union EFRE, since the Open-Data-Handbuch no longer uses these funds. 28 | - Change the title image to reflect the printed book. 29 | - Fix info about `detail`-method in SimpleSearch-docs (it's not always available). 30 | 31 | ## [1.2.1](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.2.1) 32 | 33 | _(2024-03-06)_ 34 | 35 | - Include documentation for the SimpleSearch-API at [/simplesearch-api](https://berlinonline.github.io/open-data-handbuch/simplesearch-api/). 36 | - Change default layout to show page title if present. 37 | 38 | ## [1.2.0](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.2.0) 39 | 40 | _(2023-05-15)_ 41 | 42 | - Publisher is now [Senatskanzlei Berlin](https://www.berlin.de/rbmskzl/): change links and logo. 43 | 44 | ## [1.1.0](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.1.0) 45 | 46 | _(2023-03-07)_ 47 | 48 | - Publisher is now [Senatsverwaltung für Inneres, Digitalisierung und Sport](https://www.berlin.de/sen/inneres/): change links and logo. 49 | 50 | ## [1.0.11](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.11) 51 | 52 | _(2022-11-16)_ 53 | 54 | - Add links to _Open-Data-Verordnung_ (OpenDataV), add OpenDataV and EGovG Bln to reference section. 55 | 56 | ## [1.0.10](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.10) 57 | 58 | _(2022-04-04)_ 59 | 60 | - Fix link to Berlin Open Data strategy document by using DNB's URN service – thanks [@hejjoe](https://github.com/hejjoe). 61 | 62 | ## [1.0.9](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.9) 63 | 64 | _(2021-12-01)_ 65 | 66 | - Update title graphic. 67 | - Add various references to ODIS-Resources. 68 | - Remove "improve this site"-link from template (it was wrong and not helpful), add link to issues in impressum. 69 | 70 | ## [1.0.8](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.8) 71 | 72 | _(2021-10-25)_ 73 | 74 | - Improve LOR example picture (fonts and shadows). 75 | 76 | ## [1.0.7](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.7) 77 | 78 | _(2021-10-07)_ 79 | 80 | - Update data and references regarding the LOR system (_Lebensweltlich Orientierte Räume_), to reflect the fact that new a new system of codes has been introduced on 1st January 2021, which replaces all codes except the ones for the _Bezirke_. 81 | - Introduce a reference to Datenregister tutorial video produced by ODIS. 82 | 83 | ## [1.0.6](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.6) 84 | 85 | _(2021-06-09)_ 86 | 87 | - Fix links to [EGovG Bln](https://gesetze.berlin.de/perma?a=EGovG_BE "Gesetz zur Förderung des E-Government (E-Government-Gesetz Berlin - EGovG Bln)"). 88 | - Add `calc` and `array` packages to LaTeX-template to deal with broken table generation in new pandoc (see https://github.com/Zettlr/Zettlr/pull/1566). 89 | - Remove anchor in link to changelog from PDF, because some PDF viewers create broken links from that (see https://github.com/latex3/hyperref/issues/110). 90 | 91 | ## [1.0.5](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.5) 92 | 93 | _(2020-11-20)_ 94 | 95 | - Add funding logos for EFRE and SenWEB to impressum. 96 | 97 | ## [1.0.4](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.4) 98 | 99 | _(2020-09-21)_ 100 | 101 | - Add recommendation to use "verständliche Sprache" for dataset and resource descriptions and link to relevant standards and documents by Senatsverwaltung für Inneres und Sport. 102 | 103 | ## [1.0.3](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.3) 104 | 105 | _(2020-08-31)_ 106 | 107 | - Add some additional information about the concept of organizations in the Datenregister. 108 | - Turn some e-mail addresses into clickable links. 109 | 110 | ## [1.0.2](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.2) 111 | 112 | _(2020-05-27)_ 113 | 114 | - Change the address for "Open-Data-Networking" to opendata@senweb.berlin.de. 115 | - Fix typo in introduction – thanks [@schwarzsascha](https://github.com/schwarzsascha). 116 | - Fix various other typos, make small adjustments in wording. 117 | - Thank contributors in changelog. 118 | 119 | ## [1.0.1](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.1) 120 | 121 | _(2019-11-07)_ 122 | 123 | - Fix LOR example graphic (all versions) – thanks [@tursics](https://github.com/tursics). 124 | - Add version number to document (all versions). 125 | - Fix icon in info boxes (print-pdf version). 126 | - Add responsive table of contents (online version). 127 | - Move custom CSS to own stylesheet (online version). 128 | 129 | ## [1.0.0](https://github.com/berlinonline/open-data-handbuch/releases/tag/1.0.0) 130 | 131 | _(2019-11-05)_ 132 | 133 | - Initial version with HTML (via Github-flavoured Markdown) and PDF targets. 134 | - Content is identical to the printed book (October 2019). 135 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | gem 'github-pages', group: :jekyll_plugins 3 | gem 'csv' 4 | gem 'webrick' -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Knud Möller, BerlinOnline GmbH 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: pdf 2 | pdf: clean temp/date.txt parts/latex_impressum.md | temp 3 | @echo "generate metadata ..." 4 | @ruby bin/include_markdown.rb -s txt -f temp -p template/metadata_yml.template > template/metadata.yml 5 | @echo "combining parts ..." 6 | @cat parts/latex_preamble.md handreichung_opendata.md parts/latex_impressum.md > temp/pdf_source.md 7 | @echo "replacing
with double space ..." 8 | @sed 's:
: :g' temp/pdf_source.md > temp/handreichung_opendata_01.md 9 | @echo "remove gfm image widths and centering ..." 10 | @sed -e 's:{\:width=".*px"}::' temp/handreichung_opendata_01.md | sed -e 's:{\: .centered }::' > temp/handreichung_opendata_02.md 11 | @echo "include markdown snippets ..." 12 | @ruby bin/include_markdown.rb -p temp/handreichung_opendata_02.md -s pandoc > temp/handreichung_opendata_03.md 13 | @echo "rewrite link targets ..." 14 | @sed -E 's/@linktarget\(([^)]+)\)/\\hypertarget{\1}{\1}/' temp/handreichung_opendata_03.md > temp/handreichung_opendata_04.md 15 | @echo "rewrite links ..." 16 | @sed -E 's/@link\(([^)]+)\)/\\hyperlink{\1}{\1}/g' temp/handreichung_opendata_04.md > temp/handreichung_opendata_05.md 17 | @echo "creating pdf ..." 18 | @pandoc --listings -H template/listings-setup.tex -V lang=de --template=template/default.latex --variable urlcolor=cyan temp/handreichung_opendata_05.md template/metadata.yml --pdf-engine=pdflatex --toc -o handreichung_opendata.pdf 19 | 20 | .PHONY: indesign 21 | indesign: clean temp/handreichung_opendata.nolatex.md | temp 22 | @echo "replacing
with double space ..." 23 | @sed 's:
: :g' temp/handreichung_opendata.nolatex.md > temp/handreichung_opendata.nolatex_01.md 24 | @echo "creating indesign file ..." 25 | @pandoc temp/handreichung_opendata.nolatex_01.md -s -o handreichung_opendata.icml 26 | 27 | .PHONY: docx 28 | docx: clean temp/handreichung_opendata.nolatex.md | temp 29 | @echo "replacing
with double space ..." 30 | @sed 's:
: :g' temp/handreichung_opendata.nolatex.md > temp/handreichung_opendata.nolatex_01.md 31 | @echo "creating docx file ..." 32 | @pandoc temp/handreichung_opendata.nolatex_01.md -s -o handreichung_opendata.docx 33 | 34 | .PHONY: gfm 35 | gfm: clean images/format-example-tree.png images/metadaten_daten.png images/offene_daten_uebersicht.png images/output_datenrubrik.png images/output_simplesearch.png images/schritt-für-schritt.png images/veroeffentlichungsweg_waehlen.png parts/example_tabular_data.gfm parts/pages_impressum.md | temp 36 | @echo "combining parts ..." 37 | @cat handreichung_opendata.md parts/pages_impressum.md > temp/handreichung_opendata_01.md 38 | @echo "move headers one level down ..." 39 | @sed 's/^#/##/' temp/handreichung_opendata_01.md > temp/handreichung_opendata_01b.md 40 | @echo "rewrite header anchors ..." 41 | @sed -E 's/^(#+ )(.+) {#(.+)}$$/\1\2<\/a>/' temp/handreichung_opendata_01b.md > temp/handreichung_opendata_02.md 42 | @echo "rewrite image references ..." 43 | @sed -e 's: (s\. Abb\. \\ref{fig\:.*}): (s. Abbildung):' temp/handreichung_opendata_02.md > temp/handreichung_opendata_03.md 44 | @echo "remove image labels ..." 45 | @sed -e 's:\\label{fig\:.*}]:]:' temp/handreichung_opendata_03.md > temp/handreichung_opendata_04.md 46 | @echo "remove pdf image widths ..." 47 | @sed -e 's:{width=.*px}::' temp/handreichung_opendata_04.md > temp/handreichung_opendata_05.md 48 | @echo "remove pdf image heights ..." 49 | @sed -e 's:{height=.*}::' temp/handreichung_opendata_05.md > temp/handreichung_opendata_06.md 50 | @echo "remove suppress numbering commands from headings ..." 51 | @sed -e 's: {-}::' temp/handreichung_opendata_06.md > temp/handreichung_opendata_07.md 52 | @echo "include markdown snippets ..." 53 | @ruby bin/include_markdown.rb -p temp/handreichung_opendata_07.md -s gfm > temp/handreichung_opendata_08.md 54 | @echo "join header parts of multiline tables ..." 55 | @sed 's:\\_ :\\_:g' temp/handreichung_opendata_08.md > temp/handreichung_opendata_09.md 56 | @echo "rewrite link targets ..." 57 | @sed -E 's/@linktarget\(([^)]+)\)/\1<\/a>/' temp/handreichung_opendata_09.md > temp/handreichung_opendata_10.md 58 | @echo "rewrite links ..." 59 | @sed -E 's/@link\(([^)]+)\)/[\1](#\1)/g' temp/handreichung_opendata_10.md > temp/handreichung_opendata_11.md 60 | @echo "unescape at-signs ..." 61 | @sed 's/\\@/@/' temp/handreichung_opendata_11.md > temp/handreichung_opendata_12.md 62 | @echo "add title matter ..." 63 | @cat parts/pages_title.md temp/handreichung_opendata_12.md > index.md 64 | 65 | .PHONY: temp/handreichung_opendata.nolatex.md 66 | temp/handreichung_opendata.nolatex.md: | temp 67 | @echo "removing latex commands ..." 68 | @grep -e "^\\\\" -v handreichung_opendata.md > temp/handreichung_opendata.nolatex.md 69 | 70 | .PHONY: temp/images.csv 71 | temp/images.csv: | temp 72 | @echo "extracting images from markdown ..." 73 | @echo "path,Title,Description" > temp/images.csv 74 | @grep '!\[' handreichung_opendata.md | sed -E 's/^!\[(.+)\\label\{fig.+}\]\((.+) (".+")\).*$$/"\2","\1",\3/' >> temp/images.csv 75 | 76 | images/format-example-tree.png: images/format-example-tree.pdf 77 | @echo "converting images/format-example-tree.pdf ..." 78 | @automator -i images/format-example-tree.pdf -D OUTPATH=images bin/pdf2png.workflow 79 | 80 | images/metadaten_daten.png: images/metadaten_daten.pdf 81 | @echo "converting images/metadaten_daten.pdf ..." 82 | @automator -i images/metadaten_daten.pdf -D OUTPATH=images bin/pdf2png.workflow 83 | 84 | images/offene_daten_uebersicht.png: images/offene_daten_uebersicht.pdf 85 | @echo "converting images/offene_daten_uebersicht.pdf ..." 86 | @automator -i images/offene_daten_uebersicht.pdf -D OUTPATH=images bin/pdf2png.workflow 87 | 88 | images/output_datenrubrik.png: images/output_datenrubrik.pdf 89 | @echo "converting images/output_datenrubrik.pdf ..." 90 | @automator -i images/output_datenrubrik.pdf -D OUTPATH=images bin/pdf2png.workflow 91 | 92 | images/output_simplesearch.png: images/output_simplesearch.pdf 93 | @echo "converting images/output_simplesearch.pdf ..." 94 | @automator -i images/output_simplesearch.pdf -D OUTPATH=images bin/pdf2png.workflow 95 | 96 | images/schritt-für-schritt.png: images/schritt-für-schritt.pdf 97 | @echo "converting images/schritt-für-schritt.pdf ..." 98 | @automator -i images/schritt-für-schritt.pdf -D OUTPATH=images bin/pdf2png.workflow 99 | 100 | images/veroeffentlichungsweg_waehlen.png: images/veroeffentlichungsweg_waehlen.pdf 101 | @echo "converting images/veroeffentlichungsweg_waehlen.pdf ..." 102 | @automator -i images/veroeffentlichungsweg_waehlen.pdf -D OUTPATH=images bin/pdf2png.workflow 103 | 104 | parts/example_tabular_data.gfm: parts/example_tabular_data.pandoc 105 | @echo "converting parts/example_tabular_data.pandoc to gfm ..." 106 | @pandoc --to=gfm parts/example_tabular_data.pandoc > parts/example_tabular_data.gfm 107 | 108 | parts/pages_impressum.md: temp/date.txt 109 | @echo "generate impressum ..." 110 | @ruby bin/include_markdown.rb -s txt -f temp -p parts/pages_impressum.template.md > $@ 111 | 112 | parts/latex_impressum.md: temp/date.txt 113 | @echo "generate impressum ..." 114 | @ruby bin/include_markdown.rb -s txt -f temp -p parts/latex_impressum.template.md > $@ 115 | 116 | simplesearch-api/index.md: parts/pages_impressum.md 117 | @echo "generate Simplesearch API documentation ..." 118 | @cat parts/simplesearch-api.md $< > $@ 119 | @echo "fix links ..." 120 | # mac-sed syntax: 121 | @sed -i '' "s|# Impressum {-}|## Impressum|" $@ 122 | @sed -i '' "s|(images/|(../images/|g" $@ 123 | @sed -i '' "s|(#quellenverzeichnis)|(../#quellenverzeichnis)|" $@ 124 | @sed -i '' "s|(#bildverzeichnis)|(../#bildverzeichnis)|" $@ 125 | 126 | .PHONY: temp/date.txt 127 | temp/date.txt: | temp 128 | @echo "write current date ..." 129 | @date "+%Y-%m-%d" > temp/date.txt 130 | 131 | .PHONY: clean 132 | clean: 133 | @echo "emptying temp folder ..." 134 | @rm -rf temp 135 | 136 | .PHONY: serve-gfm 137 | serve-gfm: gfm 138 | @echo "serving local version of online handbook ..." 139 | @bundle exec jekyll serve 140 | 141 | temp: 142 | @echo "creating temp directory ..." 143 | @mkdir -p temp 144 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Berliner Open-Data-Handbuch 2 | 3 | This is the source for the "Berliner Open-Data-Handbuch". From the source, different targets can be generated. See the [Makefile](/Makefile) for details. 4 | 5 | The following versions exist: 6 | 7 | - A professionally produced printed version. The production of this version is not done directly from source, but involves several manual steps. The content is mostly identical, but the printed version contains some things that aren't included in the source (background graphics, an introductory greeting, etc.). The version of the source that was used as the basis for the printed version is tagged as [version 1.0.0](https://github.com/berlinonline/open-data-handbuch/tree/1.0.0). 8 | - A PDF generated directly from the source via [pandoc](https://pandoc.org) (and additional processing). 9 | - An HTML version generated directly from the source via [jekyll](https://jekyllrb.com) (and additional processing) and served through github pages: https://berlinonline.github.io/open-data-handbuch/ 10 | 11 | If you have issues or suggestions for future content, you're welcome to raise an issue here: https://github.com/berlinonline/open-data-handbuch/issues. Pull requests are welcome as well! 12 | 13 | ## License 14 | 15 | The text, all markdown sources and PDF artifacts of the _Berliner Open-Data-Handbuch_ are published under [Creative Commons Namensnennung 4.0 International Lizenz](https://creativecommons.org/licenses/by/4.0/deed.de) (CC BY 4.0). 16 | 17 | For the licenses to the images contained in the _Berliner Open-Data-Handbuch_, please refer to the [Bildverzeichnis](https://berlinonline.github.io/open-data-handbuch/#bildverzeichnis). 18 | 19 | All code, including the `Makefile` and the source code in `/bin` is published under the [MIT License](/LICENSE). 20 | 21 | -------------------------------------------------------------------------------- /RELEASE.md: -------------------------------------------------------------------------------- 1 | # New Release Process 2 | 3 | - during development, add changes under `DEVELOPMENT` header at the top of `CHANGELOG.md` 4 | - add new version header to `CHANGELOG.md` 5 | - move changes from `DEVELOPMENT` to new version header 6 | - adjust version link in `parts/pages_impressum.template.md` 7 | - adjust version link in `parts/latex_impressum.template.md` 8 | - add, commit, push all changes 9 | - create new tag with version number: `git tag {VERSION_NUMBER}` 10 | - push tag: `git push --tags` -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: Das Berliner Open-Data-Handbuch 2 | description: Nachschlagewerk zum Thema Offene Daten für die Berliner Verwaltung 3 | exclude: [ bin, parts, temp, template, handreichung_opendata.md, Makefile, CHANGELOG.md, README.md, Gemfile, Gemfile.lock ] 4 | -------------------------------------------------------------------------------- /_includes/toc.html: -------------------------------------------------------------------------------- 1 | {% capture tocWorkspace %} 2 | {% comment %} 3 | Version 1.0.8 4 | https://github.com/allejo/jekyll-toc 5 | 6 | "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe 7 | 8 | Usage: 9 | {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %} 10 | 11 | Parameters: 12 | * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll 13 | 14 | Optional Parameters: 15 | * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC 16 | * class (string) : '' - a CSS class assigned to the TOC 17 | * id (string) : '' - an ID to assigned to the TOC 18 | * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored 19 | * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored 20 | * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list 21 | * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level 22 | * baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content 23 | * anchor_class (string) : '' - add custom class(es) for each anchor element 24 | 25 | Output: 26 | An ordered or unordered list representing the table of contents of a markdown block. This snippet will only 27 | generate the table of contents and will NOT output the markdown given to it 28 | {% endcomment %} 29 | 30 | {% capture my_toc %}{% endcapture %} 31 | {% assign orderedList = include.ordered | default: false %} 32 | {% assign minHeader = include.h_min | default: 1 %} 33 | {% assign maxHeader = include.h_max | default: 6 %} 34 | {% assign nodes = include.html | split: ' maxHeader %} 47 | {% continue %} 48 | {% endif %} 49 | 50 | {% if firstHeader %} 51 | {% assign firstHeader = false %} 52 | {% assign minHeader = headerLevel %} 53 | {% endif %} 54 | 55 | {% assign indentAmount = headerLevel | minus: minHeader %} 56 | {% assign _workspace = node | split: '' | first }}>{% endcapture %} 71 | {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} 72 | 73 | {% assign space = '' %} 74 | {% for i in (1..indentAmount) %} 75 | {% assign space = space | prepend: ' ' %} 76 | {% endfor %} 77 | 78 | {% unless include.item_class == blank %} 79 | {% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %} 80 | {% endunless %} 81 | 82 | {% capture heading_body %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %} 83 | {% capture my_toc %}{{ my_toc }} 84 | {{ space }}{{ listModifier }} {{ listItemClass }} [{{ heading_body | replace: "|", "\|" }}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %} 85 | {% endfor %} 86 | 87 | {% if include.class %} 88 | {% capture my_toc %}{:.{{ include.class }}} 89 | {{ my_toc | lstrip }}{% endcapture %} 90 | {% endif %} 91 | 92 | {% if include.id %} 93 | {% capture my_toc %}{: #{{ include.id }}} 94 | {{ my_toc | lstrip }}{% endcapture %} 95 | {% endif %} 96 | {% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }} -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {% seo %} 9 | 10 | 11 | 12 | 13 | 14 |
15 | 20 | 25 |
26 |
27 | {% assign title = site.title %} 28 | {% assign title_link = "/" %} 29 | {% if page.title %} 30 | {% assign title = page.title %} 31 | {% if page.path %} 32 | {% assign title_link = page.path %} 33 | {% endif %} 34 | {% endif %} 35 |

{{ title }}

36 | 37 | {{ content }} 38 |
39 |
40 |
41 | 42 | 43 | 44 | {% if site.google_analytics %} 45 | 53 | {% endif %} 54 | 55 | -------------------------------------------------------------------------------- /assets/css/bo-ghp.css: -------------------------------------------------------------------------------- 1 | .bo-box { 2 | background: no-repeat url(../img/info-box-icon_small.png) rgb(224, 239, 249); 3 | padding: 50px 15px 20px; 4 | margin-bottom: 1rem; 5 | border-radius: .25rem; 6 | } 7 | 8 | .bo-box p, 9 | .bo-box ul { 10 | margin-bottom: 8px; 11 | } 12 | 13 | .bo-box code { 14 | background-color: rgba(250, 150, 0, 0.3); 15 | } -------------------------------------------------------------------------------- /assets/css/side-menu.css: -------------------------------------------------------------------------------- 1 | /* 2 | Add transition to containers so they can push in and out. 3 | */ 4 | #layout, 5 | #menu, 6 | .menu-link, 7 | .menu-wrapper { 8 | -webkit-transition: all 0.2s ease-out; 9 | -moz-transition: all 0.2s ease-out; 10 | -ms-transition: all 0.2s ease-out; 11 | -o-transition: all 0.2s ease-out; 12 | transition: all 0.2s ease-out; 13 | } 14 | 15 | /* 16 | This is the parent `
` that contains the menu and the content area. 17 | */ 18 | #layout { 19 | position: relative; 20 | left: 0; 21 | padding-left: 0; 22 | } 23 | 24 | #layout.active #menu { 25 | left: 200px; 26 | width: 200px; 27 | } 28 | 29 | #layout.active .menu-wrapper { 30 | left: 200px; 31 | } 32 | 33 | /* 34 | The `#menu` `
` is the parent `
` that contains the `.pure-menu` that 35 | appears on the left side of the page. 36 | */ 37 | 38 | #menu { 39 | margin-left: -200px; /* "#menu" width */ 40 | padding-top: 5px; 41 | width: 200px; 42 | position: fixed; 43 | top: 0; 44 | left: 0; 45 | bottom: 0; 46 | z-index: 1000; /* so the menu or its navicon stays above all content */ 47 | background: #e1e4e8; 48 | overflow-y: auto; 49 | -webkit-overflow-scrolling: touch; 50 | } 51 | 52 | /* 53 | All anchors inside the menu should be styled like this. 54 | */ 55 | #menu a { 56 | color: inherit; 57 | border: none; 58 | padding: 0.6em 0 0.6em 0.6em; 59 | font-size: 16px; 60 | } 61 | 62 | 63 | .pure-menu { 64 | white-space: nowrap; 65 | } 66 | 67 | .pure-menu-list { 68 | list-style-type: none; 69 | } 70 | 71 | .bo-menu-item-wrapper { 72 | overflow: hidden; 73 | text-overflow: ellipsis; 74 | } 75 | 76 | /* 77 | Remove all background/borders, since we are applying them to #menu. 78 | */ 79 | .pure-menu, 80 | .pure-menu ul { 81 | border: none; 82 | background: transparent; 83 | color: #777; 84 | } 85 | 86 | /* 87 | Add that light border to separate items into groups. 88 | */ 89 | .pure-menu > ul > .pure-menu-item { 90 | margin-bottom: 15px; 91 | } 92 | 93 | .pure-menu > ul > .pure-menu-item > .bo-menu-item-wrapper { 94 | color: #24292e; 95 | font-weight: 500; 96 | } 97 | 98 | 99 | /* 100 | Change color of the anchor links on hover/focus. 101 | */ 102 | .bo-menu-item-wrapper:hover, 103 | .bo-menu-item-wrapper:focus { 104 | background: #0366d6; 105 | color: #fff; 106 | } 107 | 108 | 109 | /* -- Dynamic Button For Responsive Menu -------------------------------------*/ 110 | 111 | /* 112 | The button to open/close the Menu is custom-made and not part of Pure. Here's 113 | how it works: 114 | */ 115 | 116 | /* 117 | `.menu-link` represents the responsive menu toggle that shows/hides on 118 | small screens. 119 | */ 120 | .menu-wrapper { 121 | position: fixed; 122 | top: 0; 123 | left: 0; 124 | width: 100%; 125 | background: rgba(255, 255, 255, 0.7); 126 | } 127 | 128 | .menu-link { 129 | display: block; /* show this only on small screens */ 130 | position: relative; 131 | background: #000; 132 | background: rgba(0,0,0,0.7); 133 | font-size: 10px; /* change this value to increase/decrease button size */ 134 | z-index: 10; 135 | width: 52px; 136 | height: auto; 137 | padding: 2.1em 1.6em; 138 | } 139 | 140 | .menu-link:hover, 141 | .menu-link:focus { 142 | background: #000; 143 | } 144 | 145 | .menu-link span { 146 | position: relative; 147 | display: block; 148 | } 149 | 150 | .menu-link span, 151 | .menu-link span:before, 152 | .menu-link span:after { 153 | background-color: #fff; 154 | width: 100%; 155 | height: 0.2em; 156 | } 157 | 158 | .menu-link span:before, 159 | .menu-link span:after { 160 | position: absolute; 161 | margin-top: -0.6em; 162 | content: " "; 163 | } 164 | 165 | 166 | 167 | .menu-link span:after { 168 | margin-top: 0.6em; 169 | } 170 | 171 | 172 | /* -- Responsive Styles (Media Queries) ------------------------------------- */ 173 | 174 | @media (min-width: 1012px) { 175 | 176 | .header, 177 | .content { 178 | padding-left: 2em; 179 | padding-right: 2em; 180 | } 181 | 182 | #layout { 183 | padding-left: 200px; /* left col width "#menu" */ 184 | left: 0; 185 | } 186 | #menu { 187 | left: 200px; 188 | } 189 | 190 | .menu-wrapper { 191 | position: fixed; 192 | left: 200px; 193 | display: none; 194 | } 195 | 196 | #layout.active .menu-wrapper { 197 | left: 200px; 198 | } 199 | } 200 | 201 | @media (max-width: 1012px) { 202 | /* Only apply this when the window is small. Otherwise, the following 203 | case results in extra padding on the left: 204 | * Make the window small. 205 | * Tap the menu to trigger the active state. 206 | * Make the window large again. 207 | */ 208 | #layout.active { 209 | position: relative; 210 | left: 200px; 211 | } 212 | } 213 | 214 | 215 | /* Override content container margin to make space for burger menu */ 216 | 217 | #layout .my-5 { 218 | margin-top: 44px !important; 219 | } -------------------------------------------------------------------------------- /assets/img/info-box-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/assets/img/info-box-icon.png -------------------------------------------------------------------------------- /assets/img/info-box-icon_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/assets/img/info-box-icon_small.png -------------------------------------------------------------------------------- /assets/js/ui.js: -------------------------------------------------------------------------------- 1 | (function (window, document) { 2 | 3 | var layout = document.getElementById('layout'), 4 | menu = document.getElementById('menu'), 5 | menuLink = document.getElementById('menuLink'), 6 | content = document.getElementById('main'); 7 | 8 | function toggleClass(element, className) { 9 | var classes = element.className.split(/\s+/), 10 | length = classes.length, 11 | i = 0; 12 | 13 | for(; i < length; i++) { 14 | if (classes[i] === className) { 15 | classes.splice(i, 1); 16 | break; 17 | } 18 | } 19 | // The className is not found 20 | if (length === classes.length) { 21 | classes.push(className); 22 | } 23 | 24 | element.className = classes.join(' '); 25 | } 26 | 27 | function toggleAll(e) { 28 | var active = 'active'; 29 | 30 | e.preventDefault(); 31 | toggleClass(layout, active); 32 | toggleClass(menu, active); 33 | toggleClass(menuLink, active); 34 | } 35 | 36 | menuLink.onclick = function (e) { 37 | toggleAll(e); 38 | }; 39 | 40 | content.onclick = function(e) { 41 | if (menu.className.indexOf('active') !== -1) { 42 | toggleAll(e); 43 | } 44 | }; 45 | 46 | var el = document.getElementsByClassName("bo-menu-item-link"); 47 | for (let item of el) { 48 | item.outerHTML = "
" + item.outerHTML + "
"; 49 | } 50 | 51 | 52 | }(this, this.document)); -------------------------------------------------------------------------------- /bin/include_markdown.rb: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env ruby 2 | 3 | require 'optparse' 4 | 5 | options = { 6 | :parent_file => "index.md" , 7 | :parts_folder => "parts" , 8 | :suffix => "pandoc" 9 | } 10 | usage = "ruby include_markdown.rb [options]" 11 | 12 | OptionParser.new do |opts| 13 | opts.banner = usage 14 | opts.separator "" 15 | opts.separator "Options:" 16 | 17 | opts.on("-p", "--parentfile STRING", String, "Path to the file in which snippets are to be included. Default is 'index.md'.") do |parentfile| 18 | options[:parent_file] = parentfile 19 | end 20 | 21 | opts.on("-f", "--folder STRING", String, "Path to the folder containing snippets to be included. Default is 'parts'.") do |parts_folder| 22 | options[:parts_folder] = parts_folder 23 | end 24 | 25 | opts.on("-s", "--suffix STRING", String, "Suffix of the markdown files to be included. Default is 'pandoc'.") do |suffix| 26 | options[:suffix] = suffix 27 | end 28 | 29 | end.parse! 30 | 31 | text = File.read(options[:parent_file]) 32 | 33 | text.gsub!(/\@include\(([^)]+?)\)/) do |include_statement| 34 | replacement_path = File.join(options[:parts_folder], "#{$1}.#{options[:suffix]}") 35 | File.read(replacement_path) 36 | end 37 | 38 | puts text -------------------------------------------------------------------------------- /bin/pdf2png.workflow/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | pdf2png 7 | 8 | 9 | -------------------------------------------------------------------------------- /bin/pdf2png.workflow/Contents/QuickLook/Preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/bin/pdf2png.workflow/Contents/QuickLook/Preview.png -------------------------------------------------------------------------------- /bin/pdf2png.workflow/Contents/document.wflow: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AMApplicationBuild 6 | 444.42 7 | AMApplicationVersion 8 | 2.9 9 | AMDocumentVersion 10 | 2 11 | actions 12 | 13 | 14 | action 15 | 16 | AMAccepts 17 | 18 | Container 19 | List 20 | Optional 21 | 22 | Types 23 | 24 | com.apple.applescript.alias-object.pdf 25 | 26 | 27 | AMActionVersion 28 | 589.12 29 | AMApplication 30 | 31 | PDF 32 | 33 | AMParameterProperties 34 | 35 | colorModel 36 | 37 | compression 38 | 39 | imageFormat 40 | 41 | resolution 42 | 43 | tokenizedValue 44 | 45 | 400 46 | 47 | 48 | 49 | AMProvides 50 | 51 | Container 52 | List 53 | Types 54 | 55 | com.apple.applescript.alias-object.image 56 | 57 | 58 | ActionBundlePath 59 | /System/Library/Automator/Render PDF Pages as Images.action 60 | ActionName 61 | Render PDF Pages as Images 62 | ActionParameters 63 | 64 | colorModel 65 | 0 66 | compression 67 | 1 68 | imageFormat 69 | public.png 70 | resolution 71 | 400 72 | 73 | BundleIdentifier 74 | com.apple.action.imagepdf 75 | CFBundleVersion 76 | 589.12 77 | CanShowSelectedItemsWhenRun 78 | 79 | CanShowWhenRun 80 | 81 | Category 82 | 83 | AMCategoryPDFs 84 | 85 | Class Name 86 | ImagePDFAction 87 | InputUUID 88 | 3978F6BC-A68D-4612-9E9D-9560FC51B3CB 89 | Keywords 90 | 91 | Print 92 | Render 93 | 94 | OutputUUID 95 | C9A6C406-30E0-48F2-BE81-F86E6A7D4A76 96 | UUID 97 | 80993536-0FCD-43D3-AEB0-9517B9A16206 98 | UnlocalizedApplications 99 | 100 | PDF 101 | 102 | arguments 103 | 104 | 0 105 | 106 | default value 107 | 0.5 108 | name 109 | compression 110 | required 111 | 0 112 | type 113 | 0 114 | uuid 115 | 0 116 | 117 | 1 118 | 119 | default value 120 | public.jpeg 121 | name 122 | imageFormat 123 | required 124 | 0 125 | type 126 | 0 127 | uuid 128 | 1 129 | 130 | 2 131 | 132 | default value 133 | 200 134 | name 135 | resolution 136 | required 137 | 0 138 | type 139 | 0 140 | uuid 141 | 2 142 | 143 | 3 144 | 145 | default value 146 | 0 147 | name 148 | colorModel 149 | required 150 | 0 151 | type 152 | 0 153 | uuid 154 | 3 155 | 156 | 157 | conversionLabel 158 | 0 159 | isViewVisible 160 | 161 | location 162 | 309.000000:382.000000 163 | nibPath 164 | /System/Library/Automator/Render PDF Pages as Images.action/Contents/Resources/Base.lproj/main.nib 165 | 166 | isViewVisible 167 | 168 | 169 | 170 | action 171 | 172 | AMAccepts 173 | 174 | Container 175 | List 176 | Optional 177 | 178 | Types 179 | 180 | com.apple.cocoa.path 181 | 182 | 183 | AMActionVersion 184 | v.1.1.2 185 | AMApplication 186 | 187 | Finder 188 | 189 | AMParameterProperties 190 | 191 | replaceExisting 192 | 193 | toDirectory 194 | 195 | isPathPopUp 196 | 197 | selectedVariableUUID 198 | A804FAC2-DC90-4FAF-9AA8-3B7ED8CB937A 199 | variableUUIDsInMenu 200 | 201 | A804FAC2-DC90-4FAF-9AA8-3B7ED8CB937A 202 | 203 | 204 | 205 | AMProvides 206 | 207 | Container 208 | List 209 | Types 210 | 211 | com.apple.cocoa.path 212 | 213 | 214 | ActionBundlePath 215 | /System/Library/Automator/Move Finder Items.action 216 | ActionName 217 | Move Finder Items 218 | ActionParameters 219 | 220 | replaceExisting 221 | 222 | toDirectory 223 | 224 | 225 | BundleIdentifier 226 | com.apple.Automator.MoveFiles 227 | CFBundleVersion 228 | 1.1.2 229 | CanShowSelectedItemsWhenRun 230 | 231 | CanShowWhenRun 232 | 233 | Category 234 | 235 | AMCategoryFilesAndFolders 236 | 237 | Class Name 238 | MoveFilesAction 239 | InputUUID 240 | F8689055-76FA-43C5-AAE7-E730E296EB0B 241 | Keywords 242 | 243 | File 244 | Move 245 | 246 | OutputUUID 247 | 9E8EA431-E839-43D7-8364-D93CECAFF0CC 248 | UUID 249 | A78F0EDA-7F60-430F-AA15-50044916B3BD 250 | UnlocalizedApplications 251 | 252 | Finder 253 | 254 | arguments 255 | 256 | 0 257 | 258 | default value 259 | ~/Desktop 260 | name 261 | toDirectory 262 | required 263 | 0 264 | type 265 | 0 266 | uuid 267 | 0 268 | 269 | 1 270 | 271 | default value 272 | 273 | name 274 | replaceExisting 275 | required 276 | 0 277 | type 278 | 0 279 | uuid 280 | 1 281 | 282 | 283 | conversionLabel 284 | 0 285 | isViewVisible 286 | 287 | location 288 | 309.000000:484.000000 289 | nibPath 290 | /System/Library/Automator/Move Finder Items.action/Contents/Resources/Base.lproj/main.nib 291 | 292 | isViewVisible 293 | 294 | 295 | 296 | connectors 297 | 298 | AA8F705E-64FB-4B02-8B74-64C7CF3F3E29 299 | 300 | from 301 | 80993536-0FCD-43D3-AEB0-9517B9A16206 - 80993536-0FCD-43D3-AEB0-9517B9A16206 302 | to 303 | A78F0EDA-7F60-430F-AA15-50044916B3BD - A78F0EDA-7F60-430F-AA15-50044916B3BD 304 | 305 | 306 | variables 307 | 308 | 309 | UUID 310 | 5D0007BE-6477-47B2-8674-49DD02E60695 311 | identifier 312 | com.apple.Automator.Variable.Path 313 | name 314 | OUTPATH 315 | value 316 | ~/Desktop 317 | 318 | 319 | UUID 320 | CE60B745-943D-477F-AFFE-9782021B1054 321 | identifier 322 | com.apple.Automator.Variable.Path 323 | name 324 | OUTPATH 325 | value 326 | ~/Desktop 327 | 328 | 329 | UUID 330 | A804FAC2-DC90-4FAF-9AA8-3B7ED8CB937A 331 | identifier 332 | com.apple.Automator.Variable.Path 333 | name 334 | OUTPATH 335 | value 336 | ~/Desktop 337 | 338 | 339 | workflowMetaData 340 | 341 | workflowTypeIdentifier 342 | com.apple.Automator.workflow 343 | 344 | 345 | 346 | -------------------------------------------------------------------------------- /handreichung_opendata.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/handreichung_opendata.pdf -------------------------------------------------------------------------------- /images/B_RBm_Skzl_Logo_DE_V_PW_RGB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/B_RBm_Skzl_Logo_DE_V_PW_RGB.png -------------------------------------------------------------------------------- /images/datenrubrik-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/datenrubrik-01.png -------------------------------------------------------------------------------- /images/datenrubrik-dokument-erzeugen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/datenrubrik-dokument-erzeugen.png -------------------------------------------------------------------------------- /images/datenrubrik-hochladen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/datenrubrik-hochladen.png -------------------------------------------------------------------------------- /images/datenrubrik-startseite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/datenrubrik-startseite.png -------------------------------------------------------------------------------- /images/datenrubrik-verlinkung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/datenrubrik-verlinkung.png -------------------------------------------------------------------------------- /images/datensaetze_vornamen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/datensaetze_vornamen.png -------------------------------------------------------------------------------- /images/eu_efre_zusatz_unten.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/eu_efre_zusatz_unten.png -------------------------------------------------------------------------------- /images/format-example-tree.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/format-example-tree.pdf -------------------------------------------------------------------------------- /images/format-example-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/format-example-tree.png -------------------------------------------------------------------------------- /images/format-example-tree_lor2021.graffle/data.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/format-example-tree_lor2021.graffle/data.plist -------------------------------------------------------------------------------- /images/format-example-tree_lor2021.graffle/image1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/format-example-tree_lor2021.graffle/image1.pdf -------------------------------------------------------------------------------- /images/format-example-tree_lor2021.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/format-example-tree_lor2021.pdf -------------------------------------------------------------------------------- /images/format-example-tree_lor2021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/format-example-tree_lor2021.png -------------------------------------------------------------------------------- /images/hvd_category_eingabe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/hvd_category_eingabe.png -------------------------------------------------------------------------------- /images/metadaten_daten.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/metadaten_daten.pdf -------------------------------------------------------------------------------- /images/metadaten_daten.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/metadaten_daten.png -------------------------------------------------------------------------------- /images/musterdatensatz_beispiel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/musterdatensatz_beispiel.png -------------------------------------------------------------------------------- /images/musterdatensatz_datenportal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/musterdatensatz_datenportal.png -------------------------------------------------------------------------------- /images/musterdatensatz_eingabe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/musterdatensatz_eingabe.png -------------------------------------------------------------------------------- /images/offene_daten_uebersicht.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/offene_daten_uebersicht.pdf -------------------------------------------------------------------------------- /images/offene_daten_uebersicht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/offene_daten_uebersicht.png -------------------------------------------------------------------------------- /images/opendata-sise-imperia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/opendata-sise-imperia.png -------------------------------------------------------------------------------- /images/output_datenrubrik.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/output_datenrubrik.pdf -------------------------------------------------------------------------------- /images/output_datenrubrik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/output_datenrubrik.png -------------------------------------------------------------------------------- /images/output_simplesearch.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/output_simplesearch.pdf -------------------------------------------------------------------------------- /images/output_simplesearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/output_simplesearch.png -------------------------------------------------------------------------------- /images/schritt-für-schritt.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/schritt-für-schritt.pdf -------------------------------------------------------------------------------- /images/schritt-für-schritt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/schritt-für-schritt.png -------------------------------------------------------------------------------- /images/screenshot_dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/screenshot_dashboard.png -------------------------------------------------------------------------------- /images/screenshot_einloggen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/screenshot_einloggen.png -------------------------------------------------------------------------------- /images/screenshot_follow_category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/screenshot_follow_category.png -------------------------------------------------------------------------------- /images/screenshot_menue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/screenshot_menue.png -------------------------------------------------------------------------------- /images/screenshot_neuer_datensatz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/screenshot_neuer_datensatz.png -------------------------------------------------------------------------------- /images/screenshot_pw_zuruecksetzen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/screenshot_pw_zuruecksetzen.png -------------------------------------------------------------------------------- /images/screenshot_pw_zuruecksetzen_anfordern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/screenshot_pw_zuruecksetzen_anfordern.png -------------------------------------------------------------------------------- /images/screenshot_ressource_hinzufügen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/screenshot_ressource_hinzufügen.png -------------------------------------------------------------------------------- /images/screenshot_user_profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/screenshot_user_profile.png -------------------------------------------------------------------------------- /images/senod-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/senod-logo.png -------------------------------------------------------------------------------- /images/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/title.png -------------------------------------------------------------------------------- /images/vera_musterer_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/vera_musterer_avatar.png -------------------------------------------------------------------------------- /images/veroeffentlichungsweg_waehlen.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/veroeffentlichungsweg_waehlen.pdf -------------------------------------------------------------------------------- /images/veroeffentlichungsweg_waehlen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/veroeffentlichungsweg_waehlen.png -------------------------------------------------------------------------------- /images/veroeffentlichungsweg_waehlen_90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/veroeffentlichungsweg_waehlen_90.png -------------------------------------------------------------------------------- /images/xkcd_iso_8601.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/berlinonline/open-data-handbuch/898588c2ab5b7c7a5f4404cc2db7945e24963aa8/images/xkcd_iso_8601.png -------------------------------------------------------------------------------- /parts/bildverzeichnis.gfm: -------------------------------------------------------------------------------- 1 | - **Karte Titelbild:** © [hebstreit.com](https://hebstreit.com) – [stock.adobe.com](https://stock.adobe.com) 2 | 3 | - **Comic _ISO 8601_:** veröffentlicht unter [Creative Commons Namensnennung-Nicht kommerziell 2.5](https://creativecommons.org/licenses/by-nc/2.5/deed.de) (CC BY-NC 2.5): 4 | 5 | - **Alle nicht einzeln genannten Grafiken und Screenshots:** BerlinOnline GmbH, veröffentlicht unter [Creative Commons Namensnennung 4.0 International](https://creativecommons.org/licenses/by/4.0/deed.de) (CC BY 4.0) 6 | -------------------------------------------------------------------------------- /parts/bildverzeichnis.pandoc: -------------------------------------------------------------------------------- 1 | **Karte Titelbild:** © [hebstreit.com](https://hebstreit.com) – [stock.adobe.com](https://stock.adobe.com) 2 | 3 | **Abb. \ref{fig:xkcd_iso8601}:** Comic _ISO 8601_, veröffentlicht unter [Creative Commons Namensnennung-Nicht kommerziell 2.5](https://creativecommons.org/licenses/by-nc/2.5/deed.de) (CC BY-NC 2.5): 4 | 5 | **Alle nicht einzeln genannten Grafiken und Screenshots:** BerlinOnline GmbH, veröffentlicht unter [Creative Commons Namensnennung 4.0 International](https://creativecommons.org/licenses/by/4.0/deed.de) (CC BY 4.0) 6 | -------------------------------------------------------------------------------- /parts/box_prefix.gfm: -------------------------------------------------------------------------------- 1 | {::options parse_block_html="true" /} 2 |
-------------------------------------------------------------------------------- /parts/box_prefix.pandoc: -------------------------------------------------------------------------------- 1 | 2 | --- 3 | 4 | -------------------------------------------------------------------------------- /parts/box_suffix.gfm: -------------------------------------------------------------------------------- 1 |
2 | {::options parse_block_html="false" /} -------------------------------------------------------------------------------- /parts/box_suffix.pandoc: -------------------------------------------------------------------------------- 1 | 2 | --- 3 | 4 | -------------------------------------------------------------------------------- /parts/example_tabular_data.gfm: -------------------------------------------------------------------------------- 1 | | jahr | ausfuhr\_ gewicht\_t | ausfuhr\_ wert\_tsd | einfuhr\_ gewicht\_t | einfuhr\_ wert\_tsd | 2 | | :--- | -------------------: | ------------------: | -------------------: | ------------------: | 3 | | 2008 | 1906249.0 | 11575460 | 3726000.7 | 8836354 | 4 | | 2009 | 1520285.5 | 10460872 | 3280393.0 | 8332920 | 5 | | 2010 | 1768526.6 | 12041296 | 3788885.2 | 9504931 | 6 | | 2011 | 1843390.3 | 12995735 | 3990575.7 | 10247531 | 7 | | 2012 | 1866142.5 | 13630766 | 3386676.5 | 9885480 | 8 | | 2013 | 1812326.6 | 12926404 | 3508760.0 | 9729719 | 9 | | 2014 | 1969493.1 | 13307452 | 4285590.9 | 9910714 | 10 | | 2015 | 2036349.9 | 14077861 | 3539258.2 | 11728684 | 11 | | 2016 | 2463796.3 | 15147156 | 4010693.6 | 12113675 | 12 | 13 | Aus- und Einfuhr (Außenhandel) Berlin 14 | -------------------------------------------------------------------------------- /parts/example_tabular_data.pandoc: -------------------------------------------------------------------------------- 1 | ------------------------------------------------------- 2 | jahr ausfuhr_ ausfuhr_ einfuhr_ einfuhr_ 3 | gewicht_t wert_tsd gewicht_t wert_tsd 4 | ----- ------------ ----------- ------------ ----------- 5 | 2008 1906249.0 11575460 3726000.7 8836354 6 | 7 | 2009 1520285.5 10460872 3280393.0 8332920 8 | 9 | 2010 1768526.6 12041296 3788885.2 9504931 10 | 11 | 2011 1843390.3 12995735 3990575.7 10247531 12 | 13 | 2012 1866142.5 13630766 3386676.5 9885480 14 | 15 | 2013 1812326.6 12926404 3508760.0 9729719 16 | 17 | 2014 1969493.1 13307452 4285590.9 9910714 18 | 19 | 2015 2036349.9 14077861 3539258.2 11728684 20 | 21 | 2016 2463796.3 15147156 4010693.6 12113675 22 | ------------------------------------------------------- 23 | 24 | : Aus- und Einfuhr (Außenhandel) Berlin 25 | -------------------------------------------------------------------------------- /parts/grafik_veroeffentlichungsweg.gfm: -------------------------------------------------------------------------------- 1 | ![Flussdiagramm zur Auswahl eines Veröffentlichungsweges für das Berliner Datenportal](images/veroeffentlichungsweg_waehlen.png "Das Flussdiagramm zur Auswahl eines Veröffentlichungsweges für das Berliner Datenportal zeigt, nach welchen Kriterien welcher Weg am besten geeignet ist.") 2 | -------------------------------------------------------------------------------- /parts/grafik_veroeffentlichungsweg.pandoc: -------------------------------------------------------------------------------- 1 | ![Flussdiagramm zur Auswahl eines Veröffentlichungsweges für das Berliner Datenportal\label{fig:flussdiagramm_veroeffentlichungsweg}](images/veroeffentlichungsweg_waehlen_90.png "Das Flussdiagramm zur Auswahl eines Veröffentlichungsweges für das Berliner Datenportal zeigt, nach welchen Kriterien welcher Weg am sinnvollsten ist."){height=90%} 2 | -------------------------------------------------------------------------------- /parts/grusswort.md: -------------------------------------------------------------------------------- 1 | # Grußwort {-} 2 | 3 | Open Data bedeutet, dass Daten zur freien Verwendung geöffnet, also zugänglich gemacht werden. 4 | Die Berliner Verwaltung verfügt über enorme Datenbestände. 5 | Viele dieser Daten sind von öffentlichem Interesse, nützlich und müssen nicht besonders geschützt werden. 6 | Sie können dabei helfen, die Stadt besser zu verstehen, neue Dienste für Bürger\*innen zu entwickeln und Geschäftsideen zu initiieren. 7 | Zahlreiche Studien haben in den letzten Jahren die großen Potenziale offener Verwaltungsdaten für Gesellschaft und Wirtschaft beleuchtet. 8 | Diese Potenziale wollen wir noch stärker nutzen. 9 | 10 | Mit diesem Handbuch wollen wir der Berliner Verwaltung und allen Interessierten eine Anleitung für Veröffentlichungsmöglichkeiten von Informationen auf dem Berliner Datenportal [daten.berlin.de](https://daten.berlin.de) an die Hand geben. 11 | Sie erhalten nützliche Tipps dazu, welche Daten Sie wie veröffentlichen, und aus welchen verschiedenen Dateiformaten Sie dabei wählen können. 12 | 13 | Ich würde mich freuen, wenn Sie das Open-Data-Handbuch intensiv nutzen, um sich zu informieren und um ins Öffnen von Daten einzusteigen. 14 | 15 | **Christian Rickerts** 16 | 17 | Staatssekretär in der Senatsverwaltung für Wirtschaft, Energie und Betriebe 18 | 19 | -------------------------------------------------------------------------------- /parts/latex_impressum.template.md: -------------------------------------------------------------------------------- 1 | 2 | # Impressum {-} 3 | 4 | **Herausgeber:** Der Regierende Bürgermeister von Berlin, [Senatskanzlei](https://www.berlin.de/rbmskzl/)
5 | **Text:** Knud Hinnerk Möller ([BerlinOnline GmbH](https://www.berlinonline.net))
6 | **Grafiken:** Nadine Wohlfahrt ([BerlinOnline GmbH](https://www.berlinonline.net))
7 | **Lizenz**: Der Text des Handbuchs ist unter einer [Creative Commons Namensnennung 4.0 International Lizenz](https://creativecommons.org/licenses/by/4.0/deed.de) (CC BY 4.0) veröffentlicht. 8 | Bilder und andere Elemente, deren Urheberrecht bei Dritten liegen, sind ausgenommen. 9 | [Quellenverzeichnis](#quellenverzeichnis) und [Bildverzeichnis](#bildverzeichnis) mit entsprechenden Urheberrechtsangaben sind im Handbuch enthalten.
10 | **Quelle**: Der Quelltext für das Handbuch befindet sich in folgendem Repository: . 11 | Dort können über die _[Issue](https://github.com/berlinonline/open-data-handbuch/issues)_-Funktion auch Anregungen gemacht oder Fehler gemeldet werden (github-Account erforderlich). 12 | Wer mag, kann auch gleich einen Pull Request stellen!
13 | **Stand**: @include(date) ([2.0.1](https://github.com/berlinonline/open-data-handbuch/blob/master/CHANGELOG.md)) 14 | 15 | ![Senatskanzlei Berlin](images/B_RBm_Skzl_Logo_DE_V_PW_RGB.png "Logo und Schriftzug 'Der regierende Bürgermeister von Berlin, Senatskanzlei'"){width=120px}\ 16 | 17 | -------------------------------------------------------------------------------- /parts/latex_preamble.md: -------------------------------------------------------------------------------- 1 | \pagenumbering{arabic} 2 | \setcounter{page}{1} 3 | 4 | -------------------------------------------------------------------------------- /parts/pages_impressum.template.md: -------------------------------------------------------------------------------- 1 | 2 | # Impressum {-} 3 | 4 | **Herausgeber:** Der Regierende Bürgermeister von Berlin, [Senatskanzlei](https://www.berlin.de/rbmskzl/)
5 | **Text:** Knud Hinnerk Möller ([BerlinOnline GmbH](https://www.berlinonline.net))
6 | **Grafiken:** Nadine Wohlfahrt ([BerlinOnline GmbH](https://www.berlinonline.net))
7 | **Lizenz**: Der Text des Handbuchs ist unter einer [Creative Commons Namensnennung 4.0 International Lizenz](https://creativecommons.org/licenses/by/4.0/deed.de) (CC BY 4.0) veröffentlicht. 8 | Bilder und andere Elemente, deren Urheberrecht bei Dritten liegen, sind ausgenommen. 9 | [Quellenverzeichnis](#quellenverzeichnis) und [Bildverzeichnis](#bildverzeichnis) mit entsprechenden Urheberrechtsangaben sind im Handbuch enthalten.
10 | **Quelle**: Der Quelltext für das Handbuch befindet sich in folgendem Repository: . 11 | Dort können über die _[Issue](https://github.com/berlinonline/open-data-handbuch/issues)_-Funktion auch Anregungen gemacht oder Fehler gemeldet werden (github-Account erforderlich). 12 | Wer mag, kann auch gleich einen Pull Request stellen!
13 | **Stand**: @include(date) ([2.0.1](https://github.com/berlinonline/open-data-handbuch/blob/master/CHANGELOG.md#201)) 14 | 15 | --- 16 | 17 | ![Senatskanzlei Berlin](images/B_RBm_Skzl_Logo_DE_V_PW_RGB.png "Logo und Schriftzug 'Der regierende Bürgermeister von Berlin, Senatskanzlei'"){:width="240px"} 18 | 19 | -------------------------------------------------------------------------------- /parts/pages_title.md: -------------------------------------------------------------------------------- 1 | ![Titelbild Berliner Open-Data-Handbuch](images/title.png "Das Titelbild des Berliner Open-Data-Handbuchs, mit einer stilisierten Karte Berlins im Hintergrund") 2 | 3 | -------------------------------------------------------------------------------- /parts/simplesearch-api.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: SimpleSearch API 3 | path: /simplesearch-api 4 | --- 5 | 6 | [SimpleSearch-Anwendungen](https://support.berlin.de/wiki/SimpleSearch) machen einen tabellarischen Datenbestand (die „SimpleSearch-Tabelle“) auf einer Webseite durchsuchbar. 7 | Dabei bildet jede Zeile der Tabelle einen Eintrag bzw. ein Datenobjekt ab, während die Spalten der Tabelle die verschiedenen Eigenschaften der Objekte definieren. 8 | 9 | So sind z.B. in der SimpleSearch-Anwendung [Liste der Badestellen](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/) die Datenobjekte (also Zeilen) die einzelnen Badestellen. 10 | Eigenschaften wie Name, Ort, Wasserqualität etc. werden über die Spalten abgebildet. 11 | 12 | id | badname | bezirk | cb | eco | ente | sicht | temp | profil | … 13 | -- | ------- | ------ | -- | --- | ---- | ----- | ---- | ------ | --- 14 | … | … | … | … | … | … | … | … | … | … 15 | 48 | Heiligensee, Freibad | Reinickendorf | <300 | 30 | 390 | 150 | 22,1 | Heiligensee | … 16 | 51 | Jungfernheide, Freibad | Charlottenburg-Wilmersdorf | <300 | 61 | 30 | >180 | 20,8 | Jungfernheideteich | … 17 | 54 | Kleine Badewiese | Spandau | <300 | <15 | <15 | >50 | 21,1 | Unterhavel | … 18 | … | … | … | … | … | … | … | … | … | … 19 | 20 | Typische Bestandteile einer SimpleSearch-Anwendung sind das Suchformular, Detailseiten, Karten etc. 21 | Jede SimpleSearch-Anwendung verfügt außerdem über eine einfache REST-API. 22 | Damit kann der Datenbestand in verschiedenen strukturierten, maschinenlesbaren Formaten abgefragt werden. 23 | 24 | Wie Anfragen bzw. Requests an die API einer SimpleSearch-Anwendung fomuliert werden, wird in der folgenden Dokumentation beschrieben. 25 | 26 | ## Anfrage / Request 27 | 28 | ### URLs 29 | 30 | #### `BASE_URL` 31 | 32 | Um die API einer beliebigen SimpleSearch-Anwendung zu nutzen, braucht man zunächst die URL ihrer Startseite (`BASE_URL`). 33 | Für das Beispiel der Liste der Badestellen ist die `BASE_URL` also: 34 | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/) 35 | 36 | #### `API_ENDPOINT` 37 | 38 | Aus der `BASE_URL` ergibt sich der `API_ENDPOINT` durch Anhängen von `index.php`: `${BASE_URL}/index.php`. 39 | Der API-Endpunkt ist der Einstieg für alle API-Anfragen. 40 | Für das Beispiel ist der `API-ENDPOINT`: 41 | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php) 42 | 43 | 44 | #### Dokumentation 45 | 46 | Ausgehend vom `API_ENDPOINT` kann man eine detaillierte Dokumentation spezifisch für jede SimpleSearch-Anwendung aufrufen. Dies geschieht nach dem Muster `${API_ENDPOINT}/api`. 47 | Für die Badestellen-SimpleSearch wird die API-Dokumentation also über folgenden Link erreicht: 48 | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/api](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/api) 49 | 50 | Insbesondere für die veränderlichen Teile einer SimpleSearch-Anwendung – welche Spalten/Felder sind in der SimpleSearch-Tabelle enthalten – ist die Dokumentation hilfreich. 51 | Die Felder der Tabelle können aber auch explorativ in der Anwendung selbst ermittelt werden. 52 | Dazu geht man wie folgt vor: 53 | 54 | 1. Rufen Sie die Anwendung, für die Sie sich interessieren, in Ihrem Browser auf, z.B. die [Liste der Badestellen](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen). 55 | 1. Stellen Sie eine Anfrage über das Suchformular. 56 | 1. Die URL der Ergebnisseite enthält die möglichen URL-Parameter für die verschiedene Felder der SimpleSearch-Tabelle. 57 | 58 | #### Übersicht URLs 59 | 60 | Was | Muster | Beispiel 61 | ---------|----------|--------- 62 | `BASE_URL` | (URL der Anwendung) | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/) 63 | `API_ENDPOINT` | `${BASE_URL}/index.php` | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php) 64 | API-Dokumentation | `${API_ENDPOINT}/api` | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/api](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/api) 65 | 66 | ### Methoden 67 | 68 | Alle SimpleSearch-Anwendungen erlauben über ihre API Suchanfragen mit der Methode [`index`](#index). 69 | Zusätzlich können die Redakteur\*innen Detailansichten freischalten, die dann über die Methode [`detail`](#detail) abrufbar sind. 70 | Beide Methoden bieten Ausgaben in verschiedenen Formaten, wobei das Default-Format jeweils HTML ist. 71 | Die HTML-Ausgaben sind vollständige HTML-Dokumente mit Header, Footer etc. im aktuellen berlin.de-Layout, und daher nur bedingt für externe Nutzer*innen sinnvoll einsetzbar. 72 | 73 | #### `index` 74 | 75 | Mit der `index`-Methode kann man eine Suchabfrage über den Datenbestand einer SimpleSearch-Anwendung durchführen und das Ergebnis im gewünschten Format erhalten. 76 | Die Rückgabe erfolgt dabei entweder aufgeteilt in Seiten (paginiert) oder komplett (wenn möglich). 77 | Die Struktur eines `index`-Aufrufs ist wie folgt: 78 | 79 | ```bash 80 | ${API_ENDPOINT}/index/${PAGINATION_MODE}[.${FORMAT}]?${QUERY_STRING} 81 | ``` 82 | 83 | ##### `PAGINATION_MODE` 84 | 85 | `index` \| `all` 86 | 87 | `PAGINATION_MODE` ist entweder `index` für die seitenweise Ausgabe der Ergebnisse, oder `all`, um den gesamten Datenbestand auf ein Mal anzufordern. 88 | `all` funktioniert nur, wenn der Datenbestand nicht zu groß ist. 89 | Ansonsten wird die Fehlermeldung _"ERROR - Zu viele Daten, bitte benutzen Sie die Blätter-Funktion"_ zurückgegeben (der genaue Kontext der Fehlermeldung hängt vom Ausgabeformat ab). 90 | In diesem Fall muss der `index`-Modus genutzt werden. 91 | 92 | ##### `FORMAT` 93 | 94 | Jede SimpleSearch-Anwendung kann über die `index`-Methode folgende Formate exportieren: 95 | 96 | | [JSON](#json-format-index) | `.json` | 97 | | [XML](#xml-format-index) | `.xml` | 98 | | [CSV](#csv-format-index) | `.csv` | 99 | | [RSS](#rss-format-index) | `.rss` | 100 | | [JSON-RSS](#json-rss-format-index) | `.jrss` | 101 | | HTML (default) | `.html` | 102 | 103 | SimpleSearch-Anwendungen mit Geo-Daten und aktivierter Karte können zusätzlich folgende Geo-Formate zurückgeben: 104 | 105 | | [GeoJSON](#geojson-format-index) | `.geojson` | 106 | | [KML](#kml-format-index) | `.kml` | 107 | 108 | 109 | ##### `QUERY_STRING` 110 | 111 | Über den Query-String kann die Abfrage eingeschränkt oder anders manipuliert werden. 112 | Die folgenden Query-Parameter werden von allen SimpleSearch-Anwendungen angeboten: 113 | 114 | | Parameter | Beschreibung | Beispiel | 115 | | `q` | Ermöglicht eine Volltextsuche über bestimmte Felder des Datenbestands. Welche Felder genau von der Volltextsuche erfasst werden, muss in der API-Dokumentation der jeweiligen Anwendung nachgesehen werden. Default ist `q=`. | `q=`, `q=see`| 116 | | `page` | Gibt an, welche Seite der paginierten Ausgabe gewünscht ist. Nur sinnvoll im Kombination mit `PAGINATION_MODE` `index`. Default ist `page=1`. | `page=2` | 117 | | `order` | Gibt an, welche Felder für die Sortierung der Ergebnisse genutzt weden sollen. Der Zusatz von `ASC`ending und `DESC`ending ist möglich. Welche Felder möglich sind, muss in der API-Dokumentation der jeweiligen Anwendung nachgesehen werden. Default ist `order=id+ASC`. | `order=bezirk`, `order=bezirk+DESC,badname+ASC` | 118 | 119 | SimpleSearch-Anwendungen mit Geo-Koordinaten bieten außerdem die Möglichkeit, über `q_geo` und `q_radius` eine adressbasierte Suche durchzuführen. 120 | 121 | Zudem werden i.d.R. auch die weiteren Spalten bzw. Felder der SimpleSearch-Tabelle als Query-Parameter zu nutzen (z.B. `?bezirk=Spandau`). 122 | Welche zusätzlichen Parameter verfügbar sind, lässt sich in der API-Dokumentation der jeweiligen Anwendung nachlesen. 123 | 124 | #### `detail` 125 | 126 | Mit der `detail`-Methode kann man (wenn ihre Nutzung freigeschaltet wurde) einzelne Einträge des Datenbestandes aufrufen. 127 | 128 | ```bash 129 | ${API_ENDPOINT}/detail/${ITEM_ID}[.${FORMAT}] 130 | ``` 131 | 132 | Ein Beispiel für den Aufruf der `detail`-Methode ist: 133 | 134 | 135 | ##### `ITEM_ID` 136 | 137 | Referenz auf die `id`-Spalte der SimpleSearch-Tabelle, die als eindeutiger Identifier dient. 138 | 139 | ##### `FORMAT` 140 | 141 | Jede SimpleSearch-Anwendung kann über die `detail`-Methode folgende Formate exportieren: 142 | 143 | | [JSON](#json-format-detail) | `.json` | 144 | | [XML](#xml-format-detail) | `.xml` | 145 | 146 | 147 | ### Einschränkung 148 | 149 | Bitte beachten Sie, dass die REST-APIs an der SimpleSearch keine Hochleistungs-APIs sind. Wir bitten also um Caching. 150 | 151 | ## Rückgabe / Response 152 | 153 | ### Allgemeine Struktur 154 | 155 | Die JSON- und XML-Rückgabeformate haben grundsätzlich diesselbe Struktur: 156 | 157 | * `messages`: 158 | * `messages`: Eine Liste von Meldungen. Bei erfolgreicher Ausführung leer. 159 | * `success`: Boolean mit Status der Ausführung. Bei `false` ist ein Fehler aufgetreten. 160 | * `results`: 161 | * `count`: Anzahl der Gesamtergebnisse 162 | * `items_per_page`: Anzahl der Einträge pro Seite 163 | * `index`: Liste mit Ergebnissen, wenn die `index`-Methode genutzt wurde. 164 | * Ergebnis 1: Jedes Ergebnis ist ein Objekt mit Attribut-Wert-Paaren. 165 | Es ist immer mindestens ein `id`-Attribut vorhanden, über das die Objekte in der Datenbank der Anwendung fortlaufend durchnummeriert sind. Das `id`-Attribut wird von der SimpleSearch-Anwendung automatisch vergeben und ist nicht unter der Kontrolle der veröffentlichenden Stelle. 166 | Die übrigen Attribute ergeben sich aus der jeweiligen SimpleSearch-Anwendung und müssen dort in Erfahrung gebracht werden. 167 | * Ergebnis 2 168 | * Ergebnis 3 169 | * ... 170 | * `item`: Objekt mit den Daten eines einzelnen Eintrags, wenn die `detail`-Methode genutzt wurde. 171 | 172 | ### JSON-Format (index) 173 | 174 | **Request-URI** | `${API_ENDPOINT}/index/index.json?${QUERY_STRING}` 175 | **Response content-type** | `application/json; charset=UTF-8` 176 | 177 | Das von SimpleSearch über die API ausgelieferte JSON folgt der [allgemeinen Struktur](#struktur-der-rückgabeformate) wie oben beschrieben. 178 | 179 | Konkret sieht die JSON-Struktur am Beispiel des [Aktenplans der Senatsverwaltung für Finanzen](https://daten.berlin.de/datensaetze/aktenplan-der-senatsverwaltung-für-finanzen) folgendermaßen aus: 180 | 181 | ```json 182 | { 183 | "messages": { 184 | "messages": [], 185 | "success": null 186 | }, 187 | "results": { 188 | "count": 15805, 189 | "items_per_page": 20 190 | }, 191 | "index": [ 192 | { 193 | "id": 37658, 194 | "teilaktenplan": "TLSD - Tarifreferat Lohnsteuer/Sozialversicherung/Diverses", 195 | "aktenplannummer": "Beschaffungsmaßnahmen zur Errichtung von Schießständen für die Zollverwaltung", 196 | "aktentitel": "Wehrpflicht", 197 | "aufbewahrungsfrist_jahre": "10" 198 | }, 199 | { 200 | "id": 2, 201 | "teilaktenplan": "BT - Beteiligungen des Landes Berlin", 202 | "aktenplannummer": "BT", 203 | "aktentitel": "Beteiligungen des Landes Berlin", 204 | "aufbewahrungsfrist_jahre": "10" 205 | }, 206 | { 207 | "id": 5, 208 | "teilaktenplan": "BT - Beteiligungen des Landes Berlin", 209 | "aktenplannummer": "BT 0", 210 | "aktentitel": "Verwaltung von Beteiligungen", 211 | "aufbewahrungsfrist_jahre": "10" 212 | }, 213 | ... 214 | ], 215 | "item": [] 216 | } 217 | ``` 218 | 219 | ### XML-Format (index) 220 | 221 | **Request-URI** | `${API_ENDPOINT}/index/index.xml?${QUERY_STRING}` 222 | **Response content-type** | `text/xml; charset=UTF-8` 223 | 224 | Das von SimpleSearch über die API ausgelieferte XML folgt der [allgemeinen Struktur](#struktur-der-rückgabeformate) wie oben beschrieben. 225 | 226 | Konkret sieht die XML-Struktur am Beispiel des [Aktenplans der Senatsverwaltung für Finanzen](https://daten.berlin.de/datensaetze/aktenplan-der-senatsverwaltung-für-finanzen) folgendermaßen aus: 227 | 228 | ```xml 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 15805 237 | 20 238 | 239 | 240 | 241 | 37658 242 | 243 | 244 | 245 | 10 246 | 247 | 248 | 2 249 | 250 | 251 | 252 | 10 253 | 254 | 255 | 5 256 | 257 | 258 | 259 | 10 260 | 261 | 262 | 263 | 264 | 265 | ``` 266 | 267 | ### CSV-Format (index) 268 | 269 | 270 | **Request-URI** | `${API_ENDPOINT}/index/index.csv?${QUERY_STRING}` 271 | **Response content-type** | `application/csv` 272 | 273 | Das CSV-Format gibt die Ergebnisse der Anfrage als `;`-separiertes CSV zurück. 274 | 275 | Konkret sieht die CSV-Rückgabe am Beispiel des [Aktenplans der Senatsverwaltung für Finanzen](https://daten.berlin.de/datensaetze/aktenplan-der-senatsverwaltung-für-finanzen) folgendermaßen aus: 276 | 277 | ```csv 278 | id;teilaktenplan;aktenplannummer;aktentitel;aufbewahrungsfrist_jahre 279 | 37658;"TLSD - Tarifreferat Lohnsteuer/Sozialversicherung/Diverses";"Beschaffungsmaßnahmen zur Errichtung von Schießständen für die Zollverwaltung";Wehrpflicht;10 280 | 2;"BT - Beteiligungen des Landes Berlin";BT;"Beteiligungen des Landes Berlin";10 281 | 5;"BT - Beteiligungen des Landes Berlin";"BT 0";"Verwaltung von Beteiligungen";10 282 | ... 283 | ``` 284 | 285 | Die Rückgabe besteht aus einer Header-Zeile sowie den Ergebniszeilen. 286 | Auch hier ist wieder mindestens die Spalte `id` enthalten, alle anderen Spalten ergeben sich aus der jeweiligen SimpleSearch-Anwendung und müssen dort in Erfahrung gebracht werden. 287 | 288 | ### RSS-Format (index) 289 | 290 | **Request-URI** | `${API_ENDPOINT}/index/index.rss?${QUERY_STRING}` 291 | **Response content-type** | `text/xml; charset=UTF-8` 292 | 293 | Die SimpleSearch-API bietet auch einen Feed im [RSS 2.0](https://www.rssboard.org/rss-specification)-Format an. 294 | 295 | Die konkrete Rückgabe sieht am Beispiel des [Aktenplans der Senatsverwaltung für Finanzen](https://daten.berlin.de/datensaetze/aktenplan-der-senatsverwaltung-für-finanzen) folgendermaßen aus: 296 | 297 | ```xml 298 | 299 | 300 | 301 | Aktenplan der Senatsverwaltung für Finanzen 302 | Ein Aktenplan ist die Regelung der systematischen Ordnung des gesamten Schriftgutes einer Verwaltung. Ziel des Aktenplanes ist die übersichtliche, nachvollziehbare und wirtschaftliche Ordnung des Schriftgutes. Dieser Aktenplan basiert auf der Grundlage des Aktenplans für die Finanzverwaltung. Es wurden themenspezifische Teilaktenpläne ergänzt. 303 | https://www.berlin.de/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php 304 | <a href="aktenplan@senfin.berlin.de" >aktenplan@senfin.berlin.de</a> (Berlin.de - Aktenplan der Senatsverwaltung für Finanzen) 305 | de 306 | 307 | 335 | 336 | ``` 337 | 338 | ### JSON-RSS-Format (index) 339 | 340 | **Request-URI** | `${API_ENDPOINT}/index/index.jrss?${QUERY_STRING}` 341 | **Response content-type** | `application/rss+json; charset=UTF-8` 342 | 343 | Alternativ zum XML-basierten [RSS-Format](#rss-format) bietet die SimpleSearch-API auch einen JSON-basierten Feed. 344 | 345 | Die konkrete JSON-Rückgabe sieht am Beispiel des [Aktenplans der Senatsverwaltung für Finanzen](https://daten.berlin.de/datensaetze/aktenplan-der-senatsverwaltung-für-finanzen) folgendermaßen aus: 346 | 347 | ```json 348 | { 349 | "version": "2.0", 350 | "channel": { 351 | "title": "Aktenplan der Senatsverwaltung für Finanzen", 352 | "link": "https://www.berlin.de/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php", 353 | "description": "Ein Aktenplan ist die Regelung der systematischen Ordnung des gesamten Schriftgutes einer Verwaltung. Ziel des Aktenplanes ist die übersichtliche, nachvollziehbare und wirtschaftliche Ordnung des Schriftgutes.\n\nDieser Aktenplan basiert auf der Grundlage des Aktenplans für die Finanzverwaltung. Es wurden themenspezifische Teilaktenpläne ergänzt.", 354 | "managingEditor": "aktenplan@senfin.berlin.de (Berlin.de - Aktenplan der Senatsverwaltung für Finanzen)", 355 | "language": "de", 356 | "items": [ 357 | { 358 | "title": 47414, 359 | "link": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/?id=47414&q=", 360 | "guid": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/detail/47414" 361 | }, 362 | { 363 | "title": 47411, 364 | "link": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/?id=47411&q=", 365 | "guid": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/detail/47411" 366 | }, 367 | { 368 | "title": 47408, 369 | "link": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/?id=47408&q=", 370 | "guid": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/detail/47408" 371 | }, 372 | ... 373 | ] 374 | } 375 | } 376 | ``` 377 | 378 | ### GeoJSON-Format (index) 379 | 380 | **Request-URI** | `${API_ENDPOINT}/index/index.geojson?${QUERY_STRING}` 381 | **Response content-type** | `application/geo+json; charset=UTF-8` 382 | 383 | Wenn die Einträge einer SimpleSearch-Anwendung Geokoordinaten enthalten und die Kartendarstellung in der Anwendung aktiviert ist, bietet die SimpleSearch-API die Daten auch im [GeoJSON](https://geojson.org)-Format. 384 | 385 | Die konkrete JSON-Rückgabe sieht am Beispiel der [Liste der Badestellen](https://daten.berlin.de/datensaetze/liste-der-badestellen) folgendermaßen aus: 386 | 387 | ```json 388 | { 389 | "type": "FeatureCollection", 390 | "features": [ 391 | { 392 | "type": "Feature", 393 | "geometry": { 394 | "type": "Point", 395 | "coordinates": [ 396 | 13.14228, 397 | 52.43271 398 | ] 399 | }, 400 | "properties": { 401 | "title": "Alter Hof / Unterhavel", 402 | "href": "/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/detail/3", 403 | "description": "\"\"Steglitz-Zehlendorf
Mehr...", 404 | "id": "/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/detail/3", 405 | "data": { 406 | "id": 3, 407 | "prognoselink": "", 408 | "farbe": "gruen_a.jpg", 409 | "badestellelink": "\"Alter Hof(Link zur Badestelle Alter Hof)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badestellen/artikel.344360.php", 410 | "badname": "Alter Hof", 411 | "bezirk": "Steglitz-Zehlendorf", 412 | "dat": "2023-09-12", 413 | "eco": "<15", 414 | "ente": "<15", 415 | "sicht": "50", 416 | "temp": "23,8", 417 | "profillink": "\"Unterhavel - Alter Hof(Link zum Badegewässerprofil Unterhavel Alter Hof)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badegewaesserprofile/artikel.339134.php", 418 | "pdflink": "\"Alle Probeentnamen der aktuellen Saison für diese Badestelle(Link zur PDF-Datei mit allen Probeentnamen der aktuellen Saison)\":https://data.lageso.de/lageso/baden/bad29.pdf", 419 | "dat_predict": "" 420 | } 421 | } 422 | }, 423 | { 424 | "type": "Feature", 425 | "geometry": { 426 | "type": "Point", 427 | "coordinates": [ 428 | 13.62254, 429 | 52.4075 430 | ] 431 | }, 432 | "properties": { 433 | "title": "Bammelecke", 434 | "href": "/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/detail/6", 435 | "description": "\"\"Treptow-Köpenick
Mehr...", 436 | "id": "/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/detail/6", 437 | "data": { 438 | "id": 6, 439 | "prognoselink": "", 440 | "farbe": "gruen_a.jpg", 441 | "badestellelink": "\"Bammelecke(Link zur Badestelle Bammelecke)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badestellen/artikel.344320.php", 442 | "badname": "Bammelecke", 443 | "bezirk": "Treptow-Köpenick", 444 | "dat": "2023-09-06", 445 | "eco": "<15", 446 | "ente": "<15", 447 | "sicht": "60", 448 | "temp": "", 449 | "profillink": "\"Dahme - Bammelecke(Link zum Badegewässerprofil Bammelecke)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badegewaesserprofile/artikel.339118.php", 450 | "pdflink": "\"Alle Probeentnamen der aktuellen Saison für diese Badestelle(Link zur PDF-Datei mit allen Probeentnamen der aktuellen Saison)\":https://data.lageso.de/lageso/baden/bad1.pdf", 451 | "dat_predict": "" 452 | } 453 | } 454 | }, 455 | ... 456 | ] 457 | } 458 | ``` 459 | 460 | Jeder Eintrag der SimpleSearch-Tabelle wird als ein `Feature` abgebildet. 461 | Jedes `Feature` hat Koordinaten und `properties`. 462 | Die `properties` wiederum enthalten ein `data`-Objekt, das die Attribute der ursprünglichen SimpleSearch-Tabelle enthält. 463 | Auch hier kann wieder mindestens das `id`-Attribut vorrausgesetzt werden, alle andere Attribute müssen der SimpleSearch-Anwendung entnommen werden. 464 | 465 | ### KML-Format (index) 466 | 467 | **Request-URI** | `${API_ENDPOINT}/index/index.kml?${QUERY_STRING}` 468 | **Response content-type** | application/vnd.google-earth.kml; charset=UTF-8 469 | 470 | Als alternatives Geodatenformat bietet die SimpleSearch-API auch einen Export im [KML-Format](http://www.opengeospatial.org/standards/kml/). 471 | 472 | Ausgehend vom Beispiel der [Liste der Badestellen](https://daten.berlin.de/datensaetze/liste-der-badestellen) sieht die XML-Ausgabe der SimpleSearch-API folgendermaßen aus: 473 | 474 | ```xml 475 | 476 | 477 | 478 | Liste der Badestellen 479 | Hilfe 480 | 481 | Mit der Stichwortsuche können Sie nach den folgenden Informationen suchen: “Badestelle”, “Bezirk” und “Badegewässerprofil”. 482 | 483 | Die Freitextsuche findet alle Einträge, die eines der gesuchten Wörter enthalten. Um nach einer genauen Wortgruppe zu suchen, schreiben Sie diese in doppelte Anführungszeichen “”. 484 | 485 | Geben Sie einen Straßennamen ein, so werden Ihnen alle Standorte in der Nähe angezeigt. In der Liste werden die Treffer nach der Entfernung zur jeweiligen Straße sortiert. 486 | 487 | Es reicht die Eingabe eines Begriffes in eines der Auswahlfelder um ein Ergebnis zu erhalten. Bitte danach auf den Button “Suchen” drücken. 488 | 489 | Alter Hof / Unterhavel 490 | Steglitz-Zehlendorf
Mehr... ]]>
492 | 493 | 13.14228,52.43271,0 494 | 495 |
496 | 497 | Bammelecke 498 | Treptow-Köpenick
Mehr... ]]>
500 | 501 | 13.62254,52.4075,0 502 | 503 |
504 | 505 |
506 |
507 | ``` 508 | 509 | Die KML-Ausgabe ist deutlich einfacher als die GeoJSON-Ausgabe und enthält für jeden Eintrag der SimpleSearch-Tabelle lediglich den Namen, die Koordinaten und einen Beschreibungstext (in diesem Fall HTML-Code mit einem Bild und einem Link). 510 | 511 | ### JSON-Format (detail) 512 | 513 | **Request-URI** | `${API_ENDPOINT}/detail/${ITEM_ID}.json` 514 | **Response content-type** | `application/json; charset=UTF-8` 515 | 516 | Das von SimpleSearch über die API ausgelieferte JSON folgt der [allgemeinen Struktur](#struktur-der-rückgabeformate) wie oben beschrieben. 517 | 518 | Eine Beispielausgabe für die [Liste der Badestellen](https://daten.berlin.de/datensaetze/liste-der-badestellen) sieht folgendermaßen aus: 519 | 520 | ```json 521 | { 522 | "messages": { 523 | "messages": [], 524 | "success": null 525 | }, 526 | "results": { 527 | "count": 0, 528 | "items_per_page": 20 529 | }, 530 | "index": [], 531 | "item": { 532 | "id": 33, 533 | "prognoselink": "", 534 | "farbe": "gelb_a.jpg", 535 | "badestellelink": "\"Große Krampe(Link zur Badestelle Große Krampe)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badestellen/artikel.344326.php", 536 | "bezirk": "Treptow-Köpenick", 537 | "dat": "2023-09-06", 538 | "eco": "<15", 539 | "ente": "<15", 540 | "sicht": "40", 541 | "temp": "21,9", 542 | "profillink": "\"Dahme - Große Krampe(Link zum Badegewässerprofil Große Krampe)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badegewaesserprofile/artikel.339117.php", 543 | "pdflink": "\"Alle Probeentnamen der aktuellen Saison für diese Badestelle(Link zur PDF-Datei mit allen Probeentnamen der aktuellen Saison)\":https://data.lageso.de/lageso/baden/bad8.pdf", 544 | "dat_predict": "" 545 | } 546 | } 547 | ``` 548 | 549 | Bei allen SimpleSearch-Anwendungen kann man im `item`-Objekt das `id`-Attribut voraussetzen. 550 | Alle anderen Attribute sind abhängig von der jeweiligen Anwendung und müssen in deren API-Dokumentation nachgelesen werden. 551 | 552 | ### XML-Format (detail) 553 | 554 | **Request-URI** | `${API_ENDPOINT}/detail/${ITEM_ID}.xml` 555 | **Response content-type** | `text/xml; charset=UTF-8` 556 | 557 | Das von SimpleSearch über die API ausgelieferte XML folgt der [allgemeinen Struktur](#struktur-der-rückgabeformate) wie oben beschrieben. 558 | 559 | Eine Beispielausgabe für die [Liste der Badestellen](https://daten.berlin.de/datensaetze/liste-der-badestellen) sieht folgendermaßen aus: 560 | 561 | ```xml 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 0 570 | 20 571 | 572 | 573 | 574 | 33 575 | 576 | 577 | 578 | 579 | 2023-09-06 580 | 581 | 582 | 40 583 | 584 | 585 | 586 | 587 | 588 | 589 | ``` 590 | 591 | Bei allen SimpleSearch-Anwendungen kann man in `/xml/item` das `id`-Element voraussetzen. 592 | Alle anderen Elemente sind abhängig von der jeweiligen Anwendung und müssen in deren API-Dokumentation nachgelesen werden. 593 | 594 | -------------------------------------------------------------------------------- /simplesearch-api/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: SimpleSearch API 3 | path: /simplesearch-api 4 | --- 5 | 6 | [SimpleSearch-Anwendungen](https://support.berlin.de/wiki/SimpleSearch) machen einen tabellarischen Datenbestand (die „SimpleSearch-Tabelle“) auf einer Webseite durchsuchbar. 7 | Dabei bildet jede Zeile der Tabelle einen Eintrag bzw. ein Datenobjekt ab, während die Spalten der Tabelle die verschiedenen Eigenschaften der Objekte definieren. 8 | 9 | So sind z.B. in der SimpleSearch-Anwendung [Liste der Badestellen](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/) die Datenobjekte (also Zeilen) die einzelnen Badestellen. 10 | Eigenschaften wie Name, Ort, Wasserqualität etc. werden über die Spalten abgebildet. 11 | 12 | id | badname | bezirk | cb | eco | ente | sicht | temp | profil | … 13 | -- | ------- | ------ | -- | --- | ---- | ----- | ---- | ------ | --- 14 | … | … | … | … | … | … | … | … | … | … 15 | 48 | Heiligensee, Freibad | Reinickendorf | <300 | 30 | 390 | 150 | 22,1 | Heiligensee | … 16 | 51 | Jungfernheide, Freibad | Charlottenburg-Wilmersdorf | <300 | 61 | 30 | >180 | 20,8 | Jungfernheideteich | … 17 | 54 | Kleine Badewiese | Spandau | <300 | <15 | <15 | >50 | 21,1 | Unterhavel | … 18 | … | … | … | … | … | … | … | … | … | … 19 | 20 | Typische Bestandteile einer SimpleSearch-Anwendung sind das Suchformular, Detailseiten, Karten etc. 21 | Jede SimpleSearch-Anwendung verfügt außerdem über eine einfache REST-API. 22 | Damit kann der Datenbestand in verschiedenen strukturierten, maschinenlesbaren Formaten abgefragt werden. 23 | 24 | Wie Anfragen bzw. Requests an die API einer SimpleSearch-Anwendung fomuliert werden, wird in der folgenden Dokumentation beschrieben. 25 | 26 | ## Anfrage / Request 27 | 28 | ### URLs 29 | 30 | #### `BASE_URL` 31 | 32 | Um die API einer beliebigen SimpleSearch-Anwendung zu nutzen, braucht man zunächst die URL ihrer Startseite (`BASE_URL`). 33 | Für das Beispiel der Liste der Badestellen ist die `BASE_URL` also: 34 | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/) 35 | 36 | #### `API_ENDPOINT` 37 | 38 | Aus der `BASE_URL` ergibt sich der `API_ENDPOINT` durch Anhängen von `index.php`: `${BASE_URL}/index.php`. 39 | Der API-Endpunkt ist der Einstieg für alle API-Anfragen. 40 | Für das Beispiel ist der `API-ENDPOINT`: 41 | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php) 42 | 43 | 44 | #### Dokumentation 45 | 46 | Ausgehend vom `API_ENDPOINT` kann man eine detaillierte Dokumentation spezifisch für jede SimpleSearch-Anwendung aufrufen. Dies geschieht nach dem Muster `${API_ENDPOINT}/api`. 47 | Für die Badestellen-SimpleSearch wird die API-Dokumentation also über folgenden Link erreicht: 48 | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/api](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/api) 49 | 50 | Insbesondere für die veränderlichen Teile einer SimpleSearch-Anwendung – welche Spalten/Felder sind in der SimpleSearch-Tabelle enthalten – ist die Dokumentation hilfreich. 51 | Die Felder der Tabelle können aber auch explorativ in der Anwendung selbst ermittelt werden. 52 | Dazu geht man wie folgt vor: 53 | 54 | 1. Rufen Sie die Anwendung, für die Sie sich interessieren, in Ihrem Browser auf, z.B. die [Liste der Badestellen](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen). 55 | 1. Stellen Sie eine Anfrage über das Suchformular. 56 | 1. Die URL der Ergebnisseite enthält die möglichen URL-Parameter für die verschiedene Felder der SimpleSearch-Tabelle. 57 | 58 | #### Übersicht URLs 59 | 60 | Was | Muster | Beispiel 61 | ---------|----------|--------- 62 | `BASE_URL` | (URL der Anwendung) | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/) 63 | `API_ENDPOINT` | `${BASE_URL}/index.php` | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php) 64 | API-Dokumentation | `${API_ENDPOINT}/api` | [https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/api](https://www.berlin.de/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/api) 65 | 66 | ### Methoden 67 | 68 | Alle SimpleSearch-Anwendungen erlauben über ihre API Suchanfragen mit der Methode [`index`](#index). 69 | Zusätzlich können die Redakteur\*innen Detailansichten freischalten, die dann über die Methode [`detail`](#detail) abrufbar sind. 70 | Beide Methoden bieten Ausgaben in verschiedenen Formaten, wobei das Default-Format jeweils HTML ist. 71 | Die HTML-Ausgaben sind vollständige HTML-Dokumente mit Header, Footer etc. im aktuellen berlin.de-Layout, und daher nur bedingt für externe Nutzer*innen sinnvoll einsetzbar. 72 | 73 | #### `index` 74 | 75 | Mit der `index`-Methode kann man eine Suchabfrage über den Datenbestand einer SimpleSearch-Anwendung durchführen und das Ergebnis im gewünschten Format erhalten. 76 | Die Rückgabe erfolgt dabei entweder aufgeteilt in Seiten (paginiert) oder komplett (wenn möglich). 77 | Die Struktur eines `index`-Aufrufs ist wie folgt: 78 | 79 | ```bash 80 | ${API_ENDPOINT}/index/${PAGINATION_MODE}[.${FORMAT}]?${QUERY_STRING} 81 | ``` 82 | 83 | ##### `PAGINATION_MODE` 84 | 85 | `index` \| `all` 86 | 87 | `PAGINATION_MODE` ist entweder `index` für die seitenweise Ausgabe der Ergebnisse, oder `all`, um den gesamten Datenbestand auf ein Mal anzufordern. 88 | `all` funktioniert nur, wenn der Datenbestand nicht zu groß ist. 89 | Ansonsten wird die Fehlermeldung _"ERROR - Zu viele Daten, bitte benutzen Sie die Blätter-Funktion"_ zurückgegeben (der genaue Kontext der Fehlermeldung hängt vom Ausgabeformat ab). 90 | In diesem Fall muss der `index`-Modus genutzt werden. 91 | 92 | ##### `FORMAT` 93 | 94 | Jede SimpleSearch-Anwendung kann über die `index`-Methode folgende Formate exportieren: 95 | 96 | | [JSON](#json-format-index) | `.json` | 97 | | [XML](#xml-format-index) | `.xml` | 98 | | [CSV](#csv-format-index) | `.csv` | 99 | | [RSS](#rss-format-index) | `.rss` | 100 | | [JSON-RSS](#json-rss-format-index) | `.jrss` | 101 | | HTML (default) | `.html` | 102 | 103 | SimpleSearch-Anwendungen mit Geo-Daten und aktivierter Karte können zusätzlich folgende Geo-Formate zurückgeben: 104 | 105 | | [GeoJSON](#geojson-format-index) | `.geojson` | 106 | | [KML](#kml-format-index) | `.kml` | 107 | 108 | 109 | ##### `QUERY_STRING` 110 | 111 | Über den Query-String kann die Abfrage eingeschränkt oder anders manipuliert werden. 112 | Die folgenden Query-Parameter werden von allen SimpleSearch-Anwendungen angeboten: 113 | 114 | | Parameter | Beschreibung | Beispiel | 115 | | `q` | Ermöglicht eine Volltextsuche über bestimmte Felder des Datenbestands. Welche Felder genau von der Volltextsuche erfasst werden, muss in der API-Dokumentation der jeweiligen Anwendung nachgesehen werden. Default ist `q=`. | `q=`, `q=see`| 116 | | `page` | Gibt an, welche Seite der paginierten Ausgabe gewünscht ist. Nur sinnvoll im Kombination mit `PAGINATION_MODE` `index`. Default ist `page=1`. | `page=2` | 117 | | `order` | Gibt an, welche Felder für die Sortierung der Ergebnisse genutzt weden sollen. Der Zusatz von `ASC`ending und `DESC`ending ist möglich. Welche Felder möglich sind, muss in der API-Dokumentation der jeweiligen Anwendung nachgesehen werden. Default ist `order=id+ASC`. | `order=bezirk`, `order=bezirk+DESC,badname+ASC` | 118 | 119 | SimpleSearch-Anwendungen mit Geo-Koordinaten bieten außerdem die Möglichkeit, über `q_geo` und `q_radius` eine adressbasierte Suche durchzuführen. 120 | 121 | Zudem werden i.d.R. auch die weiteren Spalten bzw. Felder der SimpleSearch-Tabelle als Query-Parameter zu nutzen (z.B. `?bezirk=Spandau`). 122 | Welche zusätzlichen Parameter verfügbar sind, lässt sich in der API-Dokumentation der jeweiligen Anwendung nachlesen. 123 | 124 | #### `detail` 125 | 126 | Mit der `detail`-Methode kann man (wenn ihre Nutzung freigeschaltet wurde) einzelne Einträge des Datenbestandes aufrufen. 127 | 128 | ```bash 129 | ${API_ENDPOINT}/detail/${ITEM_ID}[.${FORMAT}] 130 | ``` 131 | 132 | Ein Beispiel für den Aufruf der `detail`-Methode ist: 133 | 134 | 135 | ##### `ITEM_ID` 136 | 137 | Referenz auf die `id`-Spalte der SimpleSearch-Tabelle, die als eindeutiger Identifier dient. 138 | 139 | ##### `FORMAT` 140 | 141 | Jede SimpleSearch-Anwendung kann über die `detail`-Methode folgende Formate exportieren: 142 | 143 | | [JSON](#json-format-detail) | `.json` | 144 | | [XML](#xml-format-detail) | `.xml` | 145 | 146 | 147 | ### Einschränkung 148 | 149 | Bitte beachten Sie, dass die REST-APIs an der SimpleSearch keine Hochleistungs-APIs sind. Wir bitten also um Caching. 150 | 151 | ## Rückgabe / Response 152 | 153 | ### Allgemeine Struktur 154 | 155 | Die JSON- und XML-Rückgabeformate haben grundsätzlich diesselbe Struktur: 156 | 157 | * `messages`: 158 | * `messages`: Eine Liste von Meldungen. Bei erfolgreicher Ausführung leer. 159 | * `success`: Boolean mit Status der Ausführung. Bei `false` ist ein Fehler aufgetreten. 160 | * `results`: 161 | * `count`: Anzahl der Gesamtergebnisse 162 | * `items_per_page`: Anzahl der Einträge pro Seite 163 | * `index`: Liste mit Ergebnissen, wenn die `index`-Methode genutzt wurde. 164 | * Ergebnis 1: Jedes Ergebnis ist ein Objekt mit Attribut-Wert-Paaren. 165 | Es ist immer mindestens ein `id`-Attribut vorhanden, über das die Objekte in der Datenbank der Anwendung fortlaufend durchnummeriert sind. Das `id`-Attribut wird von der SimpleSearch-Anwendung automatisch vergeben und ist nicht unter der Kontrolle der veröffentlichenden Stelle. 166 | Die übrigen Attribute ergeben sich aus der jeweiligen SimpleSearch-Anwendung und müssen dort in Erfahrung gebracht werden. 167 | * Ergebnis 2 168 | * Ergebnis 3 169 | * ... 170 | * `item`: Objekt mit den Daten eines einzelnen Eintrags, wenn die `detail`-Methode genutzt wurde. 171 | 172 | ### JSON-Format (index) 173 | 174 | **Request-URI** | `${API_ENDPOINT}/index/index.json?${QUERY_STRING}` 175 | **Response content-type** | `application/json; charset=UTF-8` 176 | 177 | Das von SimpleSearch über die API ausgelieferte JSON folgt der [allgemeinen Struktur](#struktur-der-rückgabeformate) wie oben beschrieben. 178 | 179 | Konkret sieht die JSON-Struktur am Beispiel des [Aktenplans der Senatsverwaltung für Finanzen](https://daten.berlin.de/datensaetze/aktenplan-der-senatsverwaltung-für-finanzen) folgendermaßen aus: 180 | 181 | ```json 182 | { 183 | "messages": { 184 | "messages": [], 185 | "success": null 186 | }, 187 | "results": { 188 | "count": 15805, 189 | "items_per_page": 20 190 | }, 191 | "index": [ 192 | { 193 | "id": 37658, 194 | "teilaktenplan": "TLSD - Tarifreferat Lohnsteuer/Sozialversicherung/Diverses", 195 | "aktenplannummer": "Beschaffungsmaßnahmen zur Errichtung von Schießständen für die Zollverwaltung", 196 | "aktentitel": "Wehrpflicht", 197 | "aufbewahrungsfrist_jahre": "10" 198 | }, 199 | { 200 | "id": 2, 201 | "teilaktenplan": "BT - Beteiligungen des Landes Berlin", 202 | "aktenplannummer": "BT", 203 | "aktentitel": "Beteiligungen des Landes Berlin", 204 | "aufbewahrungsfrist_jahre": "10" 205 | }, 206 | { 207 | "id": 5, 208 | "teilaktenplan": "BT - Beteiligungen des Landes Berlin", 209 | "aktenplannummer": "BT 0", 210 | "aktentitel": "Verwaltung von Beteiligungen", 211 | "aufbewahrungsfrist_jahre": "10" 212 | }, 213 | ... 214 | ], 215 | "item": [] 216 | } 217 | ``` 218 | 219 | ### XML-Format (index) 220 | 221 | **Request-URI** | `${API_ENDPOINT}/index/index.xml?${QUERY_STRING}` 222 | **Response content-type** | `text/xml; charset=UTF-8` 223 | 224 | Das von SimpleSearch über die API ausgelieferte XML folgt der [allgemeinen Struktur](#struktur-der-rückgabeformate) wie oben beschrieben. 225 | 226 | Konkret sieht die XML-Struktur am Beispiel des [Aktenplans der Senatsverwaltung für Finanzen](https://daten.berlin.de/datensaetze/aktenplan-der-senatsverwaltung-für-finanzen) folgendermaßen aus: 227 | 228 | ```xml 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 15805 237 | 20 238 | 239 | 240 | 241 | 37658 242 | 243 | 244 | 245 | 10 246 | 247 | 248 | 2 249 | 250 | 251 | 252 | 10 253 | 254 | 255 | 5 256 | 257 | 258 | 259 | 10 260 | 261 | 262 | 263 | 264 | 265 | ``` 266 | 267 | ### CSV-Format (index) 268 | 269 | 270 | **Request-URI** | `${API_ENDPOINT}/index/index.csv?${QUERY_STRING}` 271 | **Response content-type** | `application/csv` 272 | 273 | Das CSV-Format gibt die Ergebnisse der Anfrage als `;`-separiertes CSV zurück. 274 | 275 | Konkret sieht die CSV-Rückgabe am Beispiel des [Aktenplans der Senatsverwaltung für Finanzen](https://daten.berlin.de/datensaetze/aktenplan-der-senatsverwaltung-für-finanzen) folgendermaßen aus: 276 | 277 | ```csv 278 | id;teilaktenplan;aktenplannummer;aktentitel;aufbewahrungsfrist_jahre 279 | 37658;"TLSD - Tarifreferat Lohnsteuer/Sozialversicherung/Diverses";"Beschaffungsmaßnahmen zur Errichtung von Schießständen für die Zollverwaltung";Wehrpflicht;10 280 | 2;"BT - Beteiligungen des Landes Berlin";BT;"Beteiligungen des Landes Berlin";10 281 | 5;"BT - Beteiligungen des Landes Berlin";"BT 0";"Verwaltung von Beteiligungen";10 282 | ... 283 | ``` 284 | 285 | Die Rückgabe besteht aus einer Header-Zeile sowie den Ergebniszeilen. 286 | Auch hier ist wieder mindestens die Spalte `id` enthalten, alle anderen Spalten ergeben sich aus der jeweiligen SimpleSearch-Anwendung und müssen dort in Erfahrung gebracht werden. 287 | 288 | ### RSS-Format (index) 289 | 290 | **Request-URI** | `${API_ENDPOINT}/index/index.rss?${QUERY_STRING}` 291 | **Response content-type** | `text/xml; charset=UTF-8` 292 | 293 | Die SimpleSearch-API bietet auch einen Feed im [RSS 2.0](https://www.rssboard.org/rss-specification)-Format an. 294 | 295 | Die konkrete Rückgabe sieht am Beispiel des [Aktenplans der Senatsverwaltung für Finanzen](https://daten.berlin.de/datensaetze/aktenplan-der-senatsverwaltung-für-finanzen) folgendermaßen aus: 296 | 297 | ```xml 298 | 299 | 300 | 301 | Aktenplan der Senatsverwaltung für Finanzen 302 | Ein Aktenplan ist die Regelung der systematischen Ordnung des gesamten Schriftgutes einer Verwaltung. Ziel des Aktenplanes ist die übersichtliche, nachvollziehbare und wirtschaftliche Ordnung des Schriftgutes. Dieser Aktenplan basiert auf der Grundlage des Aktenplans für die Finanzverwaltung. Es wurden themenspezifische Teilaktenpläne ergänzt. 303 | https://www.berlin.de/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php 304 | <a href="aktenplan@senfin.berlin.de" >aktenplan@senfin.berlin.de</a> (Berlin.de - Aktenplan der Senatsverwaltung für Finanzen) 305 | de 306 | 307 | 335 | 336 | ``` 337 | 338 | ### JSON-RSS-Format (index) 339 | 340 | **Request-URI** | `${API_ENDPOINT}/index/index.jrss?${QUERY_STRING}` 341 | **Response content-type** | `application/rss+json; charset=UTF-8` 342 | 343 | Alternativ zum XML-basierten [RSS-Format](#rss-format) bietet die SimpleSearch-API auch einen JSON-basierten Feed. 344 | 345 | Die konkrete JSON-Rückgabe sieht am Beispiel des [Aktenplans der Senatsverwaltung für Finanzen](https://daten.berlin.de/datensaetze/aktenplan-der-senatsverwaltung-für-finanzen) folgendermaßen aus: 346 | 347 | ```json 348 | { 349 | "version": "2.0", 350 | "channel": { 351 | "title": "Aktenplan der Senatsverwaltung für Finanzen", 352 | "link": "https://www.berlin.de/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php", 353 | "description": "Ein Aktenplan ist die Regelung der systematischen Ordnung des gesamten Schriftgutes einer Verwaltung. Ziel des Aktenplanes ist die übersichtliche, nachvollziehbare und wirtschaftliche Ordnung des Schriftgutes.\n\nDieser Aktenplan basiert auf der Grundlage des Aktenplans für die Finanzverwaltung. Es wurden themenspezifische Teilaktenpläne ergänzt.", 354 | "managingEditor": "aktenplan@senfin.berlin.de (Berlin.de - Aktenplan der Senatsverwaltung für Finanzen)", 355 | "language": "de", 356 | "items": [ 357 | { 358 | "title": 47414, 359 | "link": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/?id=47414&q=", 360 | "guid": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/detail/47414" 361 | }, 362 | { 363 | "title": 47411, 364 | "link": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/?id=47411&q=", 365 | "guid": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/detail/47411" 366 | }, 367 | { 368 | "title": 47408, 369 | "link": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/?id=47408&q=", 370 | "guid": "/sen/finanzen/ueber-uns/leitung-organisation/aktenplan/index.php/detail/47408" 371 | }, 372 | ... 373 | ] 374 | } 375 | } 376 | ``` 377 | 378 | ### GeoJSON-Format (index) 379 | 380 | **Request-URI** | `${API_ENDPOINT}/index/index.geojson?${QUERY_STRING}` 381 | **Response content-type** | `application/geo+json; charset=UTF-8` 382 | 383 | Wenn die Einträge einer SimpleSearch-Anwendung Geokoordinaten enthalten und die Kartendarstellung in der Anwendung aktiviert ist, bietet die SimpleSearch-API die Daten auch im [GeoJSON](https://geojson.org)-Format. 384 | 385 | Die konkrete JSON-Rückgabe sieht am Beispiel der [Liste der Badestellen](https://daten.berlin.de/datensaetze/liste-der-badestellen) folgendermaßen aus: 386 | 387 | ```json 388 | { 389 | "type": "FeatureCollection", 390 | "features": [ 391 | { 392 | "type": "Feature", 393 | "geometry": { 394 | "type": "Point", 395 | "coordinates": [ 396 | 13.14228, 397 | 52.43271 398 | ] 399 | }, 400 | "properties": { 401 | "title": "Alter Hof / Unterhavel", 402 | "href": "/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/detail/3", 403 | "description": "\"\"Steglitz-Zehlendorf
Mehr...", 404 | "id": "/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/detail/3", 405 | "data": { 406 | "id": 3, 407 | "prognoselink": "", 408 | "farbe": "gruen_a.jpg", 409 | "badestellelink": "\"Alter Hof(Link zur Badestelle Alter Hof)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badestellen/artikel.344360.php", 410 | "badname": "Alter Hof", 411 | "bezirk": "Steglitz-Zehlendorf", 412 | "dat": "2023-09-12", 413 | "eco": "<15", 414 | "ente": "<15", 415 | "sicht": "50", 416 | "temp": "23,8", 417 | "profillink": "\"Unterhavel - Alter Hof(Link zum Badegewässerprofil Unterhavel Alter Hof)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badegewaesserprofile/artikel.339134.php", 418 | "pdflink": "\"Alle Probeentnamen der aktuellen Saison für diese Badestelle(Link zur PDF-Datei mit allen Probeentnamen der aktuellen Saison)\":https://data.lageso.de/lageso/baden/bad29.pdf", 419 | "dat_predict": "" 420 | } 421 | } 422 | }, 423 | { 424 | "type": "Feature", 425 | "geometry": { 426 | "type": "Point", 427 | "coordinates": [ 428 | 13.62254, 429 | 52.4075 430 | ] 431 | }, 432 | "properties": { 433 | "title": "Bammelecke", 434 | "href": "/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/detail/6", 435 | "description": "\"\"Treptow-Köpenick
Mehr...", 436 | "id": "/lageso/gesundheit/gesundheitsschutz/badegewaesser/liste-der-badestellen/index.php/detail/6", 437 | "data": { 438 | "id": 6, 439 | "prognoselink": "", 440 | "farbe": "gruen_a.jpg", 441 | "badestellelink": "\"Bammelecke(Link zur Badestelle Bammelecke)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badestellen/artikel.344320.php", 442 | "badname": "Bammelecke", 443 | "bezirk": "Treptow-Köpenick", 444 | "dat": "2023-09-06", 445 | "eco": "<15", 446 | "ente": "<15", 447 | "sicht": "60", 448 | "temp": "", 449 | "profillink": "\"Dahme - Bammelecke(Link zum Badegewässerprofil Bammelecke)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badegewaesserprofile/artikel.339118.php", 450 | "pdflink": "\"Alle Probeentnamen der aktuellen Saison für diese Badestelle(Link zur PDF-Datei mit allen Probeentnamen der aktuellen Saison)\":https://data.lageso.de/lageso/baden/bad1.pdf", 451 | "dat_predict": "" 452 | } 453 | } 454 | }, 455 | ... 456 | ] 457 | } 458 | ``` 459 | 460 | Jeder Eintrag der SimpleSearch-Tabelle wird als ein `Feature` abgebildet. 461 | Jedes `Feature` hat Koordinaten und `properties`. 462 | Die `properties` wiederum enthalten ein `data`-Objekt, das die Attribute der ursprünglichen SimpleSearch-Tabelle enthält. 463 | Auch hier kann wieder mindestens das `id`-Attribut vorrausgesetzt werden, alle andere Attribute müssen der SimpleSearch-Anwendung entnommen werden. 464 | 465 | ### KML-Format (index) 466 | 467 | **Request-URI** | `${API_ENDPOINT}/index/index.kml?${QUERY_STRING}` 468 | **Response content-type** | application/vnd.google-earth.kml; charset=UTF-8 469 | 470 | Als alternatives Geodatenformat bietet die SimpleSearch-API auch einen Export im [KML-Format](http://www.opengeospatial.org/standards/kml/). 471 | 472 | Ausgehend vom Beispiel der [Liste der Badestellen](https://daten.berlin.de/datensaetze/liste-der-badestellen) sieht die XML-Ausgabe der SimpleSearch-API folgendermaßen aus: 473 | 474 | ```xml 475 | 476 | 477 | 478 | Liste der Badestellen 479 | Hilfe 480 | 481 | Mit der Stichwortsuche können Sie nach den folgenden Informationen suchen: “Badestelle”, “Bezirk” und “Badegewässerprofil”. 482 | 483 | Die Freitextsuche findet alle Einträge, die eines der gesuchten Wörter enthalten. Um nach einer genauen Wortgruppe zu suchen, schreiben Sie diese in doppelte Anführungszeichen “”. 484 | 485 | Geben Sie einen Straßennamen ein, so werden Ihnen alle Standorte in der Nähe angezeigt. In der Liste werden die Treffer nach der Entfernung zur jeweiligen Straße sortiert. 486 | 487 | Es reicht die Eingabe eines Begriffes in eines der Auswahlfelder um ein Ergebnis zu erhalten. Bitte danach auf den Button “Suchen” drücken. 488 | 489 | Alter Hof / Unterhavel 490 | Steglitz-Zehlendorf
Mehr... ]]>
492 | 493 | 13.14228,52.43271,0 494 | 495 |
496 | 497 | Bammelecke 498 | Treptow-Köpenick
Mehr... ]]>
500 | 501 | 13.62254,52.4075,0 502 | 503 |
504 | 505 |
506 |
507 | ``` 508 | 509 | Die KML-Ausgabe ist deutlich einfacher als die GeoJSON-Ausgabe und enthält für jeden Eintrag der SimpleSearch-Tabelle lediglich den Namen, die Koordinaten und einen Beschreibungstext (in diesem Fall HTML-Code mit einem Bild und einem Link). 510 | 511 | ### JSON-Format (detail) 512 | 513 | **Request-URI** | `${API_ENDPOINT}/detail/${ITEM_ID}.json` 514 | **Response content-type** | `application/json; charset=UTF-8` 515 | 516 | Das von SimpleSearch über die API ausgelieferte JSON folgt der [allgemeinen Struktur](#struktur-der-rückgabeformate) wie oben beschrieben. 517 | 518 | Eine Beispielausgabe für die [Liste der Badestellen](https://daten.berlin.de/datensaetze/liste-der-badestellen) sieht folgendermaßen aus: 519 | 520 | ```json 521 | { 522 | "messages": { 523 | "messages": [], 524 | "success": null 525 | }, 526 | "results": { 527 | "count": 0, 528 | "items_per_page": 20 529 | }, 530 | "index": [], 531 | "item": { 532 | "id": 33, 533 | "prognoselink": "", 534 | "farbe": "gelb_a.jpg", 535 | "badestellelink": "\"Große Krampe(Link zur Badestelle Große Krampe)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badestellen/artikel.344326.php", 536 | "bezirk": "Treptow-Köpenick", 537 | "dat": "2023-09-06", 538 | "eco": "<15", 539 | "ente": "<15", 540 | "sicht": "40", 541 | "temp": "21,9", 542 | "profillink": "\"Dahme - Große Krampe(Link zum Badegewässerprofil Große Krampe)\":/lageso/gesundheit/gesundheitsschutz/badegewaesser/badegewaesserprofile/artikel.339117.php", 543 | "pdflink": "\"Alle Probeentnamen der aktuellen Saison für diese Badestelle(Link zur PDF-Datei mit allen Probeentnamen der aktuellen Saison)\":https://data.lageso.de/lageso/baden/bad8.pdf", 544 | "dat_predict": "" 545 | } 546 | } 547 | ``` 548 | 549 | Bei allen SimpleSearch-Anwendungen kann man im `item`-Objekt das `id`-Attribut voraussetzen. 550 | Alle anderen Attribute sind abhängig von der jeweiligen Anwendung und müssen in deren API-Dokumentation nachgelesen werden. 551 | 552 | ### XML-Format (detail) 553 | 554 | **Request-URI** | `${API_ENDPOINT}/detail/${ITEM_ID}.xml` 555 | **Response content-type** | `text/xml; charset=UTF-8` 556 | 557 | Das von SimpleSearch über die API ausgelieferte XML folgt der [allgemeinen Struktur](#struktur-der-rückgabeformate) wie oben beschrieben. 558 | 559 | Eine Beispielausgabe für die [Liste der Badestellen](https://daten.berlin.de/datensaetze/liste-der-badestellen) sieht folgendermaßen aus: 560 | 561 | ```xml 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 0 570 | 20 571 | 572 | 573 | 574 | 33 575 | 576 | 577 | 578 | 579 | 2023-09-06 580 | 581 | 582 | 40 583 | 584 | 585 | 586 | 587 | 588 | 589 | ``` 590 | 591 | Bei allen SimpleSearch-Anwendungen kann man in `/xml/item` das `id`-Element voraussetzen. 592 | Alle anderen Elemente sind abhängig von der jeweiligen Anwendung und müssen in deren API-Dokumentation nachgelesen werden. 593 | 594 | 595 | ## Impressum 596 | 597 | **Herausgeber:** Land Berlin, [Senatskanzlei](https://www.berlin.de/rbmskzl/)
598 | **Text:** Knud Hinnerk Möller ([BerlinOnline GmbH](https://www.berlinonline.net))
599 | **Grafiken:** Nadine Wohlfahrt ([BerlinOnline GmbH](https://www.berlinonline.net))
600 | **Lizenz**: Der Text des Handbuchs ist unter einer [Creative Commons Namensnennung 4.0 International Lizenz](https://creativecommons.org/licenses/by/4.0/deed.de) (CC BY 4.0) veröffentlicht. 601 | Bilder und andere Elemente, deren Urheberrecht bei Dritten liegen, sind ausgenommen. 602 | [Quellenverzeichnis](../#quellenverzeichnis) und [Bildverzeichnis](../#bildverzeichnis) mit entsprechenden Urheberrechtsangaben sind im Handbuch enthalten.
603 | **Quelle**: Der Quelltext für das Handbuch befindet sich in folgendem Repository: . 604 | Dort können über die _[Issue](https://github.com/berlinonline/open-data-handbuch/issues)_-Funktion auch Anregungen gemacht oder Fehler gemeldet werden (github-Account erforderlich). 605 | Wer mag, kann auch gleich einen Pull Request stellen!
606 | **Stand**: 2024-11-18 607 | ([2.0.1](https://github.com/berlinonline/open-data-handbuch/blob/master/CHANGELOG.md#201)) 608 | 609 | --- 610 | 611 | ![Europäischer Fonds für regionale Entwicklung (EFRE)](../images/eu_efre_zusatz_unten.png "Logo und Schriftzug 'Europäischer Fonds für regionale Entwicklung (EFRE)'"){:width="205px"}   612 | ![Senatskanzlei Berlin](../images/B_RBm_Skzl_Logo_DE_V_PW_RGB.png "Logo und Schriftzug 'Der regierende Bürgermeister von Berlin, Senatskanzlei'"){:width="240px"} 613 | 614 | -------------------------------------------------------------------------------- /template/default.latex: -------------------------------------------------------------------------------- 1 | \PassOptionsToPackage{unicode=true$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} % options for packages loaded elsewhere 2 | \PassOptionsToPackage{hyphens}{url} 3 | $if(colorlinks)$ 4 | \PassOptionsToPackage{dvipsnames,svgnames*,x11names*}{xcolor} 5 | $endif$ 6 | $if(dir)$ 7 | $if(latex-dir-rtl)$ 8 | \PassOptionsToPackage{RTLdocument}{bidi} 9 | $endif$ 10 | $endif$ 11 | % 12 | \documentclass[ 13 | $if(fontsize)$ 14 | $fontsize$, 15 | $endif$ 16 | $if(lang)$ 17 | $babel-lang$, 18 | $endif$ 19 | $if(papersize)$ 20 | $papersize$paper, 21 | $endif$ 22 | $if(beamer)$ 23 | ignorenonframetext, 24 | $if(handout)$ 25 | handout, 26 | $endif$ 27 | $if(aspectratio)$ 28 | aspectratio=$aspectratio$, 29 | $endif$ 30 | $endif$ 31 | $for(classoption)$ 32 | $classoption$$sep$, 33 | $endfor$ 34 | ]{$documentclass$} 35 | \usepackage[T1]{fontenc} 36 | \usepackage{microtype} 37 | \DisableLigatures[?,!]{encoding=T1} 38 | $if(beamer)$ 39 | $if(background-image)$ 40 | \usebackgroundtemplate{% 41 | \includegraphics[width=\paperwidth]{$background-image$}% 42 | } 43 | $endif$ 44 | \usepackage{pgfpages} 45 | \setbeamertemplate{caption}[numbered] 46 | \setbeamertemplate{caption label separator}{: } 47 | \setbeamercolor{caption name}{fg=normal text.fg} 48 | \beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$ 49 | $for(beameroption)$ 50 | \setbeameroption{$beameroption$} 51 | $endfor$ 52 | % Prevent slide breaks in the middle of a paragraph: 53 | \widowpenalties 1 10000 54 | \raggedbottom 55 | $if(section-titles)$ 56 | \setbeamertemplate{part page}{ 57 | \centering 58 | \begin{beamercolorbox}[sep=16pt,center]{part title} 59 | \usebeamerfont{part title}\insertpart\par 60 | \end{beamercolorbox} 61 | } 62 | \setbeamertemplate{section page}{ 63 | \centering 64 | \begin{beamercolorbox}[sep=12pt,center]{part title} 65 | \usebeamerfont{section title}\insertsection\par 66 | \end{beamercolorbox} 67 | } 68 | \setbeamertemplate{subsection page}{ 69 | \centering 70 | \begin{beamercolorbox}[sep=8pt,center]{part title} 71 | \usebeamerfont{subsection title}\insertsubsection\par 72 | \end{beamercolorbox} 73 | } 74 | \AtBeginPart{ 75 | \frame{\partpage} 76 | } 77 | \AtBeginSection{ 78 | \ifbibliography 79 | \else 80 | \frame{\sectionpage} 81 | \fi 82 | } 83 | \AtBeginSubsection{ 84 | \frame{\subsectionpage} 85 | } 86 | $endif$ 87 | $endif$ 88 | $if(beamerarticle)$ 89 | \usepackage{beamerarticle} % needs to be loaded first 90 | $endif$ 91 | $if(fontfamily)$ 92 | \usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$} 93 | $else$ 94 | \usepackage{lmodern} 95 | $endif$ 96 | $if(linestretch)$ 97 | \usepackage{setspace} 98 | \setstretch{$linestretch$} 99 | $endif$ 100 | \usepackage{amssymb,amsmath} 101 | \usepackage{ifxetex,ifluatex} 102 | \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex 103 | \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} 104 | \usepackage[utf8]{inputenc} 105 | \usepackage{textcomp} % provides euro and other symbols 106 | \else % if luatex or xelatex 107 | $if(mathspec)$ 108 | \ifxetex 109 | \usepackage{mathspec} 110 | \else 111 | \usepackage{unicode-math} 112 | \fi 113 | $else$ 114 | \usepackage{unicode-math} 115 | $endif$ 116 | \defaultfontfeatures{Scale=MatchLowercase} 117 | \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} 118 | $if(mainfont)$ 119 | \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$} 120 | $endif$ 121 | $if(sansfont)$ 122 | \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$} 123 | $endif$ 124 | $if(monofont)$ 125 | \setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$} 126 | $endif$ 127 | $for(fontfamilies)$ 128 | \newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$} 129 | $endfor$ 130 | $if(mathfont)$ 131 | $if(mathspec)$ 132 | \ifxetex 133 | \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} 134 | \else 135 | \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} 136 | \fi 137 | $else$ 138 | \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} 139 | $endif$ 140 | $endif$ 141 | $if(CJKmainfont)$ 142 | \ifxetex 143 | \usepackage{xeCJK} 144 | \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} 145 | \fi 146 | $endif$ 147 | $if(luatexjapresetoptions)$ 148 | \ifluatex 149 | \usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset} 150 | \fi 151 | $endif$ 152 | $if(CJKmainfont)$ 153 | \ifluatex 154 | \usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec} 155 | \setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} 156 | \fi 157 | $endif$ 158 | \fi 159 | $if(beamer)$ 160 | $if(theme)$ 161 | \usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$} 162 | $endif$ 163 | $if(colortheme)$ 164 | \usecolortheme{$colortheme$} 165 | $endif$ 166 | $if(fonttheme)$ 167 | \usefonttheme{$fonttheme$} 168 | $endif$ 169 | $if(mainfont)$ 170 | \usefonttheme{serif} % use mainfont rather than sansfont for slide text 171 | $endif$ 172 | $if(innertheme)$ 173 | \useinnertheme{$innertheme$} 174 | $endif$ 175 | $if(outertheme)$ 176 | \useoutertheme{$outertheme$} 177 | $endif$ 178 | $endif$ 179 | % use upquote if available, for straight quotes in verbatim environments 180 | \IfFileExists{upquote.sty}{\usepackage{upquote}}{} 181 | \IfFileExists{microtype.sty}{% use microtype if available 182 | \usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype} 183 | \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts 184 | }{} 185 | $if(indent)$ 186 | $else$ 187 | \makeatletter 188 | \@ifundefined{KOMAClassName}{% if non-KOMA class 189 | \IfFileExists{parskip.sty}{% 190 | \usepackage{parskip} 191 | }{% else 192 | \setlength{\parindent}{0pt} 193 | \setlength{\parskip}{6pt plus 2pt minus 1pt}} 194 | }{% if KOMA class 195 | \KOMAoptions{parskip=half}} 196 | \makeatother 197 | $endif$ 198 | $if(verbatim-in-note)$ 199 | \usepackage{fancyvrb} 200 | $endif$ 201 | \usepackage{xcolor} 202 | \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available 203 | \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} 204 | \hypersetup{ 205 | $if(title-meta)$ 206 | pdftitle={$title-meta$}, 207 | $endif$ 208 | $if(author-meta)$ 209 | pdfauthor={$author-meta$}, 210 | $endif$ 211 | $if(keywords)$ 212 | pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, 213 | $endif$ 214 | $if(colorlinks)$ 215 | colorlinks=true, 216 | linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$, 217 | filecolor=$if(filecolor)$$filecolor$$else$Maroon$endif$, 218 | citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$, 219 | urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$, 220 | $else$ 221 | pdfborder={0 0 0}, 222 | $endif$ 223 | breaklinks=true} 224 | \urlstyle{same} % don't use monospace font for urls 225 | $if(verbatim-in-note)$ 226 | \VerbatimFootnotes % allows verbatim text in footnotes 227 | $endif$ 228 | $if(geometry)$ 229 | \usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} 230 | $endif$ 231 | $if(beamer)$ 232 | \newif\ifbibliography 233 | $endif$ 234 | $if(listings)$ 235 | \usepackage{listings} 236 | \newcommand{\passthrough}[1]{#1} 237 | \lstset{defaultdialect=[5.3]Lua} 238 | \lstset{defaultdialect=[x86masm]Assembler} 239 | $endif$ 240 | $if(lhs)$ 241 | \lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} 242 | $endif$ 243 | $if(highlighting-macros)$ 244 | $highlighting-macros$ 245 | $endif$ 246 | $if(tables)$ 247 | \usepackage{calc} 248 | \usepackage{longtable,booktabs,array} 249 | $if(beamer)$ 250 | \usepackage{caption} 251 | % These lines are needed to make table captions work with longtable: 252 | \makeatletter 253 | \def\fnum@table{\tablename~\thetable} 254 | \makeatother 255 | $else$ 256 | % Allow footnotes in longtable head/foot 257 | \IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} 258 | \makesavenoteenv{longtable} 259 | $endif$ 260 | $endif$ 261 | $if(graphics)$ 262 | \usepackage{graphicx,grffile} 263 | \makeatletter 264 | \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} 265 | \def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} 266 | \makeatother 267 | % Scale images if necessary, so that they will not overflow the page 268 | % margins by default, and it is still possible to overwrite the defaults 269 | % using explicit options in \includegraphics[width, height, ...]{} 270 | \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} 271 | $endif$ 272 | $if(links-as-notes)$ 273 | % Make links footnotes instead of hotlinks: 274 | \DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}} 275 | $endif$ 276 | $if(strikeout)$ 277 | \usepackage[normalem]{ulem} 278 | % avoid problems with \sout in headers with hyperref: 279 | \pdfstringdefDisableCommands{\renewcommand{\sout}{}} 280 | $endif$ 281 | \setlength{\emergencystretch}{3em} % prevent overfull lines 282 | \providecommand{\tightlist}{% 283 | \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} 284 | $if(numbersections)$ 285 | \setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} 286 | $else$ 287 | \setcounter{secnumdepth}{-2} 288 | $endif$ 289 | $if(beamer)$ 290 | $else$ 291 | $if(subparagraph)$ 292 | $else$ 293 | % Redefines (sub)paragraphs to behave more like sections 294 | \ifx\paragraph\undefined\else 295 | \let\oldparagraph\paragraph 296 | \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} 297 | \fi 298 | \ifx\subparagraph\undefined\else 299 | \let\oldsubparagraph\subparagraph 300 | \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} 301 | \fi 302 | $endif$ 303 | $endif$ 304 | $if(pagestyle)$ 305 | \pagestyle{$pagestyle$} 306 | $endif$ 307 | 308 | % set default figure placement to htbp 309 | \makeatletter 310 | \def\fps@figure{htbp} 311 | \makeatother 312 | 313 | $for(header-includes)$ 314 | $header-includes$ 315 | $endfor$ 316 | $if(lang)$ 317 | \ifnum 0\ifxetex 1\fi=0 % if pdftex or luatex 318 | \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel} 319 | $if(babel-newcommands)$ 320 | $babel-newcommands$ 321 | $endif$ 322 | \else % if xetex 323 | % load polyglossia as late as possible as it *could* call bidi if RTL lang (e.g. Hebrew or Arabic) 324 | \usepackage{polyglossia} 325 | \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} 326 | $for(polyglossia-otherlangs)$ 327 | \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} 328 | $endfor$ 329 | \fi 330 | $endif$ 331 | $if(dir)$ 332 | \ifxetex 333 | % load bidi as late as possible as it modifies e.g. graphicx 334 | \usepackage{bidi} 335 | \fi 336 | \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex 337 | \TeXXeTstate=1 338 | \newcommand{\RL}[1]{\beginR #1\endR} 339 | \newcommand{\LR}[1]{\beginL #1\endL} 340 | \newenvironment{RTL}{\beginR}{\endR} 341 | \newenvironment{LTR}{\beginL}{\endL} 342 | \fi 343 | $endif$ 344 | $if(natbib)$ 345 | \usepackage[$natbiboptions$]{natbib} 346 | \bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} 347 | $endif$ 348 | $if(biblatex)$ 349 | \usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} 350 | $for(bibliography)$ 351 | \addbibresource{$bibliography$} 352 | $endfor$ 353 | $endif$ 354 | 355 | $if(title)$ 356 | \title{$title$$if(thanks)$\thanks{$thanks$}$endif$} 357 | $endif$ 358 | $if(subtitle)$ 359 | $if(beamer)$ 360 | $else$ 361 | \usepackage{etoolbox} 362 | \makeatletter 363 | \providecommand{\subtitle}[1]{% add subtitle to \maketitle 364 | \apptocmd{\@title}{\par {\large #1 \par}}{}{} 365 | } 366 | \makeatother 367 | $endif$ 368 | \subtitle{$subtitle$} 369 | $endif$ 370 | $if(author)$ 371 | \author{$for(author)$$author$$sep$ \and $endfor$} 372 | $endif$ 373 | \date{$date$} 374 | $if(beamer)$ 375 | $if(institute)$ 376 | \institute{$for(institute)$$institute$$sep$ \and $endfor$} 377 | $endif$ 378 | $if(titlegraphic)$ 379 | \titlegraphic{\includegraphics{$titlegraphic$}} 380 | $endif$ 381 | $if(logo)$ 382 | \logo{\includegraphics{$logo$}} 383 | $endif$ 384 | $endif$ 385 | 386 | \begin{document} 387 | $if(title)$ 388 | $if(beamer)$ 389 | \frame{\titlepage} 390 | $else$ 391 | %\maketitle 392 | %\includegraphics{$titlegraphic$} 393 | \clearpage 394 | %% temporary titles 395 | % command to provide stretchy vertical space in proportion 396 | \newcommand\nbvspace[1][3]{\vspace*{\stretch{#1}}} 397 | % allow some slack to avoid under/overfull boxes 398 | \newcommand\nbstretchyspace{\spaceskip0.5em plus 0.25em minus 0.25em} 399 | % To improve spacing on titlepages 400 | \newcommand{\nbtitlestretch}{\spaceskip0.6em} 401 | \thispagestyle{empty} 402 | \begin{center} 403 | \bfseries 404 | \nbvspace[1] 405 | \Huge 406 | $title$ 407 | % {\nbtitlestretch\huge 408 | % $title$} 409 | 410 | \nbvspace[1] 411 | \normalsize 412 | 413 | % TO WHICH IS ADDED MANY USEFUL ONE\\ 414 | % LINERS AND CODE SO THAT\\ 415 | % YOU CAN AWK LIKE A HAWK 416 | % \nbvspace[1] 417 | % \small BY\\ 418 | % \Large PETERIS KRUMINS\\[0.5em] 419 | % \footnotesize AUTHOR OF ``A WORKING ALGEBRA,'' ``WIRELESS TELEGRAPHY,\\ 420 | % ITS HISTORY, THEORY AND PRACTICE,'' ETC., ETC. 421 | 422 | \nbvspace[2] 423 | 424 | \includegraphics{$cover-image$} 425 | \nbvspace[3] 426 | \normalsize 427 | 428 | % DOHA\\ 429 | \large 430 | $date$ 431 | \nbvspace[1] 432 | \end{center} 433 | $endif$ 434 | $if(abstract)$ 435 | \begin{abstract} 436 | $abstract$ 437 | \end{abstract} 438 | $endif$ 439 | $endif$ 440 | 441 | \pagestyle{plain} 442 | 443 | 444 | $for(include-before)$ 445 | $include-before$ 446 | 447 | $endfor$ 448 | $if(toc)$ 449 | $if(toc-title)$ 450 | \renewcommand*\contentsname{$toc-title$} 451 | $endif$ 452 | $if(beamer)$ 453 | \begin{frame} 454 | $if(toc-title)$ 455 | \frametitle{$toc-title$} 456 | $endif$ 457 | \tableofcontents[hideallsubsections] 458 | \end{frame} 459 | $else$ 460 | { 461 | $if(colorlinks)$ 462 | \hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$} 463 | $endif$ 464 | \setcounter{tocdepth}{$toc-depth$} 465 | \tableofcontents 466 | } 467 | $endif$ 468 | $endif$ 469 | $if(lot)$ 470 | \listoftables 471 | $endif$ 472 | $if(lof)$ 473 | \listoffigures 474 | $endif$ 475 | $body$ 476 | 477 | $if(natbib)$ 478 | $if(bibliography)$ 479 | $if(biblio-title)$ 480 | $if(book-class)$ 481 | \renewcommand\bibname{$biblio-title$} 482 | $else$ 483 | \renewcommand\refname{$biblio-title$} 484 | $endif$ 485 | $endif$ 486 | $if(beamer)$ 487 | \begin{frame}[allowframebreaks]{$biblio-title$} 488 | \bibliographytrue 489 | $endif$ 490 | \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} 491 | $if(beamer)$ 492 | \end{frame} 493 | $endif$ 494 | 495 | $endif$ 496 | $endif$ 497 | $if(biblatex)$ 498 | $if(beamer)$ 499 | \begin{frame}[allowframebreaks]{$biblio-title$} 500 | \bibliographytrue 501 | \printbibliography[heading=none] 502 | \end{frame} 503 | $else$ 504 | \printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ 505 | $endif$ 506 | 507 | $endif$ 508 | $for(include-after)$ 509 | $include-after$ 510 | 511 | $endfor$ 512 | \end{document} 513 | -------------------------------------------------------------------------------- /template/listings-setup.tex: -------------------------------------------------------------------------------- 1 | \usepackage{xcolor} 2 | 3 | \lstset{ 4 | basicstyle=\small\ttfamily, 5 | numbers=left, 6 | numberstyle=\footnotesize, 7 | stepnumber=2, 8 | numbersep=5pt, 9 | backgroundcolor=\color{black!10}, 10 | showspaces=false, 11 | showstringspaces=false, 12 | showtabs=false, 13 | tabsize=2, 14 | captionpos=b, 15 | breaklines=true, 16 | breakatwhitespace=false, 17 | breakautoindent=true, 18 | linewidth=\textwidth, 19 | literate=% 20 | {Ö}{{\"O}}1 21 | {Ä}{{\"A}}1 22 | {Ü}{{\"U}}1 23 | {ß}{{\ss}}1 24 | {ü}{{\"u}}1 25 | {ä}{{\"a}}1 26 | {ö}{{\"o}}1 27 | {§}{{\S}}1 28 | } 29 | -------------------------------------------------------------------------------- /template/metadata_yml.template: -------------------------------------------------------------------------------- 1 | --- 2 | documentclass: book 3 | language: de 4 | date: @include(date) 5 | title: 'Das Berliner Open-Data-Handbuch' 6 | cover-image: images/title.png 7 | numbersections: true 8 | fontfamily: arev 9 | papersize: a4 10 | pagestyle: plain 11 | header-includes: 12 | - \urlstyle{tt} 13 | --- --------------------------------------------------------------------------------