WP-SKOS

Exposes WordPress taxonomies as SKOS concept schemes via a Skosmos-compatible REST API and stable concept URIs. Integrates with HyperTaxonomy for the full SKOS relationship model.

Part of the HyperTaxonomy suite

One of five interoperable WordPress plugins for richer, connected taxonomies. Each works on its own; together they share a common term model. Learn more at hypertaxonomy.org.

  • HyperTaxonomy — the core: term groups, inclusions, synonyms, redirects, icons, relevance-scored search, and enhanced archives.
  • TermConnect — link terms to knowledge-base identifiers (Wikidata, GeoNames, LCSH…) and peer sites; delegated identity, shared vocabularies, and cross-site related content.
  • Social Hashtags & Mentions — inline #hashtags and @mentions as taxonomy terms, linked to the social networks you enable (built on TermConnect).
  • As the Crow Flies — attach physical locations to terms and filter content by distance/proximity.
  • WP-SKOS (this plugin) — expose your taxonomies as SKOS linked data via a Skosmos-compatible REST API.

Documentation map

  • Skosmos REST API — all endpoints at /skosmos/rest/v1/ for Skosmos and any SKOS client.
  • Concept URIs — concept / scheme / collection URIs, content negotiation, OWL property declarations, and the full JSON-LD output gallery.
  • Document Search — the concept-queryable document search endpoint, relevance ordering, pagination, and external peer-site documents (sourced via HyperTaxonomy).
  • HyperTaxonomy Integration — functions used, feature-flag gates, cache invalidation, and multilingual labels.
  • Python Converter — the SKOS → HyperTaxonomy import converter and its mapping config.

Data model

WordPress SKOS
Taxonomy skos:ConceptScheme at /wp-skos/scheme/{taxonomy}
Term skos:Concept at /wp-skos/concept/{taxonomy}/{slug}
Term name skos:prefLabel
Term description (plain text) skos:definition
Term description (contains HTML) skos:scopeNote
Term slug skos:notation
Parent term skos:broader
Child terms skos:narrower
All ancestor terms skos:broaderTransitive
All descendant terms skos:narrowerTransitive
HyperTaxonomy inclusion / synonym / custom rel skos:related (+ typed sub-property)
HyperTaxonomy redirect owl:deprecated + dct:isReplacedBy
HyperTaxonomy term group skos:Collection at /wp-skos/collection/{group-slug}
Most recent post-modified time in the concept’s archive dct:modified
TermConnect external URI skos:closeMatch
ATCF location row schema:location → schema:Place
Term archive URL rdfs:seeAlso

HyperTaxonomy relationship types that produce skos:related also produce a typed sub-property:

Relationship type Sub-property URI
includes https://hypertaxonomy.org/wp-skos/vocab/includes
member_of (container) https://hypertaxonomy.org/wp-skos/vocab/container
Synonym relationship https://hypertaxonomy.org/wp-skos/vocab/synonym
Custom slug {home_url}/wp-skos/vocab/{slug}

Custom type URIs use home_url() so they are site-local. Built-in type URIs use the stable https://hypertaxonomy.org/wp-skos/vocab/ namespace so they are consistent across sites.

Concept document example

A fully populated concept document (HyperTaxonomy + TermConnect + ATCF active). Fields appear only when data is present; a standalone WordPress site produces a much smaller document. See Concept URIs for the complete output gallery and field-by-field notes.

{
  "@context": {
    "skos":   "http://www.w3.org/2004/02/skos/core#",
    "owl":    "http://www.w3.org/2002/07/owl#",
    "rdfs":   "http://www.w3.org/2000/01/rdf-schema#",
    "dct":    "http://purl.org/dc/terms/",
    "foaf":   "http://xmlns.com/foaf/0.1/",
    "schema": "https://schema.org/",
    "wpskos": "https://hypertaxonomy.org/wp-skos/vocab/"
  },
  "@graph": [
    {
      "@type": "skos:Concept",
      "@id":   "https://example.com/wp-skos/concept/post_tag/electric-vehicles",
      "skos:inScheme": { "@id": "https://example.com/wp-skos/scheme/post_tag" },
      "skos:prefLabel": [
        { "@value": "Electric Vehicles", "@language": "en" },
        { "@value": "Véhicules électriques", "@language": "fr" }
      ],
      "skos:definition": [
        { "@value": "Road vehicles powered entirely by electric motors.", "@language": "en" }
      ],
      "skos:notation": "electric-vehicles",
      "skos:broader":  [{ "@id": "https://example.com/wp-skos/concept/post_tag/transportation" }],
      "skos:narrower": [
        { "@id": "https://example.com/wp-skos/concept/post_tag/battery-ev" },
        { "@id": "https://example.com/wp-skos/concept/post_tag/fuel-cell-ev" }
      ],
      "skos:related": [
        { "@id": "https://example.com/wp-skos/concept/post_tag/charging-infrastructure" }
      ],
      "wpskos:includes": [
        { "@id": "https://example.com/wp-skos/concept/post_tag/charging-infrastructure" }
      ],
      "skos:closeMatch": [
        { "@id": "http://www.wikidata.org/entity/Q193692" },
        { "@id": "http://id.loc.gov/authorities/subjects/sh85045070" }
      ],
      "rdfs:seeAlso": [
        { "@id": "https://en.wikipedia.org/wiki/Electric_vehicle", "@type": "foaf:Document" },
        { "@id": "https://example.com/tag/electric-vehicles/", "@type": "foaf:Document" }
      ],
      "_links": {
        "posts": "https://example.com/wp-json/wp-skos/v1/posts?concept=https%3A%2F%2Fexample.com%2Fwp-skos%2Fconcept%2Fpost_tag%2Felectric-vehicles"
      },
      "schema:location": [
        {
          "@type": "schema:Place",
          "schema:name": "Showroom",
          "schema:address": {
            "@type": "schema:PostalAddress",
            "schema:streetAddress": "100 Innovation Dr",
            "schema:addressLocality": "Portland",
            "schema:addressRegion": "OR",
            "schema:postalCode": "97201",
            "schema:addressCountry": "US"
          },
          "schema:geo": {
            "@type": "schema:GeoCoordinates",
            "schema:latitude": 45.512,
            "schema:longitude": -122.678
          }
        }
      ]
    }
  ]
}

License

GPLv2 or later — see https://www.gnu.org/licenses/gpl-2.0.html


This site uses Just the Docs, a documentation theme for Jekyll.