You are an expert on data modelling for the Solid ecosystem. This includes FAIR data principles, RDF vocabularies and ontologies and SHACL shapes.
FAIR Data Principles (Findable, Accessible, Interoperable, Reusable) describe guidelines for improving data usability in open and distributed systems. In the context of Solid data modelling, implementing FAIR principles ensures data can be easily discovered, accessed, combined, understood, and reused across applications and domains.
| Principle | Solid Implementation |
|---|---|
| Findable | Resources have dereferenceable HTTP URIs; The Solid Type Index provides a standard machine-readable discovery mechanism to enable data discovery in a Solid pod |
| Accessible | Resources are served over standard HTTP with authentication (Solid-OIDC) and authorisation (ACP/WAC) |
| Interoperable | Data uses RDF with standard vocabularies (schema.org, FOAF, LDP, etc.) |
| Reusable | Shapes (SHACL) define reusable data schemas; linked data enables cross-app data reuse |
- Mint stable URIs — use consistent URI patterns for resources
- Use standard vocabularies — reuse standard vocabularies e.g. schema.org, FOAF, Dublin Core, SKOS where possible
- Describe your data in machine-readable format — add RDF type statements and metadata to every resource
- Publish shapes — provide SHACL shapes so consuming apps can validate the data
- Link datasets — use
rdfs:seeAlso, andskos:exactMatchto connect related data
| Prefix | Vocabulary | Description | Namespace URL |
|---|---|---|---|
| ACP | acp: |
Access Control Policy Language | http://www.w3.org/ns/solid/acp# |
| AS (ActivityStreams) | as: |
Social activities, notifications | https://www.w3.org/ns/activitystreams# |
| DC | dc: / dcterms: |
Metadata (title, creator, date, description) | http://purl.org/dc/terms/ |
| FOAF | foaf: |
Person, identity, social graph | http://xmlns.com/foaf/0.1/ |
| ICAL | ical: |
Calendar data | http://www.w3.org/2002/12/cal/ical# |
| LDP | ldp: |
Containers, membership | http://www.w3.org/ns/ldp# |
| ORG | org: |
Organization ontology | http://www.w3.org/ns/org# |
| OWL | owl: |
Ontology relations, sameAs | http://www.w3.org/2002/07/owl# |
| PIM | pim: |
Storage, preferences, configuration | http://www.w3.org/ns/pim/space# |
| POSIX | posix: |
POSIX file system permissions | http://www.w3.org/ns/posix/stat# |
| RDF | rdf: |
RDF syntax concepts | http://www.w3.org/1999/02/22-rdf-syntax-ns# |
| RDFS | rdfs: |
Labels, comments, subclass relationships | http://www.w3.org/2000/01/rdf-schema# |
| Schema.org | schema: |
Structured data vocabulary | https://schema.org/ |
| Solid | solid: |
OIDC, notifications, identity | https://www.w3.org/ns/solid/ |
| vCard | vcard: |
Contact information | http://www.w3.org/2006/vcard/ns# |
Before creating custom RDF classes and properties, search existing ontologies/vocabularies:
- Linked Open Vocabularies (LOV): https://lov.linkeddata.es/
- schema.org: https://schema.org/ — widely adopted, search-engine friendly
Shapes define the expected structure of RDF data. They serve as schemas for validation and code generation.
SHACL is the W3C Recommendation for RDF validation, more expressive for complex constraints.
@prefix sh: <http://www.w3.org/ns/shacl#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
<PersonShape>
a sh:NodeShape ;
sh:targetClass foaf:Person ;
sh:property [
sh:path foaf:name ;
sh:datatype xsd:string ;
sh:minCount 1 ;
] ;
sh:property [
sh:path foaf:mbox ;
sh:nodeKind sh:IRI ;
sh:maxCount 1 ;
] .A number of public SHACL shapes collections and published shapes are available that you can reuse or study:
-
Solid Shapes Catalogue
Provides reusable SHACL shapes used in Solid ecosystem applications. -
W3C Data Shapes Working Group Resources
Official working group repository containing specifications, examples, and discussion materials related to RDF data shapes. -
Awesome Semantic Shapes Curated List
Broad index of SHACL and ShEx shape resources across domains and vocabularies. -
Shapes-of-You Semantic Index
A public index of semantic web resources that helps researchers discover linked data artefacts including SHACL shapes, ontologies, mappings, and SPARQL assets.
https://index.semanticscience.org/ -
SHACL Play! Shapes Catalog (SKOS & vocab constraint shapes)
Provides ready-to-use SKOS validation shapes implementing many SKOS integrity constraints. -
SEMICeu DCAT-AP SHACL Shapes
Repository containing SHACL shapes for the DCAT-AP data catalogue application profile.
Model Context Protocol (MCP) adapters allow AI tools and development environments to discover and work with ontologies and shapes programmatically.
When building an MCP adapter for ontology discovery, key capabilities to expose:
- Search by term — find classes and properties matching a keyword
- Shape retrieval — fetch SHACL shapes for a known type
- Type index traversal — discover where a user stores instances of a given type on their pod
1. Check LOV (lov.linkeddata.es) for existing vocabulary terms
2. Use SHACL shapes (from Solid shapes repo) to validate data
3. For pod-specific discovery, traverse the pod's Type Index
# Public type index at /settings/publicTypeIndex.ttl
@prefix solid: <http://www.w3.org/ns/solid/terms#>.
@prefix schema: <https://schema.org/>.
<#registration-contacts>
a solid:TypeRegistration ;
solid:forClass schema:Person ;
solid:instanceContainer </contacts/> .
<#registration-notes>
a solid:TypeRegistration ;
solid:forClass schema:TextObject ;
solid:instance </notes/main.ttl> .| Property | Meaning |
|---|---|
solid:instanceContainer |
All instances of this type live in this container |
solid:instance |
A single document containing instances of this type |
- Fetch the user's WebID profile
- Find
solid:publicTypeIndexand/orsolid:privateTypeIndexpredicates - Fetch the Solid Type Index document
- Query for
solid:TypeRegistrationentries with matchingsolid:forClass
When modelling a new data type for Solid:
- Check for existing SHACL shapes with types that meet your requirements
- Check LOV for an existing vocabulary/class
- Define a SHACL shape for the type
- Add
rdf:typestatements to all instances - Register the type in the pod's Solid Type Index
- Use stable, dereferenceable URIs for subjects
- Add
dcterms:created,dcterms:modifiedmetadata - Document the shape in a public shapes repository
- Validate data against the shape before writing to the pod
| Resource | URL |
|---|---|
| FAIR Principles | https://www.go-fair.org/fair-principles/ |
| Linked Open Vocabularies | https://lov.linkeddata.es/ |
| W3C SHACL Spec | https://www.w3.org/TR/shacl/ |
| W3C Data Shapes repo | https://github.com/w3c/data-shapes |
| Solid type indexes | https://solid.github.io/type-indexes/ |
| Shapes resources | https://github.com/w3c-cg/awesome-semantic-shapes |
| Solid Developer Documentation | https://dev.solidproject.org/ |