sanity-plugin-taxonomy-manager
Version:
Create and manage SKOS compliant taxonomies, thesauri, and classification schemes in Sanity Studio.
130 lines (100 loc) • 4.74 kB
Markdown


<!-- Taxonomies are crucial tools for organization and interoperability between and across data sets. Taxonomy Manager provides a way for content authors to create, use, and maintain standards compliant taxonomies in Sanity Studio.
The Taxonomy Manager document schema is based on the [World Wide Web Consortium](https://www.w3.org/) (W3C) [Simple Knowledge Organization Scheme](https://www.w3.org/TR/skos-reference/) (SKOS) recommendation. Concept and concept scheme editor tools include standard SKOS properties, hints for creating consistent concepts and vocabularies, and validation functions for preventing consistency errors. -->

For full documentation, visit [sanitytaxonomymanager.com](https://sanitytaxonomymanager.com).
<!-- make this more concise -->
- Adds two document types to your Sanity schema which are used to generate [SKOS](https://www.w3.org/TR/skos-primer/) compliant concepts and taxonomies: `skosConcept` and `skosConceptScheme`
- Includes reference filter helpers to allow you to easily include a specific taxonomy, or particular branch of a taxonomy in your Sanity documents
- Encourages taxonomy and thesaurus design best practices by enforcing [disjunction between Broader and Related relationships](https://www.w3.org/TR/skos-reference/#L2422) and [disjunction between Preferred and Alternate/Hidden labels](https://www.w3.org/TR/skos-reference/#L1567)
- Standards compliant architecture means that taxonomy terms and structures can be migrated to standards compliant standalone tools when you need higher level taxonomy and knowledge graph support.
> Compatible with **Sanity Studio v5 and v6** (React 19).
In your Sanity project folder, run:
```bash
npm install sanity-plugin-taxonomy-manager
pnpm add sanity-plugin-taxonomy-manager
yarn add sanity-plugin-taxonomy-manager
```
Add the plugin to your [project configuration](https://www.sanity.io/docs/configuration#51515480034b) to add the Taxonomy Manager Tool to your studio workspace.
```js
// sanity.config.js
import {defineConfig} from 'sanity'
import {structureTool} from 'sanity/structure'
import {taxonomyManager} from 'sanity-plugin-taxonomy-manager'
import {schemaTypes} from './schemas'
export default defineConfig({
name: 'default',
title: 'Sanity Studio',
projectId: '<projectId>',
dataset: 'production',
plugins: [
structureTool(),
// Include the taxonomy manager plugin
taxonomyManager({
// Optional: Set a Base URI to use for new concepts & concept schemes
baseUri: 'https://example.com/',
// Optional: Use `customConceptFields` and `customSchemeFields` keys to add custom fields to Concept or Concept Scheme document types
customConceptFields: [
{
name: 'sameAs',
title: 'Same As',
type: 'url',
description:
'Specify a fully qualified IRI that identifies the same concept in another vocabulary',
},
],
}),
],
schema: {
types: schemaTypes,
},
})
```
The plugin adds `skosConcept` and `skosConceptScheme` document types to your studio. Use a filter on `documentTypeListItems` in the [desk tool configuration](https://www.sanity.io/docs/desk-tool-api) to exclude taxonomy manager document types from your main document view.
```js
// sanity.config.js
import {defineConfig} from 'sanity'
import {structureTool} from 'sanity/structure'
import {taxonomyManager} from 'sanity-plugin-taxonomy-manager'
import {schemaTypes} from './schemas'
export default defineConfig({
name: 'default',
title: 'Sanity Studio',
projectId: '<projectId>',
dataset: 'production',
plugins: [
structureTool({
structure: (S) =>
S.list()
.title('Content')
.items([
...S.documentTypeListItems().filter(
(listItem) => !['skosConcept', 'skosConceptScheme'].includes(listItem.getId())
),
]),
}),
taxonomyManager(),
],
schema: {
types: schemaTypes,
},
})
```
This repo bundles a dev Studio as a workspace member (`studio/`). Run it and open the **Taxonomy** tool:
```bash
pnpm dev
```
See the [development docs](docs/development/README.md) for details on plugin design intent, architecture, and functional composition.
## License
MIT © Andy Fitzgerald
See LICENSE