Building a Metadata Ontology to Navigate a Complex Wiki Structure
The Issue At Hand
I am currently the project lead for a complete overhaul of the metadata tagging system of the French-speaking SCP Foundation wiki. The wiki is hosted on Wikidot, a platform that only supports non-hierarchized keywords to "tag" pages with metadata and find all pages that use a certain keyword (see an example of a Wikidot tag cloud here). However, the scale and needs of the wiki have far outgrown the limitations of such a system, and we thus want to develop a more robust system that would satisfy the following requirements:
- Follow a consistent semantic tree structure
- Support logic links such as mutual inclusion or exclusion, or map out complex hierarchical links between elements
- Be queryable and usable to build webapps and community tools once shared as an open resource
Using Protégé
To achieve these goals, I am using Protégé, an open source ontology editor developed at Stanford University, to build a new taglist in OWL format. This standard format will enable compatibility with a wide range of tools developed for academic and GLAM resources, while allowing querying with SPARQL to pull data and power both official and community-built tools.
The Challenges of "Wild" Implementation
While Protégé allows for robust modeling of the logical structure, we have to slap this structure on top of the much weaker Wikidot tagging system with heavy constraints: we are not able to add new scripts and logic on a site-wide level, and we cannnot modify the HTML and DOM structure of the pages outside of the zone dedicated to navigation and user-generated content.
We are currently developing strategies to counter this, such as the use of prefixing. For instance, prefixing content warning tags with an exclamation mark allows us to:
- Have the tag show up first in the tag list, the order of which we could not control otherwise due to Wikidot DOM limitations
- Make the content warning easily recognizable with custom styling after selecting it based on its prefix (with a selector such as
.page-tags a[href^="!"]). - Use the tag in combination with other features such as Wikidot's
[[iftags]]module to display a warning header before the article to warn users about certain contents.
This logic can be extended to various use cases enabled by the prefixes, backed up by the consistent ontology structure.
Plans for the Future: Navigation and Tools
We are currently working on building a user-friendly helper tool based on the staff-maintained OWL ontology to allow users to self-tag their articles with logically correct metadata based on this ontology. Some of the planned features are:
- A flowchart-type user experience based on the logical tree structure, starting with a selection between top-level tags and descending into more specific tags depending on the user's choices
- Logic warnings — "You tagged your article with
dog, thus you also have to tag it withanimal." - Tag recommendations — "You tagged your article with
fishing, thus you might want to consider tagging it withseaas these are often used together."