User:Lectrician1/metaclass-check.js

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
// This adds a bit of warning text next to instance of statements on classes if their values are not metaclasses

$( function () {
	mw.hook("wikibase.entityPage.entityLoaded").add(async function (e) {
	    if ('P279' in e.claims && 'P31' in e.claims) {
	      for (claim of Object.values(e.claims.P31)) {
	        if (claim.mainsnak.snaktype == "value") {
	    	  let itemID = claim.mainsnak.datavalue.value.id
	          let query = `
				ASK {
				  wd:${itemID} wdt:P31/wdt:P279* wd:Q16889133.
				}`
	          let boolResult = await $.post("https://query.wikidata.org/sparql?format=json", {
	            query: query })
	          
	          if (!boolResult.boolean) {
	            $('#' + $.escapeSelector(claim.id)).find('.wikibase-snakview-indicators').append('<span style="color: red;">This class is not a metaclass!</span>')
	          }
	        }
	      }
	    }
	})
})