SKOS format reference for SharePoint taxonomy

This article includes RDF vocabulary used to represent SharePoint taxonomy and is based on SKOS. For serialization of this RDF syntax, use RDF TURTLE.

The following table shows the SKOS equivalents for the SharePoint taxonomy vocabulary. SharePoint does not support SKOS values that have no SharePoint taxonomy equivalent.

SharePoint taxonomy SKOS equivalent
sharepoint-taxonomy:Term skos:Concept
sharepoint-taxonomy:TermSet skos:ConceptScheme
sharepoint-taxonomy:inTermSet skos:inScheme
sharepoint-taxonomy:hasTopLevelTerm skos:hasTopConcept
sharepoint-taxonomy:topLevelTermOf skos:topConceptOf
sharepoint-taxonomy:defaultLabel skos:prefLabel
sharepoint-taxonomy:termSetName skos:prefLabel
sharepoint-taxonomy:propertyName skos:prefLabel
sharepoint-taxonomy:otherLabel skos:altLabel
sharepoint-taxonomy:description skos:definition
sharepoint-taxonomy:parent skos:broader
sharepoint-taxonomy:child skos:narrower

The following table displays the entities of the SharePoint taxonomy vocabulary derived from OWL.

SharePoint taxonomy vocabulary Derived from OWL
sharepoint-taxonomy:isAvailableForTagging owl:datatypeproperty
sharepoint-taxonomy:SharedCustomPropertyForTerm owl:ObjectProperty
sharepoint-taxonomy:LocalCustomPropertyForTerm owl:ObjectProperty
sharepoint-taxonomy:CustomPropertyForTermSet owl:ObjectProperty

SharePoint taxonomy vocabulary

A taxonomy is a formal classification system. A taxonomy groups the words, labels, and terms that describe something, and then arranges the groups into a hierarchy.


Represents a Term or a Keyword in a managed metadata hierarchy.

A Term is the atomic unit of a SharePoint TermStore. Each Term belongs to a TermSet that belongs to a TermGroup.

The syntax to define a Term is as follows:

ex:TermA    a    sharepoint-taxonomy:Term;
    sharepoint-taxonomy:inTermSet    ex:TermSetA;
    sharepoint-taxonomy:topLevelTermOf    ex:TermSetA;
    sharepoint-taxonomy:child    ex:TermA1;
    sharepoint-taxonomy:isAvailableForTagging    “true”^^xsd:Boolean;
    sharePoint-taxonomy:defaultLabel    “Term A”@en-us.

A Term compulsorily exists within a TermSet. DefaultLabel is the name of the Term as it appears in the visual representation. The required fields for defining a Term include:

  • sharepoint-taxonomy:defaultLabel
  • sharepoint-taxonomy:inTermSet

A Term can:

  • Be hierarchically related to another Term that is provided both the Terms belong to the same TermSet.
  • Have multiple child Terms, but only a single parent Term.
  • Not have a parent Term defined, if it is a topLevelTermOf a TermSet.
  • Have one defaultLabel, per TermStore working language.
  • Not exist if it neither contains a parent Term, nor is the topLevelTermOf a TermSet.
  • Have only a unique defaultLabel in the same hierarchical level.


Represents a hierarchical or flat set of Term objects known as a "TermSet".

As the name suggests, TermSet is a set of Terms. A Term in a TermStore must belong to a TermSet. No Term can exist independently.

The syntax to define a TermSet is:

ex:TermSetA    a    sharepoint-taxonomy:TermSet;
    sharepoint-taxonomy:termSetName    “TermSet A";
    sharepoint-taxonomy:isAvailableForTagging    “true”^^xsd:Boolean;
    sharepoint-taxonomy:hasTopLevelTerm    Ex:Term A.

TermSets are logically grouped together in TermGroups. The required field for defining a TermSet is:

  • sharepoint-taxonomy:termSetName

In the case of the termSetName provided is not unique within the TermGroup, SharePoint appends a number at the end of the name to maintain the uniqueness of termSetName(s).


SharePoint uses this property to map the top most Term in the TermSet, which is the entry point to the hierarchy of Terms in a TermSet. This is an inverse relation to sharepoint-taxonomy:topLevelTermOf.

The syntax to define this is:

ex:TermSetA    sharepoint-taxonomy:hasTopLevelTerm    ex:TermA.


You cannot define the top level Term of a parent Term.


Sharepoint-taxonomy:topLevelTermOf is the inverse of sharepoint-taxonomy:hasTopLevelTerm

The syntax to define this is:

ex:TermA    sharepoint-taxonomy:topLevelTermOf    ex:TermSetA.


Use this to map a Term to a TermSet. A Term can only exist in a single TermSet. SharePoint requires this property when defining a term.

Required labels

Your organization may want to do careful planning before you start to use managed metadata. The amount of planning that you must do depends on how formal your taxonomy is. It also depends on how much control that you want to impose on metadata. At each level of the hierarchy, you need to configure required labels for a Term or TermSet.

A Term can have one or more labels in the default language, and zero or more labels in the non-default language. If the term has labels in a language, one of the labels must be the default label.


Use this default lexical label for a Term that is a required parameter for a Term. Use to visually representing the Term.

The syntax to define a defaultLabel is:

ex:TermA    sharepoint-taxonomy:defaultLabel    “Term A”@en-us.

The defaultLabel contains two parts to it – the string and the language tag. The language must be one of the TermStore working languages. The defaultLabel must be unique for all Terms in the same TermSet, at the same hierarchical level.


Gets and sets the name for the current TermSet object.

This the lexical label for a TermSet, in a TermStore working language. This is a required parameter for a TermSet. Use to visually representing a TermSet.

The syntax to define a termSetName is:

