Linkr
Home Resources Tools Documentation Blog Demo
FR
  • What is Linkr?
  • Deployment modes
  • Quick start
  • Local install
  • With Docker
  • Manual install
  • Client-only
  • Install LibreChat
  • Your first project
  • Linkr in a clinical data warehouse
  • Workspaces and projects
  • The data pipeline
  • Entities and sharing
  • Versioning and collaboration
  • Overview
  • Projects
  • Wiki
  • Plugins
  • Members and roles
  • Settings
  • Schemas
  • Getting and exploring
  • Mapping
  • Databases
  • Derived sub-databases
  • Data quality
  • Data catalog
  • Build and publish
  • Anonymize
  • SQL script collections
  • ETL pipelines
  • Building and running
  • Generating the scripts
  • Overview
  • Mapping projects
  • Global view
  • Target concepts
  • Mapping editor
  • Suggestions
  • AI agent
  • Evaluation
  • Export
  • Overview
  • Databases
  • Concepts
  • Cohorts
  • Building
  • Results, SQL and report
  • Patient data
  • Pipeline
  • Datasets
  • IDE
  • Web apps
  • Versioning
  • Overview
  • Tabs and widgets
  • Built-in widgets
  • Analysis widgets
  • Control charts (SPC)
  • Surveys and eCRF
  • R and Python code
  • Filters, settings and export
  • Overview
  • Presentation mode
  • Exporting a report
  • Agents
  • MCP server
  • Skills
  • Import and export
  • Git versioning
  • Community catalog
  • Publishing content
  • Production install
  • Configuration
  • Database connectors
  • Authentication and permissions
  • Files on the server
  • Backup and restore
  • Contributing code
  • Glossary
  • Keyboard shortcuts
  • Release notes
Documentation Core concepts Entities and sharing

Entities and sharing

What an entity is in Linkr: one shape for ten kinds of content, an identity that survives the journey, an author and a licence.

Summary

Almost everything you create in Linkr is an entity: a project, a schema, an ETL pipeline, a plugin… Ten kinds, but a single shape — a file tree with the same identity record at its root. Exporting, versioning and publishing then work the same way across all ten, and what gives every entity an identity that survives the journey from one instance to another.

Client Available in client-only mode — runs entirely in the browser, no backend. Backend Available with the FastAPI backend.

Ten kinds, one shape

A project and a plugin have nothing in common in substance. Yet from a sharing point of view they raise the same questions: who made it, under what licence, in which version, and how do I recognise it if someone sends it back to me changed?

Linkr answers those questions once and for all: the ten kinds of entity share the same structure. Two containers carry everything they hold. Seven warehouse resources, filed under the workspace’s Data Warehouse, are shared across projects — these are the ones that gain most from circulating: an OMOP schema or a set of quality rules is worth the same to everyone. Then comes the tooling, which extends Linkr itself.

A workspace holds all the rest

10 entity types

The containers

Workspace

The shared container, exported whole.

workspace

Project

A study: cohorts, analyses, dashboards, code.

project

The warehouse resources

Schema

How to read a source.

schema-preset

Database

A declared source, with its schema and cohorts.

database

Concept mapping

Local codes → standard vocabulary.

mapping-project

Script collection

SQL queries in folders.

sql-collection

Quality rules

Checks to run on a database.

dq-rule-set

Data catalog

A database's content, as aggregate counts.

data-catalog

ETL pipeline

A source converted to OMOP.

etl-pipeline

The tooling

Plugin

A packaged analysis that becomes a widget.

user-plugin
The ten kinds of entity, with their icon and hue in the app, and the value of the type field in their entity.json. Containers: workspace, project. Warehouse resources: schema (schema-preset), database, concept mapping (mapping-project), script collection (sql-collection), quality rules (dq-rule-set), data catalog, ETL pipeline (etl-pipeline). Tooling: plugin (user-plugin).

Each one exports as a file tree: JSON configuration files, your content, your documentation. What you see on screen, what the ZIP archive holds and what goes into a git repository are one and the same thing. See Workspaces and projects.

The identity record

At the root of every entity sits a file named entity.json. It is its identity record: it says what kind of entity this is, what it is called, who produced it and on what terms it can be reused.

{
  "type": "project",
  "name": { "en": "ICU — mortality", "fr": "Réanimation — mortalité" },
  "description": { "en": "Monitoring mortality in intensive care" },

  // … the content specific to the kind: here cohorts, dashboards …

  "createdBy": "Ada Lovelace",
  "createdByDetails": { "orcid": "0000-0000-0000-0001" },
  "organization": { "name": { "en": "Rennes University Hospital" }, "type": "hospital" },

  "lineageId": "a3f1c2…",
  "parentLineageId": null,

  "version": "1.2.0",
  "license": { "id": "MIT", "name": "MIT License" }
}

Four blocks always follow in this order: what it is, the content specific to the kind, who produced it, then how it is published.

Two practical consequences. First, identity comes before content: opening the file shows you what you are dealing with, not a wall of data. Second, Linkr can read an entity without knowing in advance what it is — it reads the type field and works out the rest. That is what makes importing universal: you drop in an archive, and Linkr recognises what is inside.

The identity that survives the journey

This is the least visible part, and the most useful. Picture it: you publish a set of quality rules, a colleague installs them, improves them, sends them back. When you re-import, what should Linkr do?

With no stable identity it would create a duplicate — two rule sets under the same name, and it is on you to untangle them. So every entity carries a lineage identifier that follows it everywhere: re-importing the same entity updates it in place.

Lineage identity

What makes an entity stay itself across instances. It travels with the export.

Local identifier

The internal key of your instance. It never leaves the machine: each instance assigns its own.

An entity derived from another also keeps a trace of its parent. Picture it: you publish your project, analysis code included. Another centre picks it up, applies it to their own patients, fixes a bias you had not spotted, adds an adjustment variable. Their project knows which project it descends from — and yours stays yours.

That is what lets you follow a lineage without confusing the original with its variants: anyone can trace where an analysis came from, and compare two versions of the same method applied to two populations.

The author, the institution and the licence

An entity shared without an author or a licence is hard to reuse: no one knows who to credit or what they may do with it. So every entity carries three complementary pieces of information.

  • The author — the person, with their ORCID identifier if they have one, which makes the work citable.
  • The organization — the publishing institution. It sits next to the author rather than next to the version, because this is co-authorship, not packaging.
  • The licence — on what terms a third party may build on the work.

Every entity can also carry its README and illustrating images. That is what shows up when someone discovers it in the catalog.

Three ways to move an entity around

These foundations serve three ways of moving one around, each covered on its own page.

The archive

A ZIP file to download and re-import elsewhere. The simplest route, available even in the browser.

The git repository

Link an entity to a remote repository to follow its history and work together over time.

The catalog

Publish for the community, or install what others have published, in one click.

Data does not travel by default

Exporting an entity does not carry the data files it holds: they are excluded by default, and you explicitly mark the ones that should travel. This is a deliberate safeguard — sharing a dashboard must never leak patient data by accident. See Import and export.

Going further

  • Workspaces and projects — the two levels these entities live in.
  • Versioning and collaboration — why Linkr builds on git rather than a proprietary format.
  • Publishing content — preparing an entity so others can reuse it.
PreviousThe data pipelineNextVersioning and collaboration

Product

  • Home
  • Demo

Resources

  • Documentation
  • Resources
  • Tools
  • Blog

Community

  • Framagit source code
  • Github source code

About

  • InterHop.org
  • Contact

2021–2026 InterHop — CC BY-NC-SA 4.0 (site) · AGPLv3 (software)