{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,4]],"date-time":"2026-05-04T10:21:39Z","timestamp":1777890099001,"version":"3.51.4"},"reference-count":14,"publisher":"SAGE Publications","issue":"1","license":[{"start":{"date-parts":[[2022,11,30]],"date-time":"2022-11-30T00:00:00Z","timestamp":1669766400000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["SW"],"published-print":{"date-parts":[[2022,11,30]]},"abstract":"<jats:p>A common practice within object-oriented software is using composition to realize complex object behavior in a reusable way. Such compositions can be managed by Dependency Injection (DI), a popular technique in which components only depend on minimal interfaces and have their concrete dependencies passed into them. Instead of requiring program code, this separation enables describing the desired instantiations in declarative configuration files, such that objects can be wired together automatically at runtime. Configurations for existing DI frameworks typically only have local semantics, which limits their usage in other contexts. Yet some cases require configurations outside of their local scope, such as for the reproducibility of experiments, static program analysis, and semantic workflows. As such, there is a need for globally interoperable, addressable, and discoverable configurations, which can be achieved by leveraging Linked Data. We created Components.js as an open-source semantic DI framework for TypeScript and JavaScript applications, providing global semantics via Linked Data-based configuration files. In this article, we report on the Components.js framework by explaining its architecture and configuration, and discuss its impact by mentioning where and how applications use it. We show that Components.js is a stable framework that has seen significant uptake during the last couple of years. We recommend it for software projects that require high flexibility, configuration without code changes, sharing configurations with others, or applying these configurations in other contexts such as experimentation or static program analysis. We anticipate that Components.js will continue driving concrete research and development projects that require high degrees of customization to facilitate experimentation and testing, including the Comunica query engine and the Community Solid Server for decentralized data publication.<\/jats:p>","DOI":"10.3233\/sw-222945","type":"journal-article","created":{"date-parts":[[2022,1,21]],"date-time":"2022-01-21T11:56:23Z","timestamp":1642766183000},"page":"135-153","source":"Crossref","is-referenced-by-count":4,"title":["Components.js: Semantic dependency injection"],"prefix":"10.1177","volume":"14","author":[{"given":"Ruben","family":"Taelman","sequence":"first","affiliation":[{"name":"IDLab, Department of Electronics and Information Systems, Ghent University \u2013 imec, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Joachim","family":"Van Herwegen","sequence":"additional","affiliation":[{"name":"IDLab, Department of Electronics and Information Systems, Ghent University \u2013 imec, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Miel","family":"Vander Sande","sequence":"additional","affiliation":[{"name":"meemoo, Flemish Institute for Archives, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ruben","family":"Verborgh","sequence":"additional","affiliation":[{"name":"IDLab, Department of Electronics and Information Systems, Ghent University \u2013 imec, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"179","reference":[{"key":"10.3233\/SW-222945_ref1","doi-asserted-by":"publisher","DOI":"10.1145\/3460210"},{"key":"10.3233\/SW-222945_ref2","doi-asserted-by":"publisher","first-page":"16","DOI":"10.1016\/j.websem.2015.01.003","article-title":"Using a suite of ontologies for preserving workflow-centric research objects","volume":"32","author":"Belhajjame","year":"2015","journal-title":"Web Semantics: Science, Services and Agents on the World Wide Web"},{"key":"10.3233\/SW-222945_ref4","doi-asserted-by":"crossref","first-page":"28","DOI":"10.1038\/scientificamerican0501-34","article-title":"The semantic web","volume":"284","author":"Berners-Lee","year":"2001","journal-title":"Scientific American"},{"key":"10.3233\/SW-222945_ref16","unstructured":"E.\u00a0Gamma, R.\u00a0Helm, R.\u00a0Johnson and J.\u00a0Vlissides, Elements of Reusable Object-Oriented Software. Design Patterns, Addison-Wesley Publishing Company, Massachusetts, 1995."},{"key":"10.3233\/SW-222945_ref17","doi-asserted-by":"publisher","DOI":"10.1145\/2110497.2110504"},{"key":"10.3233\/SW-222945_ref24","doi-asserted-by":"publisher","DOI":"10.1186\/2041-1480-5-25"},{"key":"10.3233\/SW-222945_ref25","doi-asserted-by":"publisher","DOI":"10.1109\/escience.2014.47"},{"key":"10.3233\/SW-222945_ref29","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-92673-3_17"},{"key":"10.3233\/SW-222945_ref31","doi-asserted-by":"publisher","DOI":"10.1145\/2814864.2814882"},{"key":"10.3233\/SW-222945_ref32","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-49004-5_34"},{"key":"10.3233\/SW-222945_ref39","doi-asserted-by":"publisher","DOI":"10.5281\/zenodo.5644902"},{"key":"10.3233\/SW-222945_ref40","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-00668-6_15"},{"key":"10.3233\/SW-222945_ref43","doi-asserted-by":"publisher","DOI":"10.5281\/zenodo.1243988"},{"key":"10.3233\/SW-222945_ref47","unstructured":"J.\u00a0Van Herwegen, R.\u00a0Taelman, S.\u00a0Capadisli and R.\u00a0Verborgh, Describing configurations of software experiments as linked data, in: Proceedings of the 1st SemSci Workshop, 2017."}],"container-title":["Semantic Web"],"original-title":[],"link":[{"URL":"https:\/\/content.iospress.com\/download?id=10.3233\/SW-222945","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,1]],"date-time":"2026-05-01T05:26:30Z","timestamp":1777613190000},"score":1,"resource":{"primary":{"URL":"https:\/\/journals.sagepub.com\/doi\/full\/10.3233\/SW-222945"}},"subtitle":[],"editor":[{"given":"Aidan","family":"Hogan","sequence":"additional","affiliation":[{"name":"Universidad de Chile, Chile"}],"role":[{"role":"editor","vocabulary":"crossref"}]}],"short-title":[],"issued":{"date-parts":[[2022,11,30]]},"references-count":14,"journal-issue":{"issue":"1"},"URL":"https:\/\/doi.org\/10.3233\/sw-222945","relation":{},"ISSN":["2210-4968","1570-0844"],"issn-type":[{"value":"2210-4968","type":"electronic"},{"value":"1570-0844","type":"print"}],"subject":[],"published":{"date-parts":[[2022,11,30]]}}}