{"id":22484997,"url":"https://github.com/semagrow/semagrow","last_synced_at":"2026-01-22T20:13:45.753Z","repository":{"id":1717580,"uuid":"38038181","full_name":"semagrow/semagrow","owner":"semagrow","description":"A SPARQL query federator of heterogeneous data sources","archived":false,"fork":false,"pushed_at":"2022-12-16T08:14:54.000Z","size":7542,"stargazers_count":36,"open_issues_count":29,"forks_count":8,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-08-02T19:02:30.407Z","etag":null,"topics":["distributed","federated","graph-database","linked-data","rdf","semagrow","sparql","sparql-endpoints","triplestore","void"],"latest_commit_sha":null,"homepage":"https://semagrow.github.io","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/semagrow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-06-25T08:40:58.000Z","updated_at":"2024-04-22T19:03:12.000Z","dependencies_parsed_at":"2023-01-11T16:05:32.530Z","dependency_job_id":null,"html_url":"https://github.com/semagrow/semagrow","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/semagrow/semagrow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semagrow%2Fsemagrow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semagrow%2Fsemagrow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semagrow%2Fsemagrow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semagrow%2Fsemagrow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/semagrow","download_url":"https://codeload.github.com/semagrow/semagrow/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semagrow%2Fsemagrow/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28670366,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T19:36:09.361Z","status":"ssl_error","status_checked_at":"2026-01-22T19:36:05.567Z","response_time":144,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["distributed","federated","graph-database","linked-data","rdf","semagrow","sparql","sparql-endpoints","triplestore","void"],"created_at":"2024-12-06T17:11:52.568Z","updated_at":"2026-01-22T20:13:45.716Z","avatar_url":"https://github.com/semagrow.png","language":"JavaScript","readme":"# Semagrow\n[![GitHub license](https://img.shields.io/badge/license-Apache%202-blue.svg)](https://raw.githubusercontent.com/semagrow/semagrow/main/LICENSE)\n[![Build Status](https://travis-ci.org/semagrow/semagrow.svg?branch=main)](https://travis-ci.org/semagrow/semagrow)\n\nSemagrow is a federated SPARQL query processor that allows combining, cross-indexing and, in general,\nmaking the best out of all public data, regardless of their size, update rate, and schema.\n\nSemagrow offers a single SPARQL endpoint that serves data from remote data sources and that hides\nfrom client applications heterogeneity in both form (federating non-SPARQL endpoints) and\nmeaning (transparently mapping queries and query results between vocabularies).\n\nThe main difference between Semagrow and most existing distributed querying solutions is\nthat Semagrow targets the federation of heterogeneous and independently provided data sources.\n\nIn other words, Semagrow aims to offer the most efficient distributed querying solution that\ncan be achieved without controlling the way data is distributed between sources and,\nin general, without having the responsibility to centrally manage the data sources of the\nfederation.\n\n## Getting Started\n\n### Building\n\nBuilding Semagrow from sources requires to have a system with JDK8 and Maven 3.1 or higher.  \nOptionally, you may need a PostgreSQL as a requirement for the query transformation\nfunctionality.\n\nTo build Semagrow you should type:\n```bash\n$ mvn clean install\n```\nin the top-level project directory. This will result in jar file\nin the target directory of the respective module and in a war file in the target directory of\nthe `webgui` module that can be deployed to the Servlet server of your choice.\n\n#### Bundled with Apache Tomcat\n\nMoreover, Semagrow can be build pre-bundled with the Apache Tomcat servlet server.\nTo achieve that you could issue\n```bash\n$ mvn clean package -P tomcat-bundle\n```\nfrom the top-level directory of the project. This will result in a\ncompressed file in the target directory of the `assembly` module \ncontaining a fully equipped Apache Tomcat with Semagrow pre-installed.\nHowever, please note that external dependencies such as the\nPostgresSQL database needs to be installed and run separately.\n\n#### Building a Docker image from sources\n\nYou can also test your build deployed in a docker image (Docker 18.09 or newer required for building). To do so run at the project root directory:\n```bash\n$ DOCKER_BUILDKIT=1 docker build -t semagrow .\n```\nThe produced image will be tagged as `semagrow:latest` and will contain Tomcat with Semagrow deployed.\n\n### Configuration\n\nBy default, Semagrow look for its configuration files in `/etc/default/semagrow`\nand expects to find at least a `repository.ttl` and a `metadata.ttl` file in\norder to establish a federation of endpoints. The `repository.ttl` describes\nthe configuration of the Semagrow endpoint, while the `metadata.ttl` describes\nthe endpoints to be federated. The `repository.ttl` configuration file\nalso defines the location of the `metadata.ttl` that can be changed to the desired\npath.\n\nSamples of these configuration files can be found as\n[resources of the `http` module](https://github.com/semagrow/semagrow/tree/main/http/src/main/resources)\n\n### Running Semagrow\n\n#### Running Semagrow from the Apache Tomcat bundle\n\nIn order to run the bundle of Apache Tomcat with SemaGrow you should\n\n1. uncompress the generated zip,\n2. copy the files from the `resources` folder to `/etc/default/semagrow` and\n3. run the `startup.sh` script located in the `bin` folder.\n\nSemaGrow can be accessed at `http://localhost:8080/SemaGrow/`.\n\n#### Running Semagrow using Docker\n\nSemagrow has an [official docker repository](https://github.com/semagrow/docker-semagrow)\nand official docker images are available in [Docker Hub](https://hub.docker.com/r/semagrow/semagrow/).\n\nTo run semagrow using the latest official docker image you should execute\n```bash\n$ docker run -d semagrow/semagrow\n```\nHoweover, you can also build your own docker image using the steps described in Section [Building](#### Building a Docker image from sources)\nThe produced image will be tagged as `semagrow` and will contain Tomcat with Semagrow deployed.\n\nTo run the newly produced image you should execute\n```bash\n$ docker run -d semagrow\n```\nor if you want to test Semagrow with your configuration files (`repository.ttl` and `metadata.ttl`) issue\n```bash\n$ docker run -d -v /path/to/configuration:/etc/default/semagrow semagrow\n```\n\nIn either case you can access Semagrow at `http://\u003cCONTAINER_IP\u003e:8080/SemaGrow/`\nwhere `\u003cCONTAINER_IP\u003e` is the address assigned to the semagrow container and can\nbe retrieved using [`docker inspect`](https://docs.docker.com/engine/reference/commandline/inspect/)\n\n## Known issues\n\n* SemaGrow uses UNION instead of VALUES to implement the BindJoin operator. This fails in 4store 1.1.5 and previous versions in the  presence of FILTER clauses due to an unsafe optimization by 4store.\n* When deploying in Glassfish 4 by coping the SemaGrow.war file in the autodeploy directory, Semagrow is accessible at `http://DOMAIN/SemaGrow/index.jsp` instead of `http://DOMAIN/SemaGrow/`\n\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemagrow%2Fsemagrow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemagrow%2Fsemagrow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemagrow%2Fsemagrow/lists"}