From: <sk...@us...> - 2007-11-05 13:07:13
|
Revision: 277 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=277&view=rev Author: sknappe Date: 2007-11-05 05:07:09 -0800 (Mon, 05 Nov 2007) Log Message: ----------- changed the search funtion Modified Paths: -------------- trunk/src/dbpedia-navigator/Ajax-Test/Settings.php trunk/src/dbpedia-navigator/Ajax-Test/SparqlConnection.php trunk/src/dbpedia-navigator/Ajax-Test/ajax-loader.gif trunk/src/dbpedia-navigator/Ajax-Test/ajax.php trunk/src/dbpedia-navigator/Ajax-Test/ajaxfunctions.php trunk/src/dbpedia-navigator/Ajax-Test/default.css trunk/src/dbpedia-navigator/Ajax-Test/index.php Modified: trunk/src/dbpedia-navigator/Ajax-Test/Settings.php =================================================================== --- trunk/src/dbpedia-navigator/Ajax-Test/Settings.php 2007-11-05 13:03:14 UTC (rev 276) +++ trunk/src/dbpedia-navigator/Ajax-Test/Settings.php 2007-11-05 13:07:09 UTC (rev 277) @@ -3,6 +3,6 @@ class Settings{ public $wsdluri="http://localhost:8181/services?wsdl"; public $dbpediauri="http://dbpedia.openlinksw.com:8890/sparql"; - public $sparqlttl=40; + public $sparqlttl=120; } ?> \ No newline at end of file Modified: trunk/src/dbpedia-navigator/Ajax-Test/SparqlConnection.php =================================================================== --- trunk/src/dbpedia-navigator/Ajax-Test/SparqlConnection.php 2007-11-05 13:03:14 UTC (rev 276) +++ trunk/src/dbpedia-navigator/Ajax-Test/SparqlConnection.php 2007-11-05 13:07:09 UTC (rev 277) @@ -1,12 +1,12 @@ <?php -//require_once 'pear/HTTP_Request.php'; - class SparqlConnection { private $DBPediaUrl; private $DLLearnerUri; private $client; + private $id; + private $ksID; function SparqlConnection($DBPediaUrl,$DLLearnerUri) { @@ -14,41 +14,40 @@ $this->DBPediaUrl=$DBPediaUrl; $this->DLLearnerUri=$DLLearnerUri; $this->client=new SoapClient("main.wsdl"); + $this->id=$this->client->generateID(); + $this->ksID = $this->client->addKnowledgeSource($this->id, "sparql", $this->DBPediaUrl); } function getConceptFromExamples($ttl,$posExamples,$negExamples) { - $id=$this->client->generateID(); + $this->client->applyConfigEntryInt($this->id, $this->ksID, "numberOfRecursions", 2); + $this->client->applyConfigEntryStringArray($this->id, $this->ksID, "instances", array_merge($posExamples,$negExamples)); + $this->client->applyConfigEntryInt($this->id, $this->ksID, "filterMode", 0); + $this->client->applyConfigEntryStringArray($this->id, $this->ksID, "predList", array()); + $this->client->applyConfigEntryStringArray($this->id, $this->ksID, "objList", array()); + $this->client->applyConfigEntryStringArray($this->id, $this->ksID, "classList", array()); + $this->client->applyConfigEntryString($this->id, $this->ksID, "format", "KB"); + $this->client->applyConfigEntryBoolean($this->id, $this->ksID, "dumpToFile", true); - $ksID = $this->client->addKnowledgeSource($id, "sparql", $this->DBPediaUrl); - $this->client->applyConfigEntryInt($id, $ksID, "numberOfRecursions", 2); - $this->client->applyConfigEntryStringArray($id, $ksID, "instances", array_merge($posExamples,$negExamples)); - $this->client->applyConfigEntryInt($id, $ksID, "filterMode", 0); - $this->client->applyConfigEntryStringArray($id, $ksID, "predList", array()); - $this->client->applyConfigEntryStringArray($id, $ksID, "objList", array()); - $this->client->applyConfigEntryStringArray($id, $ksID, "classList", array()); - $this->client->applyConfigEntryString($id, $ksID, "format", "KB"); - $this->client->applyConfigEntryBoolean($id, $ksID, "dumpToFile", true); + $this->client->setReasoner($this->id, "dig"); + $this->client->setLearningProblem($this->id, "posNegDefinition"); + $this->client->setPositiveExamples($this->id, $posExamples); + $this->client->setNegativeExamples($this->id, $negExamples); + $this->client->setLearningAlgorithm($this->id, "refinement"); - $this->client->setReasoner($id, "dig"); - $this->client->setLearningProblem($id, "posNegDefinition"); - $this->client->setPositiveExamples($id, $posExamples); - $this->client->setNegativeExamples($id, $negExamples); - $this->client->setLearningAlgorithm($id, "refinement"); - $start = microtime(true); - $this->client->init($id); + $this->client->init($this->id); $threaded=true; if($threaded == false) { - $concept = $this->client->learn($id); + $concept = $this->client->learn($this->id); } else { - $this->client->learnThreaded($id); + $this->client->learnThreaded($this->id); $i = 1; $sleeptime = 1; @@ -58,36 +57,23 @@ sleep($sleeptime); // see what we have learned so far - $concept=$this->client->getCurrentlyBestConcept($id); - $running=$this->client->isAlgorithmRunning($id); + $concept=$this->client->getCurrentlyBestConcept($this->id); + $running=$this->client->isAlgorithmRunning($this->id); $seconds = $i * $sleeptime; $i++; } while($seconds<$ttl&&$running); - $this->client->stop($id); + $this->client->stop($this->id); } return $concept; } function getTriples($ttl,$individual) { - $id=$this->client->generateID(); - - $ksID = $this->client->addKnowledgeSource($id, "sparql", $this->DBPediaUrl); - $this->client->applyConfigEntryInt($id, $ksID, "numberOfRecursions", 1); - $this->client->applyConfigEntryStringArray($id, $ksID, "instances", array($individual)); - $this->client->applyConfigEntryInt($id, $ksID, "filterMode", -1); - $this->client->applyConfigEntryStringArray($id, $ksID, "predList", array()); - $this->client->applyConfigEntryStringArray($id, $ksID, "objList", array()); - $this->client->applyConfigEntryStringArray($id, $ksID, "classList", array()); - $this->client->applyConfigEntryString($id, $ksID, "format", "Array"); - $this->client->applyConfigEntryBoolean($id, $ksID, "dumpToFile", false); - $this->client->applyConfigEntryBoolean($id,$ksID,"useLits",true); - - $options=array("triples"); - $this->client->startThread($id,$ksID,$options); + $options=array("triples",$individual); + $this->client->startThread($this->id,$this->ksID,$options); $i = 1; $sleeptime = 1; @@ -96,15 +82,16 @@ sleep($sleeptime); // see if algorithm is running - if (!$this->client->isThreadRunning($id,$ksID,"triples")) + if (!$this->client->isThreadRunning($this->id,$this->ksID,"triples")) { - $object=$this->client->getFromSparql($id,$ksID,"triples"); + $object=$this->client->getFromSparql($this->id,$this->ksID,"triples"); $array=$object->item; + if (count($array)==1) return $array; $ret=array(); foreach ($array as $element) { $items=preg_split("[<]",$element,-1, PREG_SPLIT_NO_EMPTY); - $ret[$items[1]]=$items[2]; + $ret[$items[0]]=$items[1]; } return $ret; } @@ -113,18 +100,14 @@ $i++; } while($seconds<$ttl); - $this->client->stopSparqlThread($id,$ksID,"triples"); + $this->client->stopSparqlThread($this->id,$this->ksID,"triples"); return array(); } function getSubjects($ttl,$label='Leipzig',$limit=5) { - $id=$this->client->generateID(); - - $ksID = $this->client->addKnowledgeSource($id, "sparql", $this->DBPediaUrl); - $options=array("subjects",$label,$limit); - $this->client->startThread($id,$ksID,$options); + $this->client->startThread($this->id,$this->ksID,$options); $i = 1; $sleeptime = 1; @@ -133,9 +116,9 @@ sleep($sleeptime); // see if algorithm is running - if (!$this->client->isThreadRunning($id,$ksID,"subjects")) + if (!$this->client->isThreadRunning($this->id,$this->ksID,"subjects")) { - $object=$this->client->getFromSparql($id,$ksID,"subjects"); + $object=$this->client->getFromSparql($this->id,$this->ksID,"subjects"); return $object->item; } @@ -143,17 +126,14 @@ $i++; } while($seconds<$ttl); - $this->client->stopSparqlThread($id,$ksID,"subjects"); + $this->client->stopSparqlThread($this->id,$this->ksID,"subjects"); return array(); } function getSubjectsFromConcept($ttl,$concept) { - $id=$this->client->generateID(); - - $ksID = $this->client->addKnowledgeSource($id, "sparql", $this->DBPediaUrl); $options=array("conceptSubjects",$concept); - $this->client->startThread($id,$ksID,$options); + $this->client->startThread($this->id,$this->ksID,$options); $i = 1; $sleeptime = 1; do { @@ -161,9 +141,9 @@ sleep($sleeptime); // see if algorithm is running - if (!$this->client->isThreadRunning($id,$ksID,"conceptSubjects")) + if (!$this->client->isThreadRunning($this->id,$this->ksID,"conceptSubjects")) { - $object=$this->client->getFromSparql($id,$ksID,"conceptSubjects"); + $object=$this->client->getFromSparql($this->id,$this->ksID,"conceptSubjects"); return $object->item; } @@ -171,10 +151,71 @@ $i++; } while($seconds<$ttl); - $this->client->stopSparqlThread($id,$ksID,"conceptSubjects"); + $this->client->stopSparqlThread($this->id,$this->ksID,"conceptSubjects"); return array(); } + /*public function testSoapTime() + { + $start = microtime(true); + $this->id=$this->client->generateID(); + $test=$this->client->debug("Test"); + $time=microtime(true)-$start; + return "Word: ".$test." got from SOAP in: ".$time; + }*/ + + public function startSearchAndShowArticle($keyword) + { + //TODO work on $keyword to get white space out + //TODO change article get function + $options=array("triples","http://dbpedia.org/resource/".$keyword); + $this->client->startThread($this->id,$this->ksID,$options); + + $options=array("subjects",$keyword,15); + $this->client->startThread($this->id,$this->ksID,$options); + } + + public function checkSearch($stop) + { + $this->client=new SoapClient("main.wsdl"); + if ($stop){ + $this->client->stopSparqlThread($this->id,$this->ksID,"subjects"); + return; + } + + // see if algorithm is running + if (!$this->client->isThreadRunning($this->id,$this->ksID,"subjects")) + { + $object=$this->client->getFromSparql($this->id,$this->ksID,"subjects"); + return $object->item; + } + return NULL; + } + + public function checkShowArticle($stop) + { + $this->client=new SoapClient("main.wsdl"); + if ($stop){ + $this->client->stopSparqlThread($this->id,$this->ksID,"triples"); + return; + } + + if (!$this->client->isThreadRunning($this->id,$this->ksID,"triples")) + { + $object=$this->client->getFromSparql($this->id,$this->ksID,"triples"); + $array=$object->item; + if (count($array)==1) return $array; + $ret=array(); + foreach ($array as $element) + { + $items=preg_split("[<]",$element,-1, PREG_SPLIT_NO_EMPTY); + $ret[$items[0]]=$items[1]; + } + return $ret; + } + return NULL; + } + public function loadWSDLfiles($wsdluri){ ini_set("soap.wsdl_cache_enabled","0"); Modified: trunk/src/dbpedia-navigator/Ajax-Test/ajax-loader.gif =================================================================== (Binary files differ) Modified: trunk/src/dbpedia-navigator/Ajax-Test/ajax.php =================================================================== --- trunk/src/dbpedia-navigator/Ajax-Test/ajax.php 2007-11-05 13:03:14 UTC (rev 276) +++ trunk/src/dbpedia-navigator/Ajax-Test/ajax.php 2007-11-05 13:07:09 UTC (rev 277) @@ -1,7 +1,8 @@ <?php require_once ("xajax/xajax_core/xajax.inc.php"); +$sid = session_id(); -$xajax = new xajax("ajaxfunctions.php"); +$xajax = new xajax("ajaxfunctions.php?sid=$sid"); $xajax->register(XAJAX_FUNCTION, 'getsubjects', array( 'onResponseDelay' => 'showLoadingSubjects', 'beforeResponseProcessing' => 'hideLoadingSubjects' @@ -22,4 +23,10 @@ 'onResponseDelay' => 'showLoadingConceptSubjects', 'beforeResponseProcessing' => 'hideLoadingConceptSubjects' )); +$xajax->registerFunction('searchAndShowArticle'); +$xajax->register(XAJAX_FUNCTION, 'showThisSearchResult', array( + 'onResponseDelay' => 'showLoadingSubjects', + 'beforeResponseProcessing' => 'hideLoadingSubjects' + )); +$xajax->registerFunction('showThisArticle'); ?> \ No newline at end of file Modified: trunk/src/dbpedia-navigator/Ajax-Test/ajaxfunctions.php =================================================================== --- trunk/src/dbpedia-navigator/Ajax-Test/ajaxfunctions.php 2007-11-05 13:03:14 UTC (rev 276) +++ trunk/src/dbpedia-navigator/Ajax-Test/ajaxfunctions.php 2007-11-05 13:07:09 UTC (rev 277) @@ -1,6 +1,12 @@ <?php ini_set('max_execution_time',200); +$sid = $_GET['sid']; +session_id($sid); session_start(); + +require("ajax.php"); +$xajax->processRequest(); + function getsubjects($label, $limit) { include_once("Settings.php"); @@ -10,7 +16,12 @@ $content=""; $subjects=$sc->getSubjects($settings->sparqlttl,$label,$limit); - if (count($subjects)==0) $content.="No search result found in time."; + if (count($subjects)==1) + { + if (strpos($subjects,"[Error]")===0) $content.=substr($subjects,7); + else $content.="<a href=\"\" onclick=\"xajax_getarticle('".$subjects."');return false;\">".urldecode(substr (strrchr ($subjects, "/"), 1))."</a><br/>"; + } + else if (count($subjects)==0) $content.="No search result found in time."; else{ foreach ($subjects as $subject) { @@ -30,11 +41,16 @@ $settings=new Settings(); $sc=new SparqlConnection($settings->dbpediauri,$settings->wsdluri); $triples=$sc->getTriples($settings->sparqlttl,$subject); - if (count($triples)==0) $content.="Article not found."; + $content=""; + if (count($triples)==1) + { + $content.=substr($triples,7); + } + else if (count($triples)==0) $content.="Article not found."; else { $content=""; - $content.="<img src=\"".$triples['http://xmlns.com/foaf/0.1/img']."\" alt=\"Picture of ".urldecode(substr (strrchr ($subject, "/"), 1))."\" width=\"50\"/ style=\"float:left\">"; - $content.="<div>".$triples['http://dbpedia.org/property/abstract']."</div>"; + $content.="<img src=\"".$triples['http://xmlns.com/foaf/0.1/depiction']."\" alt=\"Picture of ".urldecode(substr (strrchr ($subject, "/"), 1))."\" width=\"50\"/ style=\"float:left\">"; + $content.="<div>".urldecode($triples['http://dbpedia.org/property/abstract'])."</div>"; $contentbuttons="<input type=\"button\" value=\"Positive\" class=\"button\" onclick=\"xajax_addPositive('".$subject."');return false;\" /> <input type=\"button\" value=\"Negative\" class=\"button\" onclick=\"xajax_addNegative('".$subject."');return false;\" />"; } @@ -132,7 +148,12 @@ if (isset($_SESSION['lastLearnedConcept'])) { $subjects=$sc->getSubjectsFromConcept($settings->sparqlttl,$_SESSION['lastLearnedConcept']); - if (count($subjects)==0) $content.="No examples for concept found in time."; + if (count($subjects)==1) + { + if (strpos($subjects,"[Error]")===0) $content.=substr($subjects,7); + else $content.="<a href=\"\" onclick=\"xajax_getarticle('".$subjects."');return false;\">".urldecode(substr (strrchr ($subjects, "/"), 1))."</a><br/>"; + } + else if (count($subjects)==0) $content.="No examples for concept found in time."; else { foreach ($subjects as $subject) { @@ -147,6 +168,117 @@ return $objResponse; } -require("ajax.php"); -$xajax->processRequest(); +function searchAndShowArticle($keyword) +{ + require_once("Settings.php"); + require_once("SparqlConnection.php"); + $settings=new Settings(); + + $sc=new SparqlConnection($settings->dbpediauri,$settings->wsdluri); + + $content=""; + + $sc->startSearchAndShowArticle($keyword); + $objResponse = new xajaxResponse(); + $objResponse->call('xajax_showThisArticle', urlencode(serialize($sc)),"http://dbpedia.org/resource/".$keyword); + $objResponse->call('xajax_showThisSearchResult', urlencode(serialize($sc))); + return $objResponse; +} + +function showThisSearchResult($sc) +{ + require_once("Settings.php"); + require_once("SparqlConnection.php"); + $settings=new Settings(); + $sc=unserialize(urldecode($sc)); + $objResponse = new xajaxResponse(); + $i = 1; + $sleeptime = 1; + $searchComplete=false; + do { + if (!$searchComplete) $searchResult=$sc->checkSearch(false); + if (!is_null($searchResult)){ + $searchComplete=true; + break; + } + + $seconds = $i * $sleeptime; + $i++; + + // sleep a while + sleep($sleeptime); + } while ($seconds<$settings->sparqlttl); + + if (!$searchComplete){ + $sc->checkSearch(true); + $objResponse->assign("searchcontent","innerHtml","No search result found in time."); + } + + $content=""; + if (count($searchResult)==1) + { + if (strpos($searchResult,"[Error]")===0) $content.=substr($searchResult,7); + else $content.="<a href=\"\" onclick=\"xajax_getarticle('".$searchResult."');return false;\">".urldecode(substr (strrchr ($searchResult, "/"), 1))."</a><br/>"; + } + else if (count($searchResult)==0) $content.="No search result found in time."; + else{ + foreach ($searchResult as $result) + { + $content.="<a href=\"\" onclick=\"xajax_getarticle('".$result."');return false;\">".urldecode(substr (strrchr ($result, "/"), 1))."</a><br/>"; + } + } + + + $objResponse->assign("searchcontent", "innerHTML", $content); + return $objResponse; +} + +function showThisArticle($sc,$subject) +{ + require_once("Settings.php"); + require_once("SparqlConnection.php"); + $settings=new Settings(); + $sc=unserialize(urldecode($sc)); + $i = 1; + $sleeptime = 1; + $showArticleComplete=false; + do { + if (!$showArticleComplete) $article=$sc->checkShowArticle(false); + if (!is_null($article)){ + $showArticleComplete=true; + break; + } + + $seconds = $i * $sleeptime; + $i++; + + // sleep a while + sleep($sleeptime); + } while ($seconds<$settings->sparqlttl); + + $content=""; + if (!$showArticleComplete){ + $sc->checkShowArticle(true); + } + + + if (count($article)==1) + { + $content.=substr($article,7); + } + else if (count($article)==0) $content.="Article not found."; + else { + $content=""; + $content.="<img src=\"".$article['http://xmlns.com/foaf/0.1/depiction']."\" alt=\"Picture of ".urldecode(substr (strrchr ($subject, "/"), 1))."\" width=\"50\"/ style=\"float:left\">"; + $content.="<div>".urldecode($article['http://dbpedia.org/property/abstract'])."</div>"; + + $contentbuttons="<input type=\"button\" value=\"Positive\" class=\"button\" onclick=\"xajax_addPositive('".$subject."');return false;\" /> <input type=\"button\" value=\"Negative\" class=\"button\" onclick=\"xajax_addNegative('".$subject."');return false;\" />"; + } + + $objResponse = new xajaxResponse(); + $objResponse->assign("articlecontent", "innerHTML", $content); + $objResponse->assign("contentbuttons", "innerHTML", $contentbuttons); + return $objResponse; +} + ?> \ No newline at end of file Modified: trunk/src/dbpedia-navigator/Ajax-Test/default.css =================================================================== --- trunk/src/dbpedia-navigator/Ajax-Test/default.css 2007-11-05 13:03:14 UTC (rev 276) +++ trunk/src/dbpedia-navigator/Ajax-Test/default.css 2007-11-05 13:07:09 UTC (rev 277) @@ -327,4 +327,12 @@ padding: 0em 0.4em; font-weight: bold; white-space: nowrap; +} + +#search { + text-align:center; +} + +#label { + margin-bottom: 0.1em; } \ No newline at end of file Modified: trunk/src/dbpedia-navigator/Ajax-Test/index.php =================================================================== --- trunk/src/dbpedia-navigator/Ajax-Test/index.php 2007-11-05 13:03:14 UTC (rev 276) +++ trunk/src/dbpedia-navigator/Ajax-Test/index.php 2007-11-05 13:07:09 UTC (rev 277) @@ -5,15 +5,14 @@ echo "<a href='clearsession.php'>start from scratch</a>"; -require("ajax.php"); - +require("ajax.php"); -echo '<?xml version="1.0" encoding="UTF-8"?>' +echo '<?xml version="1.0" encoding="UTF-8"?>'; ?> <html> <head> <title>DL Learner</title> - <meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-1\"/> + <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <link rel="stylesheet" href="default.css"/> <?php $xajax->printJavascript('xajax/'); ?> <script type="text/javascript"> @@ -57,26 +56,19 @@ <div id="wrapper"> <div id="leftSidebar"> -<div class="box" id="search"> +<div class="box"> <div class="boxtitle">Search</div> - <div class="boxcontent"> - <table border="0"> - <tr><tb>Search:<br/></tb></tr> - <tr><tb><input type="textfield" name="label" id="label"> <select name="limit" size="1" id="limit"> - <option>1</option> - <option selected="selected">5</option> - <option>10</option> - <option>15</option> - </select><br/></tb></tr> - <tr><tb><input type="button" value="Search" class="button" onclick="xajax_getsubjects(document.getElementById('label').value,document.getElementById('limit').value);return false;"/></tb></tr> - </table> + <div class="boxcontent" id="search"> + Search:<br/> + <input type="textfield" name="label" id="label"><br/> + <input type="button" value="Article" class="button" onclick="xajax_searchAndShowArticle(document.getElementById('label').value);return false;" /> <input type="button" value="Fulltext" class="button" onclick=""/> </div> <!-- boxcontent --> </div> <!-- box --> -<div class="box" id="search"> +<div class="box"> <div class="boxtitle">Searchresults</div> <div class="boxcontent"> - <div id="searchcontent" style="display:none"></div> + <div id="searchcontent" style="display:block"></div> <div id="loadingSubject" style="display:none"><img src="ajax-loader.gif" alt="Loading..."/></div> </div> <!-- boxcontent --> </div> <!-- box --> @@ -104,7 +96,7 @@ <div class="box"> <div class="boxtitlewithbutton"><table border="0" class="titletable"><tr><td class="left">Article</td><td class="right"><span id="contentbuttons"></span></td></tr></table></div> <div class="boxcontent" id="article"> - <div id="articlecontent" style="display:none"></div> + <div id="articlecontent" style="display:block"></div> <div id="loadingArticle" style="display:none"><img src="ajax-loader.gif" alt="Loading..."/></div> </div> <!-- boxcontent --> </div> <!-- box --> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |