$RELATIONS_EXCLUSION_RULES[] = array("SUBJECT" => "*", "VERB" => "وجعلناها", "OBJECT" => "*"); $RELATIONS_EXCLUSION_RULES[] = array("SUBJECT" => "*", "VERB" => "جعلناه", "OBJECT" => "*"); $RELATIONS_EXCLUSION_RULES[] = array("SUBJECT" => "*", "VERB" => "جعلناها", "OBJECT" => "*"); $RELATIONS_EXCLUSION_RULES[] = array("SUBJECT" => "*", "VERB" => "وجعلناه", "OBJECT" => "*"); $RELATIONS_EXCLUSION_RULES[] = array("SUBJECT" => "*", "VERB" => "جعلناك", "OBJECT" => "*"); $RELATIONS_EXCLUSION_RULES[] = array("SUBJECT" => "*", "VERB" => "فجعلناهن", "OBJECT" => "*"); $RELATIONS_EXCLUSION_RULES[] = array("SUBJECT" => "*", "VERB" => "جعل", "OBJECT" => "*"); $RELATIONS_EXCLUSION_RULES[] = array("SUBJECT" => "*", "VERB" => "تجعلونه", "OBJECT" => "*"); $RELATIONS_EXCLUSION_RULES[] = array("SUBJECT" => "*", "VERB" => "جعلناكم", "OBJECT" => "*"); //object vague $RELATIONS_EXCLUSION_RULES[] = array("SUBJECT" => "*", "VERB" => "*", "OBJECT" => "بعض"); //preprint_r($excludedRelationsFromFileArr); foreach ($excludedRelationsFromFileArr as $relationTripleText => $dummy) { $subject = convertConceptIDtoGraphLabel($relationTripleArr[0]); $verb = $relationTripleArr[1]; $object = convertConceptIDtoGraphLabel($relationTripleArr[2]); $relationTripleArr = explode(",", $relationTripleText); $RELATIONS_EXCLUSION_RULES[] = array("SUBJECT" => $subject, "VERB" => $verb, "OBJECT" => $object); } //preprint_r($RELATIONS_EXCLUSION_RULES); $filteredRelationsArr = array(); foreach ($relationsArr as $hash => $relationArr) { $relationsType = $relationArr['TYPE']; $subject = $relationArr['SUBJECT']; $object = $relationArr['OBJECT']; $verbSimple = $relationArr['VERB']; if ($subject == $object) { $relationsRemoved++; continue; } echoN("{$subject}|{$object}|" . isset($excludedConceptsArr[$subject]));
function ontologyToD3TreemapHierarchical($MODEL_QA_ONTOLOGY, $minFreq = 0, $lang) { global $lang; $alreadyInLevel1 = array(); $treeRootObj = array(); $treeRootObj["name"] = "قرآن"; if ($lang == "EN") { $treeRootObj["name"] = "Quran"; } $treeRootObj["children"] = array(); /** SHOULD BE ZERO BASED FOR D3 TO WORK - o.target.weight = NULL**/ $nodeSerialNumber = 0; $qaOntologyConceptsIterator = getAPCIterator("ALL\\/MODEL_QA_ONTOLOGY\\/CONCEPTS\\/.*"); foreach ($qaOntologyConceptsIterator as $conceptsCursor) { $conceptNameID = getEntryKeyFromAPCKey($conceptsCursor['key']); $conceptArr = $conceptsCursor['value']; $conceptLabelAR = $conceptArr['label_ar']; $conceptLabelEN = $conceptArr['label_en']; $conceptFrequency = $conceptArr['frequency']; $conceptWeight = $conceptArr['weight']; $type = $conceptArr['type']; if ($conceptFrequency < $minFreq) { continue; } //ONLY CLASSES (CLUSTERS) if ($type == "class") { $alreadyInLevel1[$conceptNameID] = 1; //echoN($conceptLabelAR); //echoN($conceptNameID); if ($lang == "EN") { $conceptNameClean = convertConceptIDtoGraphLabel($conceptLabelEN); } else { $conceptNameClean = convertConceptIDtoGraphLabel($conceptLabelAR); } /*= array("id"=>$nodeSerialNumber++,"word"=>$conceptLabelAR, "size"=>$conceptWeight,"x"=>rand($startLocationXMin,$startLocationXMax), "y"=>rand($startLocationYMin,$startLocationYMax));*/ $treeRootObj["children"][] = array("name" => $conceptNameClean, "size" => $conceptFrequency, "children" => getTreeNodeChildren($MODEL_QA_ONTOLOGY, $conceptNameID, $minFreq, $lang, 1, $alreadyInLevel1)); } } /* foreach($MODEL_QA_ONTOLOGY['RELATIONS'] as $index => $relArr) { $subject = $relArr['subject']; $verbAR = $relArr['verb']; $verbEN = $relArr['VERB_TRANSLATION_EN']; $verbUthmani = $relArr['verb_uthmani']; $relFreq = $relArr['frequency']; $object = $relArr['object']; //$treeRootObj[$subject]["children"][]["name"]=$object; $objectConceptArr = $MODEL_QA_ONTOLOGY['CONCEPTS'][$object]; $index = search2DArrayForValue($currentArr,$subject); $isObjectIncludedBefore = search2DArrayForValue($currentArr[$index]["children"],$object); if ( $isObjectIncludedBefore===false) { //$currentArr[$index]["children"][] = array("name"=>$object,"size"=>$objectConceptArr['frequency'],"children"=>array()); } }*/ //echoN(count($treeRootObj["children"])); return $treeRootObj; }
$nodeSerialNumber = 0; $clusterSerialNumber = 0; addChildrenToCluster($clusteredArr, $treeRootNodeObj, $clusterSerialNumber, $nodeSerialNumber, 1, $handledBefore); //preprint_r($handledBefore); //preprint_r($clusteredArr);exit; //$graphNodesJSON = json_encode($graphObj['nodes']); //$graphLinksJSON = json_encode($graphObj['links']); //echoN($treeRootNodeJSON); //echoN($graphNodesJSON); //echoN($graphLinksJSON); //exit; $qaRelationsArr = getModelEntryFromMemory("ALL", "MODEL_QA_ONTOLOGY", "RELATIONS", ""); $filteredClusteredArr = array(); $index = 0; foreach ($clusteredArr as $index => $clusterArrItem) { $conceptName = strtolower(convertConceptIDtoGraphLabel($clusterArrItem['word'])); //$conceptNameAR = $MODEL_QA_ONTOLOGY['CONCEPTS_EN_AR_NAME_MAP'][$conceptName]; $conceptNameAR = getModelEntryFromMemory("ALL", "MODEL_QA_ONTOLOGY", "CONCEPTS_EN_AR_NAME_MAP", $conceptName); // if not in index (then not qurana or word in quran) // and does not have subclasses // then ignore if (!wordOrPhraseIsInIndex($lang, $conceptName) && !conceptHasSubclasses($qaRelationsArr, $conceptNameAR)) { //echoN($conceptName); continue; } $index++; $filteredClusteredArr[] = $clusterArrItem; } //preprint_r($clusteredArr); //echoN(count($clusteredArr)); $clusteredArrJSON = json_encode($filteredClusteredArr); ?>