Semantic MediaWiki/data

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< Semantic MediaWiki
Revision as of 20:57, 28 July 2020 by Woozle (talk | contribs) (moved a comment here from the main page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Tables

As the SMW code API is not yet stable or well-documented, it appears that going directly to the database may be the best way to utilize SMW data from code running within MediaWiki (typically as an extension).

All of this information has been reverse-engineered, mostly from examination of data in a single SMW instance. I was not able to find any data-structure documentation in the official code docs.

Note that the schema version numbers are generally higher than the corresponding SMW version[1].

schema version 3

These are present in SMW version 1.9 alpha[1]:

schema version 2

These were present in SMW version 1.7, and may also be valid for 1.8 (but not 1.9):

  • /smw_atts2: relationships where the value is numerically/logically significant, or a "string" (non-page type)
  • /smw_conc2: not sure; probably concepts
  • /smw_conccache: not sure; presumably a cache for concepts
  • /smw_ids: assigns IDs to all properties, and values that map to a (potential) wiki page
  • /smw_inst2: not sure
  • /smw_redi2: not sure; redirects?
  • /smw_rels2: relationships where the value refers to a (potential) wiki page
  • /smw_spec2: URLs to SWiVT specs
  • /smw_subp2: not sure; sub-property map?
  • /smw_subs2: not sure; looks like a mapping of categories to sub-categories
  • /smw_text2: relationships where the value is a long text/data blob

Core tables are boldfaced; the others seem to be primarily for optimization or auxiliary purposes.

Explanations

  • Semantic relationships are defined in /smw rels2, /smw_text2, and /smw_atts2.
  • Correspondence between SMW entities (property names and some property values) and MediaWiki pages is defined in /smw_ids
  • Presumably the type of storage can be determined by looking up the SMW ID in /smw_spec2, making it unnecessary to check multiple tables (rels2, text2, atts2) for each property. but it does not seem to have been designed for this purpose.

Footnote

  1. 1.0 1.1 I'm presuming that there was a schema version 1 based on the naming of the version 2 tables (they all end in '2'), but this may be incorrect. In any case, schema version 2 corresponds approximately to SMW v1.x, and schema version 3 to SMW 2.x (and some high-numbered 1.x beta releases).