{"ref":"artifact:sap-samples-cloud-cap-hana-swapi","page":"/artifacts/sap-samples-cloud-cap-hana-swapi","json":"/artifacts/sap-samples-cloud-cap-hana-swapi.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"sap-samples-cloud-cap-hana-swapi","name":"SAP-samples/cloud-cap-hana-swapi","artifact_type":"sample","ecosystem":"cap","flavors":[{"key":"node","source":{"url":"https://github.com/SAP-samples/cloud-cap-hana-swapi","title":"SAP-samples/cloud-cap-hana-swapi — README","checked":"2026-09-13","quote":"[Node.js 16, 18, or 20](https://nodejs.org/en/)"}}],"use_as":"starting-point","domain":"data-and-persistence","origin_ring":"sap-official","description":{"one_line":"A CAP data model demonstrating bi-directional, many-to-many relationships, built on the SWAPI Star Wars dataset extended with TV shows and streaming series and loadable into SQLite, HANA or PostgreSQL.","short":"CAP data model of many-to-many relationships on a Star Wars dataset","what_it_solves":"Many-to-many relationships across a non-trivial dataset are hard to model well, and this rebuilds the old SWAPI Star Wars dataset as a CAP data model to practise it: people, films, species, starships, vehicles and planets, each linked in both directions. It extends the original with a `Show` entity for TV and streaming productions, an `Episode` composition beneath each show, and six read-only `UNION ALL` views that unify films and shows behind one query surface. The data comes from a two-step pipeline — a rate-limited Wookieepedia scraper with a committed cache, then a load step into SQLite, HANA or [PostgreSQL](external:postgresql) — so the model can be explored without live scraping. It stops at the data layer and a generated Fiori preview UI; there is no bespoke application on top."},"links":{"repo":"https://github.com/SAP-samples/cloud-cap-hana-swapi"},"identity":{"license":"Apache-2.0"},"maintainers":["actor:sap-samples"],"source_available":true,"demonstrates":["capability:data-modelling"],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-13"},"contributors":["actor:ajinkyapatil8190","actor:btbernard","actor:jung-thomas","actor:marianfoo","actor:patricebender"],"changed_in":[{"version":"1.8.0","date":"2026-03-14","what_changed":"The legacy value-help helper entities and projections (climate, terrain, hair_colors, eye_colors, skin_colors, classification, designation, language) are removed in favour of the `*Values` entities; the migration is described in `cap/docs/value-help-migration.md`.","invalidates":"Walkthroughs that query or annotate the old helper entities such as `climate` or `hair_colors`.","source":{"url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#180---2026-03-14","title":"cloud-cap-hana-swapi changelog, 1.8.0","checked":"2026-10-19","quote":"BREAKING: remove legacy value-help helper entities/projections (climate, terrain, hair_colors, eye_colors, skin_colors, classification, designation, language) in favor of *Values artifacts"}}]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"5 contributors, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-07, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"no release dates"},{"label":"Maintainer's CI","tier":"good","evidence":"Deploy docs to GitHub Pages green, 2026-07-14"}],"practice":[{"label":"Tests","tier":"good","evidence":"12 test files"},{"label":"Docs","tier":"good","evidence":"docs/ with 20 pages, README 9 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":89,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-25","npm":"not published under this name","stars":89,"forks":45,"open_issues":0,"archived":false,"pushed_at":"2026-07-14","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","contributors":5,"tree_truncated":false,"test_files":12,"workflows":2,"other_ci":false,"readme_bytes":9289,"docs_files":20,"changelog":true,"license_file":true,"dts_files":0,"ci_status":"success","ci_run_at":"2026-07-14","ci_workflow":"Deploy docs to GitHub Pages","ci_event":"push","readme_path":"README.md","readme_sha":"7cb4a30108859a340e603f99aeb13d2de871bfe4","created_at":"2020-12-01T16:52:48Z","open_prs":0,"first_commit":"2020-12-01","last_commit":"2026-07-14","commits":348,"repo_read":"2026-10-25"},"release_notes":{"license":"Apache-2.0","quotable":true,"source":{"kind":"repo","path":"CHANGELOG.md","ref":"main","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md"},"format":"keep-a-changelog","releases":[{"version":"2.1.0","date":"2026-07-14","date_source":"heading","heading":"[2.1.0] - 2026-07-14","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#210---2026-07-14","sections":[{"kind":"other","heading":null,"items":11}],"hash":"77e315fe82137c7d"},{"version":"2.0.2","date":"2026-05-01","date_source":"heading","heading":"[2.0.2] - 2026-05-01","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#202---2026-05-01","sections":[{"kind":"other","heading":null,"items":19}],"hash":"a9977f132a043526"},{"version":"2.0.0","date":"2026-04-04","date_source":"heading","heading":"[2.0.0] - 2026-04-04","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#200---2026-04-04","sections":[{"kind":"other","heading":null,"items":49}],"hash":"f748ddd67cf1bfcd"},{"version":"1.8.0","date":"2026-03-14","date_source":"heading","heading":"[1.8.0] - 2026-03-14","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#180---2026-03-14","sections":[{"kind":"breaking","heading":null,"items":1},{"kind":"other","heading":null,"items":9}],"hash":"e6ccd5df1829be3c","cited_by":[{"version":"1.8.0","date":"2026-03-14"}]},{"version":"1.4.0","date":"2024-07-19","date_source":"heading","heading":"[1.4.0] - 2024-07-19","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#140---2024-07-19","sections":[{"kind":"other","heading":null,"items":3}],"hash":"844c4f37914902bf"},{"version":"1.3.0","date":"2024-03-01","date_source":"heading","heading":"[1.3.0] - 2024-03-01","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#130---2024-03-01","sections":[{"kind":"other","heading":null,"items":2}],"hash":"9f5034b7d21033ae"},{"version":"1.2.7","date":"2024-02-02","date_source":"heading","heading":"[1.2.7] - 2024-02-02","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#127---2024-02-02","sections":[{"kind":"other","heading":null,"items":3}],"hash":"272c1c479409bdbc"},{"version":"1.2.5","date":"2024-01-10","date_source":"heading","heading":"[1.2.5] - 2024-01-10","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#125---2024-01-10","sections":[{"kind":"other","heading":null,"items":7}],"hash":"daf3d32bdd905234"},{"version":"1.2.3","date":"2023-09-06","date_source":"heading","heading":"[1.2.3] - 2023-09-06","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#123---2023-09-06","sections":[{"kind":"other","heading":null,"items":2}],"hash":"1a887f5b469d763b"},{"version":"1.2.1","date":"2023-07-07","date_source":"heading","heading":"[1.2.1] - 2023-07-07","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#121---2023-07-07","sections":[{"kind":"other","heading":null,"items":2}],"hash":"e4c5ef53cde670cf"},{"version":"1.2.0","date":"2023-06-28","date_source":"heading","heading":"[1.2.0] - 2023-06-28","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#120---2023-06-28","sections":[{"kind":"other","heading":null,"items":2}],"hash":"1ab5a80da94d1cd4"},{"version":"1.1.8","date":"2023-02-28","date_source":"heading","heading":"[1.1.8] - 2023-02-28","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#118---2023-02-28","sections":[{"kind":"other","heading":null,"items":3}],"hash":"61e7bd605d58ac02"},{"version":"1.1.5","date":"2022-12-19","date_source":"heading","heading":"[1.1.5] - 2022-12-19","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#115---2022-12-19","sections":[{"kind":"other","heading":null,"items":3}],"hash":"c272da06bfa7bc4b"},{"version":"1.1.5","date":"2022-11-28","date_source":"heading","heading":"[1.1.5] - 2022-11-28","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#115---2022-11-28","sections":[{"kind":"other","heading":null,"items":3}],"hash":"39a7b3a12b17cff6"},{"version":"1.1.4","date":"2022-08-11","date_source":"heading","heading":"[1.1.4] - 2022-08-11","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#114---2022-08-11","sections":[{"kind":"other","heading":null,"items":6}],"hash":"75926aa37a53609d"},{"version":"1.1.0","date":"2022-07-05","date_source":"heading","heading":"[1.1.0] - 2022-07-05","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#110---2022-07-05","sections":[{"kind":"other","heading":null,"items":6}],"hash":"6cdfbd6616d89ec8"},{"version":"1.0.7","date":"2022-04-14","date_source":"heading","heading":"[1.0.7] - 2022-04-14","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#107---2022-04-14","sections":[{"kind":"other","heading":null,"items":2}],"hash":"bde29d28021a933d"},{"version":"1.0.6","date":"2022-03-30","date_source":"heading","heading":"[1.0.6] - 2022-03-30","url":"https://github.com/SAP-samples/cloud-cap-hana-swapi/blob/main/CHANGELOG.md#106---2022-03-30","sections":[{"kind":"other","heading":null,"items":8}],"hash":"0dd3a133f88cc6ba"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:sap-samples","name":"SAP Samples","json":"/actors/sap-samples.json"}],"contributors":[{"ref":"actor:ajinkyapatil8190","name":"Ajinkya Patil","json":"/actors/ajinkyapatil8190.json"},{"ref":"actor:btbernard","name":"Brian Bernard","json":"/actors/btbernard.json"},{"ref":"actor:marianfoo","name":"Marian Zeis","json":"/actors/marianfoo.json"},{"ref":"actor:patricebender","name":"Patrice Bender","json":"/actors/patricebender.json"},{"ref":"actor:jung-thomas","name":"Thomas Jung","json":"/actors/jung-thomas.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}