SparqlGraph

From KIproBatt Wiki
(Updated with content from Extension:OpenSemanticLab version 0.0.3)
 
(Simon Stier changed the content model of the page Module:KB/Viewer/SparqlGraph from "wikitext" to "Scribunto")
Tag: content model change
 
(No difference)

Latest revision as of 19:06, 10 July 2022

Documentation for this module may be created at Module:KB/Viewer/SparqlGraph/doc

local p = {}
local linkedwiki = require 'linkedwiki'
function p.section(f)
	local object =  linkedwiki.new()
    object:setConfig(f.args["endpoint"])
    mw.log(object:getConfig())

	local result = object:query( f.args["query"])
-- linkedwiki.print_r(result)

local text = [[
== Authority Notice ==
]]
	local newline=[[

]]
	local i = 0
	local row = nill
	local link = nil
	local logo = nil
	text = '<div class="graphviz" style="display:none; text-align:center;"> digraph{' .. newline .. 'rankdir=LR;'
	row = result['result']['rows'][i]
	while( row ~= nil )
	do
	 --linkedwiki.print_r(row)
	  --define nodes
	  if row['subject_label'] then --set subject label
	  	text = text .. '"' .. row['subject'] .. '"' .. '[label="'.. row['subject_label'] .. '" href="' .. row['subject'] .. '"]' .. newline
	  end
	  if row['object_label'] then --set object label
	    text = text .. '"' .. row['object'] .. '"' .. '[label="'.. row['object_label'] .. '" href="' .. row['object'] .. '"]' .. newline
	  end
	  --define edge
	  text = text .. '"' .. row['subject'] .. '" -> "' .. row['object'] .. '" ['
	  if row['edge'] then --link to edge
	  	text = text .. 'href="'.. row['edge'] .. '"'
	  end
	  if row['edge_label'] then --set edge label
	  	text = text .. 'label="'.. row['edge_label'] .. '"'
	  end
	  if row['edgetooltip'] then --add edge tooltip
	  	text = text .. ' edgetooltip="' .. row['edgetooltip'] .. '"'
	  end
	  text = text .. ']' .. newline
	  i = i + 1
	  row = result['result']['rows'][i]
	end
	text = text .. '}</div>'
  return text
end
 
return p