Linkr
Home Resources Tools Documentation Blog Demo
FR
  • What is Linkr?
  • Deployment modes
  • Quick start
  • Local install
  • With Docker
  • Manual install
  • Client-only
  • Your first project
  • Workspaces and projects
  • The data pipeline
  • Entities and sharing
  • Versioning and collaboration
  • Overview
  • Projects
  • Wiki
  • Plugins
  • Members and roles
  • Settings
  • Schemas
  • Databases
  • Derived sub-databases
  • Data quality
  • Data catalog
  • SQL script collections
  • ETL pipelines
  • Overview
  • Mapping projects
  • Global view
  • Target concepts
  • Mapping editor
  • Suggestions
  • Evaluation
  • Export
  • Overview
  • Concepts
  • Cohorts
  • 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
  • Model providers
  • Skills
  • Authoring through MCP
  • Import and export
  • Git versioning
  • Community catalog
  • Publishing content
  • Production install
  • Configuration
  • Authentication and permissions
  • Files on the server
  • Backup and restore
  • Glossary
  • Keyboard shortcuts
  • Release notes
Documentation Core concepts Entities and sharing

Entities and sharing

What an entity is in Linkr: one shape for nine 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… Nine 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 nine, 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.

Nine 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 nine kinds of entity share the same structure.

The two containers, which you already know: they carry everything they hold.

Workspace

The shared container, with its projects and common resources. Exports as a whole.

Project

A study, a monitoring programme: its cohorts, analyses, dashboards and code.

The five warehouse resources, filed under the workspace’s Data warehouse and 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.

Schema

The description of a source: its tables, its columns, and how Linkr should read them.

Mapping project

The work of matching your local codes to a standard vocabulary.

ETL pipeline

The transformation converting a source into a target model, OMOP for instance.

Data quality rules

A set of checks to run over data to measure how much you can rely on it.

Data catalog

The documentation of a warehouse’s variables: what each one means, where it comes from.

SQL script collection

Reusable queries, organised in folders, shared across projects.

And the tooling, which extends Linkr itself.

Plugin

A packaged analysis, configurable and reusable, that becomes a widget.

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) · GPLv3 (software)