$title\n'; return $out; } function tagcloud($title, $data) { $max = 0; $tags = array(); foreach($data['result']['rows'] as $row) { $c = $row['c']; if($c>$max) $max = $c; $name = $row['tagname']; $tags[$name]['label'] = $name; $tags[$name]['title'] = $name; $tags[$name]['link'] = LODrTools::taglink($name); $tags[$name]['count'] = $c; } return LODrTools::cloud($title, 'tag', $tags, $max); } function uricloud($title, $data) { $max = 0; $tags = array(); foreach($data['result']['rows'] as $row) { $c = $row['c']; if($c>$max) $max = $c; $uri = $row['uri']; $tags[$uri]['count'] = $c; $tags[$uri]['label'] = LODrTools::get_label($this->store, $uri); if ($row['rel']) { $tags[$uri]['title'] = 'Sharing the same value for the '.$row['rel'].' property (= '.$row['val'].")"; } else { $tags[$uri]['title'] = LODrTools::get_label($this->store, $uri); } $tags[$uri]['link'] = LODrTools::urilink($uri); } return LODrTools::cloud($title, 'uri', $tags, $max); } function get_label($store, $uri) { return LODrTools::get_lang_query($store, $uri, 'rdfs:label', true); } function get_desc($store, $uri) { return LODrTools::get_lang_query($store, $uri, 'rdfs:comment'); } function get_lang_query($store, $uri, $property, $show=false) { global $langs; // Use session language or default ones $lang = LODrTools::get_lang(); if($lang) $lg = array($lang); else $lg = $langs; // create the union / filter patterns for the prefered languages (in case more than one lang is used) foreach($lg as $lang) { $q .= " { <$uri> $property ?v . FILTER (lang(?v) = '$lang') } UNION "; } // create the query, adding a default language value $query = " SELECT DISTINCT ?v WHERE { $q { <$uri> $property ?v . FILTER (lang(?v) = '') } } LIMIT 1"; $res = $store->do_query($query); // if no result found, must we return something ? if(!sizeof($res['result']['rows'])) return $show ? $uri : ''; return $res['result']['rows'][0]['v']; } public function moat_ping($url) { global $tagserv; foreach($tagserv as $serv) { $server = $serv[1]; LODrTools::get_url("${server}?import=$url"); } } function moat_get($server, $tag) { $json = json_decode(LODrTools::get_url("${server}tag/$tag/json/light")); return $json->results->bindings; } function sparql_get($endpoint, $tag) { $query = " SELECT DISTINCT ?label ?uri WHERE { { ?uri ?label } UNION { ?uri ?label } . FILTER REGEX(?label, \"^$tag$\", \"i\") . } "; $q = urlencode($query); $a = urlencode('application/sparql-results+json'); $url = "$endpoint?query=$q&Accept=$a"; $res = LODrTools::get_url($url); $json = json_decode(LODrTools::get_url($url)); return $json->results->bindings; } function get_lang() { session_start(); return $_SESSION['lang']; } function set_lang($lang) { session_start(); if($lang != '') { if($lang == 'default') { unset($_SESSION['lang']); } else { $_SESSION['lang'] = $lang; } } } function lang_form() { global $langs; $cur = LODrTools::get_lang(); $uri = $_SERVER['REDIRECT_URL']; $select = ""; return $select; } public function get_url($url, $header='0', $type=null) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if($header != 0) curl_setopt($ch, CURLOPT_HTTPHEADER, $header); else curl_setopt($ch, CURLOPT_HEADER, $header); if($type) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $type); } $data = curl_exec($ch); curl_close($ch); return $data; } function ping($uri) { global $pings; foreach($pings as $service) { // XMLRPC API might be not supported on the webserver // $request = xmlrpc_encode_request('weblogUpdates.ping', array('', $uri)); $request = " weblogUpdates.ping URI: $uri $uri "; $header = array( 'Content-Type: text/xml', "Content-length: ".strlen($request). "\r\n", $request ); $res = LODrTools::get_url($service, $header, 'POST'); } } } ?>