The tags are either categorizing the content of the document (labels like document_management
, ECM
, complex_Web_application
, etc., can be thought as tags for Nuxeo), or they reflect the user feeling (great
, user_friendly
, versatile
, etc.).
The tag service uses a facet to represent tags as a document property.
A tagging action is a link between a given document and a tag, and belongs to a given user. A tag holds a label that does not contain any:
- space
- slash
- backslash
- percent
- quote
NXTag
facet, it is possible to use these characters except the percent when creating tags.
This can be enabled or disabled with the following configuration property: nuxeo.tag.sanitization.enabled
.
By default they are not usable (nuxeo.tag.sanitization.enabled=true
).
Characters will be removed by service.
Functional Overview
Tag Service Features
The tag service is accessed through the TagService
interface.
The tag service allows you to:
- Tag and untag a document
- Get all the tags for a document
- Get all the documents for a tag
- Get suggested tags for a given tag prefix
Tags, Versions and Proxies
The tags are duplicated:
- From the live document when creating a version
- From a version when creating a proxy
When restoring a version, the tags on the live document are also restored from the ones on the version.
Tags can be added and removed independently on live documents and versions: a tag added on a live document won't be added on all its versions, but only on the versions that will be created after.
The logic for the above is in the TaggedVersionListener
listener.
Disabling Tags on Versions
To disable the duplication of tags on versions and proxies, the TaggedVersionListener
may be disabled with the following contribution:
<require>org.nuxeo.ecm.platform.tag.service.listener</require>
<extension target="org.nuxeo.ecm.core.event.EventServiceComponent" point="listener">
<listener name="taggedVersionListener" enabled="false" />
</extension>
Tag Service Architecture
NXTag
facet. The following paragraph describes the previous tag service architecture that is deprecated since 9.3.
The following document types are defined by the tag service.
A Tag
is a document type representing the tag itself (but not its association to specific documents). It contains the usual dublincore
schema, and in addition has a specific tag
schema containing a tag:label
string field.
A Tagging
is a relation type representing the action of tagging a given document with a tag. (A relation type is a document type extending the default Relation
document type; it works like a normal document type except that it's not found by NXQL queries on Document
). The important fields of a Tagging
document are relation:source
which is the document id, relation:target
which is the tag id, and dc:creator
which is the user doing the tagging action.
Both Tag
and Tagging
documents managed by the tag service are unfiled, which means that they don't have a parent folder. They are therefore not visible in the normal tree of documents; only queries can find them. In addition they don't have any ACLs set on them, which means that only a superuser (and the tag service internal code) can access them.