{"id":13552004,"url":"https://github.com/zazuko/trifid","last_synced_at":"2026-06-15T11:02:00.060Z","repository":{"id":41574643,"uuid":"77615751","full_name":"zazuko/trifid","owner":"zazuko","description":"Lightweight Linked Data Server and Proxy","archived":false,"fork":false,"pushed_at":"2026-06-10T06:11:00.000Z","size":7987,"stargazers_count":100,"open_issues_count":21,"forks_count":19,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-06-10T07:25:23.541Z","etag":null,"topics":["linkeddata","nodejs","rdf","sparql","trifid"],"latest_commit_sha":null,"homepage":"","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/zazuko.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-12-29T13:57:19.000Z","updated_at":"2026-06-10T05:57:16.000Z","dependencies_parsed_at":"2026-05-03T14:01:02.019Z","dependency_job_id":null,"html_url":"https://github.com/zazuko/trifid","commit_stats":{"total_commits":2200,"total_committers":28,"mean_commits":78.57142857142857,"dds":0.5768181818181819,"last_synced_commit":"aec288ef3c6cbad302afa2059a01535e0a17f9d7"},"previous_names":[],"tags_count":481,"template":false,"template_full_name":null,"purl":"pkg:github/zazuko/trifid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zazuko%2Ftrifid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zazuko%2Ftrifid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zazuko%2Ftrifid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zazuko%2Ftrifid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zazuko","download_url":"https://codeload.github.com/zazuko/trifid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zazuko%2Ftrifid/sbom","scorecard":{"id":925990,"data":{"date":"2025-07-07","repo":{"name":"github.com/zazuko/trifid","commit":"16d6dd1ff2afd8a90d1bf438309b7887e344a6db"},"scorecard":{"version":"v5.2.1-18-gbb9c347d","commit":"bb9c347dff6349d986baab6578a46d68a5524c62"},"score":5.5,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/3 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yaml:31","Info: jobLevel 'packages' permission set to 'read': .github/workflows/codeql.yaml:27","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yaml:30","Info: jobLevel 'contents' permission set to 'read': .github/workflows/docker.yaml:13","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yaml:16","Warn: no topLevel permission defined: .github/workflows/add-to-backlog.yaml:1","Warn: no topLevel permission defined: .github/workflows/codeql.yaml:1","Warn: no topLevel permission defined: .github/workflows/docker.yaml:1","Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Warn: no topLevel permission defined: .github/workflows/test.yaml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#license"}},{"name":"Branch-Protection","score":3,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Warn: branch 'main' does not require approvers","Warn: codeowners review is not required on branch 'main'","Warn: no status checks found to merge onto branch 'main'","Warn: PRs are not required to make changes on branch 'main'; or we don't have data to detect it.If you think it might be the latter, make sure to run Scorecard with a PAT or use Repo Rules (that are always public) instead of Branch Protection settings"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/add-to-backlog.yaml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/add-to-backlog.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yaml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/codeql.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yaml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/codeql.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yaml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/codeql.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/docker.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yaml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/docker.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/docker.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yaml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/docker.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yaml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/docker.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yaml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/docker.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yaml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/docker.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yaml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/docker.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/test.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/test.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yaml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/test.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/test.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yaml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/zazuko/trifid/test.yaml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating docker.io/library/node:22-alpine to docker.io/library/node:22-alpine@sha256:10962e8568729b0cfd506170c5a2d1918a2c10ac08c0e6900180b4bac061adc9","Warn: npmCommand not pinned by hash: Dockerfile:26","Info:   0 out of  11 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  10 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   3 out of   4 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/docker.yaml:9"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#packaging"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#security-policy"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (28) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-cxrh-j4jr-qwg3"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-25T15:32:56.557Z","repository_id":41574643,"created_at":"2025-08-25T15:32:56.566Z","updated_at":"2025-08-25T15:32:56.566Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34357285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["linkeddata","nodejs","rdf","sparql","trifid"],"created_at":"2024-08-01T12:01:57.341Z","updated_at":"2026-06-15T11:02:00.042Z","avatar_url":"https://github.com/zazuko.png","language":"JavaScript","funding_links":[],"categories":["HTML","nodejs","SPARQL","Benchmarks"],"sub_categories":["SPARQL Applications"],"readme":"# Trifid\n\n\u003cimg src=\"https://cdn.rawgit.com/zazuko/trifid/master/logo.svg\" width=\"140px\" height=\"140px\" align=\"right\" alt=\"Trifid-ld Logo\"/\u003e\n\n## What is Trifid?\n\nIt's a Web server specialized in Linked Data.\n\nThe main functionalities of Trifid are:\n\n### Dereference Linked data entities\n\nProviding different serializations using content-negotiation of entities in a file or queried using a SPARQL endpoint.\nThe serializations include HTML rendering based on customizable templates.\n\n### Using a SPARQL endpoint\n\nIf a SPARQL endpoint is the source of the RDF data, some additional plugins are enabled by default.\n\n- [SPARQL Proxy](./packages/sparql-proxy/): Public access to the configured store.\n- [YASGUI](./packages/yasgui/): UI to write, execute, and analyze SPARQL queries.\n- [Graph Explorer](./packages/graph-explorer/): UI to explore the data in a graph view\n- [SPEX](./packages/spex/): Introspects the data on the endpoint and shows the data model\n\n### Further use\n\nThis server can also be extended with plugins, depending on the use case of the deployment.\n\n#### Examples\n\n- [CKAN harvester endpoint](./packages/ckan/)\n- [IIIF Trifid plugin](./packages/iiif/)\n\n## Who Uses Trifid?\n\nTrifid is open source and meant to work out of the box for data publishers.\nMost users will use only the main features.\nWe, or people that dive deeper into the code, maintain and develop instances with additional plugins.\n\n### Installations\n\nExample resources using Trifid:\n\n- Default view: http://lod.opentransportdata.swiss/didok/8500011\n- Customized for one gov entity in Switzerland: https://ld.geo.admin.ch/boundaries/municipality/296\n\n## Trifid objectives\n\nThe main [trifid](https://github.com/zazuko/trifid) package provides some default plugins:\n\n- Handlers to read RDF data from the file system and SPARQL endpoints\n- The [handlebars](https://handlebarsjs.com/) template engine\n- A HTML renderer for the RDF data\n- The plugins mentioned [here](#using-a-sparql-endpoint)\n\n## Documentation\n\n- See the [configuration](https://github.com/zazuko/trifid/wiki/Configuration) wiki page for more details on the configuration system.\n- See the [customize-the-templates](https://github.com/zazuko/trifid/wiki/Customize-the-templates) wiki page for more details on the template system.\n\n## Trifid Core\n\nTrifid Core contains the HTTP server component and a configuration system to load plugins.\nUsually, it's not required to use the Trifid Core package.\nThe main [trifid](https://github.com/zazuko/trifid) package provides an opinionated setup that works for most use cases.\n\n## Installation\n\nTrifid is a [Node.js](http://nodejs.org/)-based application.\nTo install and run it, you will need to install [Node.js](http://nodejs.org/) on your system.\n\nInstall the npm package:\n\n```sh\nnpm install -g trifid\n```\n\n## Usage\n\nTo start the server, execute the following command:\n\n```sh\nnpx trifid\n```\n\nIf you want to run Trifid using a SPARQL endpoint and default settings, you can run it even without a config file:\n\n```sh\ntrifid --sparql-endpoint-url=http://localhost:3030/sparql\n```\n\n### Parameters\n\nThe following parameters are available:\n\n- `-c` or `--config`: Expects a path to a config as value, which will be used by Trifid\n- `-p` or `--port`: Expects a port number as value, which will be used by the HTTP listener of Trifid\n- `--sparql-endpoint-url`: Expects a SPARQL HTTP query interface URL value, which will be used by the Trifid SPARQL handler\n- `--dataset-base-url`: Expects a Base URL value, which will be used to translate the request URLs\n\n## Configuration\n\nTrifid uses YAML or JSON configuration files.\nOne configuration file can use another file as base.\nThe `extends` property must point to the other file.\nValues of the base file will be overwritten.\n\n### Examples\n\n#### Big Bang Theory dataset\n\nIf you use [`instances/tbbt/config.yaml`](./packages/trifid/instances/tbbt/config.yaml) as a base configuration, you will get a server that serves the [Big Bang Theory dataset](https://github.com/zazuko/tbbt-ld).\n\nIt will load the triples from the following remote file: https://raw.githubusercontent.com/zazuko/tbbt-ld/master/dist/tbbt.nt.\n\nYou will then be able to access its content, e.g. [Amy Farrah Fowler](http://localhost:8080/data/person/amy-farrah-fowler).\n\nThis is a good starting point to understand how dereferencing works.\n\n#### SPARQL configuration\n\nFor production systems, we recommend data access via the [SPARQL 1.1 Protocol](http://www.w3.org/TR/sparql11-protocol/) interface.\n[`instances/docker-sparql/config.yaml`](./packages/trifid/instances/docker-sparql/config.yaml) can be used as base configuration.\n\n##### SPARQL endpoint with self-signed certificate\n\nSometimes SPARQL endpoints are running on TLS/SSL but provide an incomplete configuration or a self-signed certificate.\nIn that case, one can disable strict certificate checking by setting the environment variable `NODE_TLS_REJECT_UNAUTHORIZED`.\n\nFor example:\n\n```sh\nexport NODE_TLS_REJECT_UNAUTHORIZED=0\n```\n\n## Production Best Practices\n\nNote that it is not recommended to run Node applications on [well-known ports](http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#Well-known_ports) (\u003c 1024).\nYou should use a reverse proxy instead.\n\n### Using with Docker\n\nTrifid can be installed using Docker.\nWith this method, you only need to have Docker installed.\nSee https://docs.docker.com/installation/ for installation instructions for your platform.\n\n```sh\ndocker run --rm -it -p 8080:8080 ghcr.io/zazuko/trifid\n```\n\n#### Trifid environment variables\n\nYou can use the following environment variables:\n\n- `TRIFID_CONFIG`: the configuration file to use (default value: [`instances/docker-sparql/config.yaml`](./packages/trifid/instances/docker-sparql/config.yaml), which enable the following environment variables)\n- `SPARQL_ENDPOINT_URL`: the SPARQL endpoint URL to use\n- `DATASET_BASE_URL`: the base URL to use to enable rewriting\n- `SPARQL_ENDPOINT_USERNAME`: the user to use to authenticate against the SPARQL endpoint\n- `SPARQL_ENDPOINT_PASSWORD`: the password to use to authenticate against the SPARQL endpoint\n\nIf you want to use a file that contains your triples instead of a SPARQL endpoint, you can set `TRIFID_CONFIG` to [`instances/docker-fetch/config.yaml`](./packages/trifid/instances/docker-fetch/config.yaml), and you will be able to use the following environment variables to configure your instance:\n\n- `FETCH_HANDLER_FILE`: the file to use to fetch the data (default value: `https://raw.githubusercontent.com/zazuko/tbbt-ld/master/dist/tbbt.nt`)\n- `FETCH_HANDLER_FILE_TYPE`: the type of the file to use to fetch the data (default value: `application/n-triples`)\n- `DATASET_BASE_URL`: the base URL to use to enable rewriting\n\n### Reverse Proxy\n\nIf you run Trifid behind a reverse proxy, the proxy must set the `X-Forwarded-Host` header field.\n\n## Debugging\n\nThe log level can be configured by using the `server.logLevel` property.\nSupported log levels are: `fatal`, `error`, `warn`, `info`, `debug`, `trace` and `silent`.\n\n## Monorepo\n\nTo improve the maintenability of the whole project, we decided to use a monorepo architecture.\n\nHere is the list of all packages that are maintained here:\n\n| Package                                                          | Latest version                                                                                                              |                                   |\n| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |\n| [`trifid`](./packages/trifid)                                    | [![](https://badge.fury.io/js/trifid.svg)](https://npm.im/trifid)                                                           | Bundle with commonly used plugins |\n| [`trifid-core`](./packages/core)                                 | [![](https://badge.fury.io/js/trifid-core.svg)](https://npm.im/trifid-core)                                                 | Core package                      |\n| [`@zazuko/trifid-entity-renderer`](./packages/entity-renderer)   | [![](https://badge.fury.io/js/@zazuko%2Ftrifid-entity-renderer.svg)](https://npm.im/@zazuko/trifid-entity-renderer)         | Entity renderer                   |\n| [`trifid-plugin-graph-explorer`](./packages/graph-explorer)      | [![](https://badge.fury.io/js/trifid-plugin-graph-explorer.svg)](https://npm.im/trifid-plugin-graph-explorer)               | Graph Explorer plugin             |\n| [`@zazuko/trifid-plugin-ckan`](./packages/ckan)                  | [![](https://badge.fury.io/js/@zazuko%2Ftrifid-plugin-ckan.svg)](https://npm.im/@zazuko/trifid-plugin-ckan)                 | CKAN harvester endpoint           |\n| [`trifid-handler-fetch`](./packages/handler-fetch)               | [![](https://badge.fury.io/js/trifid-handler-fetch.svg)](https://npm.im/trifid-handler-fetch)                               | Fetch handler for Trifid          |\n| [`trifid-plugin-i18n`](./packages/i18n)                          | [![](https://badge.fury.io/js/trifid-plugin-i18n.svg)](https://npm.im/trifid-plugin-i18n)                                   | i18n support for Trifid           |\n| [`@zazuko/trifid-markdown-content`](./packages/markdown-content) | [![](https://badge.fury.io/js/@zazuko%2Ftrifid-markdown-content.svg)](https://npm.im/@zazuko/trifid-markdown-content)       | Create pages from Markdown files  |\n| [`@zazuko/trifid-plugin-sparql-proxy`](./packages/sparql-proxy)  | [![](https://badge.fury.io/js/@zazuko%2Ftrifid-plugin-sparql-proxy.svg)](https://npm.im/@zazuko/trifid-plugin-sparql-proxy) | Trifid plugin for SPARQL proxy    |\n| [`trifid-plugin-spex`](./packages/spex)                          | [![](https://badge.fury.io/js/trifid-plugin-spex.svg)](https://npm.im/trifid-plugin-spex)                                   | SPEX plugin for Trifid            |\n| [`trifid-plugin-yasgui`](./packages/yasgui)                      | [![](https://badge.fury.io/js/trifid-plugin-yasgui.svg)](https://npm.im/trifid-plugin-yasgui)                               | YASGUI plugin for Trifid          |\n\n## Support\n\nIssues \u0026 feature requests should be reported on [GitHub](https://github.com/zazuko/trifid).\n\nPull requests are very welcome.\n\n## License\n\nCopyright Zazuko GmbH.\n\nTrifid is licensed under the [Apache License, Version 2.0](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzazuko%2Ftrifid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzazuko%2Ftrifid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzazuko%2Ftrifid/lists"}