From: <sk...@us...> - 2008-04-02 16:13:41
|
Revision: 757 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=757&view=rev Author: sknappe Date: 2008-04-02 09:13:35 -0700 (Wed, 02 Apr 2008) Log Message: ----------- get examples for concept works, but not yet perfect Modified Paths: -------------- trunk/src/dbpedia-navigator/DLLearnerConnection.php trunk/src/dbpedia-navigator/NaturalConcepts.php trunk/src/dbpedia-navigator/ajaxfunctions.php Modified: trunk/src/dbpedia-navigator/DLLearnerConnection.php =================================================================== --- trunk/src/dbpedia-navigator/DLLearnerConnection.php 2008-04-02 16:02:52 UTC (rev 756) +++ trunk/src/dbpedia-navigator/DLLearnerConnection.php 2008-04-02 16:13:35 UTC (rev 757) @@ -227,8 +227,7 @@ function getSubjectsFromConcept($concept) { - $query="SELECT DISTINCT ?subject\n". - "WHERE { ?subject a <".$concept.">}\n"; + $query=$this->client->SparqlRetrieval($concept); $result=json_decode($this->getSparqlResultThreaded($query),true); if (count($result['results']['bindings'])==0) throw new Exception("Your query brought no result."); $ret=array(); Modified: trunk/src/dbpedia-navigator/NaturalConcepts.php =================================================================== --- trunk/src/dbpedia-navigator/NaturalConcepts.php 2008-04-02 16:02:52 UTC (rev 756) +++ trunk/src/dbpedia-navigator/NaturalConcepts.php 2008-04-02 16:13:35 UTC (rev 757) @@ -50,10 +50,72 @@ print $query; return $query; } + + function getSparqlQuery() + { + $temp=$this->concept; + $andOrParts=$this->getAndOrParts($temp); + print_r($andOrParts); + } + + function getAndOrParts($temp) + { + $split=preg_split("/(OR)|(AND)/",$temp,-1,PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY); + $bracket=0; + $arr=array(); + $temppart=""; + foreach ($split as $part){ + $part=trim($part); + if (strpos($part,"(")===0){ + $bracket+=substr_count($part,"("); + } + if ($bracket>0){ + if (($part=="AND")||($part=="OR")) $temppart.=" ".$part." "; + else $temppart.=$part; + } + else{ + if ((!strpos($part,"AND"))&&(!strpos($part,"OR"))) $arr[]=$part; + else $arr[]=$this->getAndOrParts($part); + } + if ((strrpos($part,')')==(strlen($part)-1))&&($bracket>0)){ + $bracket-=substr_count($part,")"); + if ($bracket==0){ + if ((!strpos($temppart,"AND"))&&(!strpos($temppart,"OR"))) $arr[]=substr($temppart,1,strlen($temppart)-2); + else $arr[]=$this->getAndOrParts(substr($temppart,1,strlen($temppart)-2)); + $temppart=""; + } + } + } + return $arr; + } + + function isExistsConstruct($construct) + { + if (!(strpos($construct,"EXISTS")===0)) return false; + $split=preg_split("/(EXISTS \".*\")\./",$construct,-1,PREG_SPLIT_NO_EMPTY); + $afterdot=$split[0]; + print $afterdot; + $bracket=0; + $offset=0; + do{ + $nextBracketOn=strpos($afterdot,"(",$offset); + $nextBracketOff=strpos($afterdot,")",$offset); + print "On: ".$nextBracketOn+1; + print "Off: ".$nextBracketOff+1; + $min=min($nextBracketOn,$nextBracketOff); + print $min+1; + if ($nextBracketOn==$min) $bracket++; + if ($nextBracketOff==$min) $bracket--; + $offset=$min; + } while(($bracket>0)||($offset>=strlen($afterdot)-1)); + print ($offset); + return true; + } } -$conc="EXISTS http://dbpedia.org/property/website.TOP AND http://dbpedia.org/resource/Berlin"; +//$conc="(EXISTS http://dbpedia.org/property/website.(http://dbpedia.org/resource/Berlin AND http://dbpedia.org/resource/Berlin) OR (http://dbpedia.org/resource/Berlin AND http://dbpedia.org/resource/Berlin)) OR http://dbpedia.org/resource/Berlin"; +$conc="EXISTS \"http://dbpedia.org/property/website\".(http://dbpedia.org/resource/Berlin AND http://dbpedia.org/resource/Berlin)"; $nc=new NaturalConcepts($conc); -$ic=$nc->getNaturalConcept(); +$ic=$nc->isExistsConstruct($conc); //print_r($ic); ?> \ No newline at end of file Modified: trunk/src/dbpedia-navigator/ajaxfunctions.php =================================================================== --- trunk/src/dbpedia-navigator/ajaxfunctions.php 2008-04-02 16:02:52 UTC (rev 756) +++ trunk/src/dbpedia-navigator/ajaxfunctions.php 2008-04-02 16:13:35 UTC (rev 757) @@ -392,7 +392,7 @@ $concept.="<table border=0>\n"; $i=1; foreach ($concepts as $con){ - $concept.="<tr><td><a href=\"\" onclick=\"xajax_getSubjectsFromConcept('".$con."');return false;\" onMouseOver=\"showdiv('div".$i."');showdiv('ConceptBox');\" onMouseOut=\"hidediv('div".$i."');hidediv('ConceptBox');\" />".$con."</a></td></tr>"; + $concept.="<tr><td><a href=\"\" onclick=\"xajax_getSubjectsFromConcept('".urlencode($con)."');return false;\" onMouseOver=\"showdiv('div".$i."');showdiv('ConceptBox');\" onMouseOut=\"hidediv('div".$i."');hidediv('ConceptBox');\" />".$con."</a></td></tr>"; //put information about concepts in divs $conceptinformation.="<div id=\"div".$i."\" style=\"display:none\">Concept Depth: ".$conceptDepth[$i-1]."<br/>Concept Arity: ".$conceptArity[$i-1]."<br/>Concept Length: ".$sc->getConceptLength($con)."</div>"; $i++; @@ -421,6 +421,7 @@ setRunning($id,"true"); + $concept=urldecode($concept); $content=""; try{ require_once("DLLearnerConnection.php"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |