Semantic MediaWiki/data/smw object ids: Difference between revisions
from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
updated highlight tags; latest schema |
title lookup SQL |
||
| Line 18: | Line 18: | ||
) ENGINE=InnoDB CHARSET=binary; | ) ENGINE=InnoDB CHARSET=binary; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | ===Examples=== | ||
< | Showing the blob values: | ||
<source lang=mysql>SELECT | |||
smw_id, | smw_id, | ||
smw_namespace, | smw_namespace, | ||
| Line 28: | Line 29: | ||
CAST(smw_proptable_hash AS CHAR) AS pthash | CAST(smw_proptable_hash AS CHAR) AS pthash | ||
FROM | FROM | ||
smw_object_ids;</ | smw_object_ids;</source> | ||
Looking up titles for each property tuple: | |||
<source lang=mysql> | |||
SELECT | |||
u.s_id, | |||
CAST(s.smw_title AS CHAR) AS s_title, | |||
u.p_id, | |||
CAST(p.smw_title AS CHAR) AS p_title, | |||
u.fType, | |||
CAST(u.val AS CHAR) as uval | |||
FROM | |||
((SELECT | |||
s_id, p_id, 'blob' AS fType, CAST(o_blob AS CHAR) AS val FROM smw_di_blob | |||
UNION SELECT | |||
s_id, p_id, 'time' AS fType, CAST(o_serialized AS CHAR) as val FROM smw_di_time | |||
UNION SELECT | |||
s_id, p_id, 'wikiPage' AS fType, o_id AS val FROM smw_di_wikipage | |||
UNION SELECT | |||
s_id, p_id, 'bool' AS fType, o_value AS val FROM smw_di_bool | |||
UNION SELECT | |||
s_id, p_id, 'coords' AS fType, o_serialized AS val FROM smw_di_coords | |||
UNION SELECT | |||
s_id, p_id, 'number' AS fType, o_serialized AS val FROM smw_di_number | |||
UNION SELECT | |||
s_id, p_id, 'uri' AS fType, CAST(o_blob AS CHAR) AS val FROM smw_di_uri | |||
) AS u | |||
LEFT JOIN smw_object_ids AS s ON u.s_id = s.smw_id) | |||
LEFT JOIN smw_object_ids AS p ON u.p_id = p.smw_id | |||
ORDER BY p_title</source> | |||
Revision as of 12:19, 10 July 2020
About
- Purpose: registry of all SMW object IDs; apparently replaces smw_ids in schema version 2 but adds
smw_proptable_hashfield. Asmw_iwfield was added sometime between SMW versions v1.9 and 2.5.5.
SQL
CREATE TABLE `smw_object_ids` (
`smw_id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`smw_namespace` int(11) NOT NULL,
`smw_title` varbinary(255) NOT NULL,
`smw_iw` varbinary(32) NOT NULL,
`smw_subobject` varbinary(255) NOT NULL,
`smw_sortkey` varbinary(255) NOT NULL,
`smw_proptable_hash` mediumblob,
PRIMARY KEY (`smw_id`),
KEY `smw_id` (`smw_id`,`smw_sortkey`),
KEY `smw_title` (`smw_title`,`smw_namespace`,`smw_iw`,`smw_subobject`),
KEY `smw_sortkey` (`smw_sortkey`),
KEY `smw_iw` (`smw_iw`)
) ENGINE=InnoDB CHARSET=binary;
Examples
Showing the blob values:
SELECT
smw_id,
smw_namespace,
CAST(smw_title AS CHAR) AS title,
CAST(smw_iw AS CHAR) AS iw,
CAST(smw_subobject AS CHAR) AS sub,
CAST(smw_sortkey AS CHAR) AS sortkey,
CAST(smw_proptable_hash AS CHAR) AS pthash
FROM
smw_object_ids;
Looking up titles for each property tuple:
SELECT
u.s_id,
CAST(s.smw_title AS CHAR) AS s_title,
u.p_id,
CAST(p.smw_title AS CHAR) AS p_title,
u.fType,
CAST(u.val AS CHAR) as uval
FROM
((SELECT
s_id, p_id, 'blob' AS fType, CAST(o_blob AS CHAR) AS val FROM smw_di_blob
UNION SELECT
s_id, p_id, 'time' AS fType, CAST(o_serialized AS CHAR) as val FROM smw_di_time
UNION SELECT
s_id, p_id, 'wikiPage' AS fType, o_id AS val FROM smw_di_wikipage
UNION SELECT
s_id, p_id, 'bool' AS fType, o_value AS val FROM smw_di_bool
UNION SELECT
s_id, p_id, 'coords' AS fType, o_serialized AS val FROM smw_di_coords
UNION SELECT
s_id, p_id, 'number' AS fType, o_serialized AS val FROM smw_di_number
UNION SELECT
s_id, p_id, 'uri' AS fType, CAST(o_blob AS CHAR) AS val FROM smw_di_uri
) AS u
LEFT JOIN smw_object_ids AS s ON u.s_id = s.smw_id)
LEFT JOIN smw_object_ids AS p ON u.p_id = p.smw_id
ORDER BY p_title