ex:TermA    sharepoint-taxonomy:TermSetName    “Term Set A”@en-us.


Gets and sets the property name for the current TermSet object.

This is the lexical label for a sharepoint-taxonomy:SharedCustomPropertyForTerm, sharepoint-taxonomy:LocalCustomPropertyForTerm and sharepoint-taxonomy:CustomPropertyForTermSet in a TermStore working language.

The sharepoint-taxonomy:propertyName is treated as the key of the CustomProperty.

The syntax to define a propetyName is:

ex:SharedCustomProperty1    sharepoint-taxonomy:propertyName    “Shared Custom Property Key 1”@en-us.

Optional labels

You can also add optional labels to your taxonomy.


This is the alternate lexical label for a Term.

The syntax to define an otherLabel is:

ex:TermA    sharepoint-taxonomy:otherLabel    “Term A”@en-us.

Semantic relationships

Taxonomies have hierarchical and sometimes a simple “related term” associative relationship, but some have "semantic relationships" or custom-created relationships.


This hierarchically relates a Term to another Term. A Term could be a top level Term of a TermSet, but in case it doesn’t it must have a parent Term.

The syntax to define a parent is:

ex:TermA1    sharepoint-taxonomy:parent    ex:TermA.

This means that TermA is the parent and TermA is the child.


The object contains one or more child TermSet instances, and these can be accessed through the TermSets property. This class also provides methods for creating new child TermSet objects. Permissions for editing child Term and TermSet instances is specified on the group.

This hierarchically relates a Term to another Term.

The syntax to define a child is:

ex:TermA    sharepoint-taxonomy:child    ex:TermA1.

This means that TermA is the parent and TermA is the child.

Documentation notes

This section discusses the taxonomy detailed in the Microsoft.SharePoint.Taxonomy Namespace.


This is a detailed explanation of any SharePoint taxonomy vocabulary entity.

The syntax to add a description is:

ex:TermA    sharepoint-taxonomy:description    “Term A is the top level term of TermSetA”@en-us.

Custom properties

Gets the collection of custom property objects for the current Term object from the read-only dictionary.

Custom Properties are key-values pairs that can be defined for a Term or a TermSet, to further the description of the Term or a TermSet. SharePoint specifies the key of the custom property with the help of propertyName.


The syntax to define this is:

ex:CustomProp1    rdf:type    sharepoint-taxonomy:CustomPropertyForTermSet;
    sharepoint-taxonomy:propertyName “Colour”.

ex:TermSetA    ex:CustomProp1    “Red”@en-us.


If the custom property for a Term needs to be carried along with the Term, when you reuse the Term somewhere else, then you need to be define it under SharedCustomPropertyForTerm.

The syntax to define this is:

ex:CustomProp2    rdf:type sharepoint-taxonomy:SharedCustomPropertyForTerm;
    sharepoint-taxonomy:propertyName “Length”.

ex:TermA    ex:CustomProp2    “5 cm”@en-us.


If the custom property for a Term does not need to be carried along with the Term, when you reuse the Term somewhere else, then you need to define it under LocalCustomPropertyForTerm.

The syntax to define this is:

ex:CustomProp3    rdf:type sharepoint-taxonomy:LocalCustomPropertyForTerm;
    sharepoint-taxonomy:propertyName “width”.

ex:TermA    ex:CustomProp3    “5 cm”@en-us.

Data properties

At each level of the hierarchy, you can configure specific data properties for a Term or TermSet.


Use this to specify if a Term or a TermSet available in SharePoint Lists and Libraries.

The syntax for this is:

ex:TermA    sharepoint-taxonomy:isAvailableForTagging     "true"^^xsd:Boolean;

Domain and range

The table below describes the domain and range of SharePoint taxonomy vocabulary.

Predicates/verb Meaning Domain Range
inTermSet In term set Term Term Set
inTermGroup In term group TermSet TermGroup
topLevelTermOf Is Top Level Term Of Term TermSet
hasTopLevelTerm Has top level term Term Set Term
termSetName Term set has Name Term Plain literal
defaultLabel Term has default label Term Plain literal
otherLabel Term has other label Term Plain literal
propertyName Has Property Label SharedCustomPropertyForTerm, LocalCustomPropertyForTerm, CustomPropertyForTermSet Boolean, String, Integer, Decimal, Double
description Has Description All Plain literal
parent Has parent Term Term
child Has Child Term Term
isAvailableForTagging Is available for tagging Term, Term Set Boolean
SharedCustomPropertyForTerm Has shared custom property Term Boolean, string, Integer, Decimal, Double
LocalCustomPropertyForTerm Has local custom property Term Boolean, String, Integer, Decimal, Double
CustomPropertyForTermSet Has Custom Property TermSet Boolean, String, Integer, Decimal, Double

SKOS valid scenarios that SharePoint taxonomy does not allow:

  • Hierarchical redundancy - A SKOS concept can be attached to several broader concepts at the same time, but a sharepoint-taxonomy:Term can have only one sharepoint-taxonomy:parent, hence cyclic dependency, of Terms is also not allowed.
  • Orphaned terms are not allowed in SharePoint taxonomy. Every sharepoint-taxonomy:Term should either have a sharepoint-taxonomy:parent or it should be the sharepoint-taxonomy:topLevelTermOf a TermSet.
  • SharePoint taxonomy does not support associative relations.
  • SharePoint taxonomy only allows 2 types of Hierarchical relations – sharepoint-taxonomy:parent and sharepoint-Taxonomy:child.
  • Unlike SKOS the hierarchical relationship in SharePoint taxonomy vocabulary, can only be established with Terms within the same TermSet.

See also

Import a term set using a SKOS-based format