function addRelation(&$relationsArr, $type, $subject, $verb, $object, $joinedPattern, $verbEngTranslation = "", $fullVerbQuranWord = "") { global $WORDS_TRANSLATIONS_AR_EN; global $is_a_relation_name_en; if (empty($subject) || empty($object)) { return false; } // make shallow last resort, since it spoils words and lead to duplicate oncepts if (!isSimpleQuranWord($subject)) { //CONVERT UTHMANI TO SIMPLE $subjectSimple = getItemFromUthmaniToSimpleMappingTable($subject); // IF NOT CORRESPONDING SIMPLE WORD, CONVERT USING SHALLOW CONVERSION ALGORITHM if (empty($subjectSimple)) { $subjectSimple = shallowUthmaniToSimpleConversion($subject); } } else { $subjectSimple = $subject; } // SAME AS ABOVE BUT FOR OBJECT if (!isSimpleQuranWord($object)) { $objectSimple = getItemFromUthmaniToSimpleMappingTable($object); //object simple to avoid null in case when not in the mapping table if (empty($objectSimple)) { $objectSimple = shallowUthmaniToSimpleConversion($object); } } else { $objectSimple = $object; } $verbUthmani = $verb; $verbSimple = ""; ///////// VERB TRANSLATION if (empty($verbEngTranslation)) { $verbEngTranslation = ""; // SINGLE WORD VERB if (!isMultiWordStr($verb)) { $verb = trim($verb); $translatableVerb = $fullVerbQuranWord; // VERB IS SIMPLE if (isSimpleQuranWord($verb)) { $translatableVerb = getItemFromUthmaniToSimpleMappingTable($fullVerbQuranWord); } else { $verbSimple = getItemFromUthmaniToSimpleMappingTable($verb); } $verbEngTranslation = cleanEnglishTranslation($WORDS_TRANSLATIONS_AR_EN[$translatableVerb]); //IF NOT IN TRANSLATION TABLE - EX: ONE OF THE SEGMENTS TRIMMED if (empty($verbEngTranslation)) { // CHECK IF IS ALSO NOTO IN TRANSLATION ENTRY if (!isFoundInTranslationTable($translatableVerb, "VERB")) { // TRANSLATE USING MICROSOFT API $verbEngTranslation = translateText($translatableVerb, "ar", "en"); // ADD TO QA CUSTOM TRANSLATION TABLE addTranslationEntry($verbEngTranslation, "VERB", $translatableVerb, "AR"); //no need //persistTranslationTable(); } else { $customTranslationEntryArr = getTranlationEntryByEntryKeyword($translatableVerb); $verbEngTranslation = $customTranslationEntryArr['EN_TEXT']; } } } else { //SPLIT PHRASE $verbPhraseArr = preg_split("/ /", $verb); foreach ($verbPhraseArr as $verbPart) { $translatableVerb = $verbPart; // IF SIMPLE if (isSimpleQuranWord($verbPart)) { //GET UTHMANI WORD TO BE ABEL TO TRANSLATE $translatableVerb = getItemFromUthmaniToSimpleMappingTable($verbPart); } else { // GET SIMPLE WORD TO BE ADDED IN RELATION META $simplePart = getItemFromUthmaniToSimpleMappingTable($verbPart); //if not in translation table, use shalow conversion if (empty($simplePart)) { $simplePart = shallowUthmaniToSimpleConversion($verbPart); } $verbSimple = $verbSimple . " " . $simplePart; // THIS VARIABLE NEEDED FOR TRANSLATION $translatableVerb = $simplePart; } // TRANSLATE $verbPartTranslated = cleanEnglishTranslation($WORDS_TRANSLATIONS_AR_EN[$translatableVerb]); //IF NOT IN TRANSLATION TABLE - EX: ONE OF THE SEGMENTS TRIMMED if (empty($verbPartTranslated)) { // CHECK IF IS ALSO NOTO IN TRANSLATION ENTRY if (!isFoundInTranslationTable($verbPart, "VERB")) { // TRANSLATE USING MICROSOFT API $verbPartTranslated = translateText($verbPart, "ar", "en"); // ADD TO QA CUSTOM TRANSLATION TABLE addTranslationEntry($verbPartTranslated, "VERB", $verbPart, "AR"); //persistTranslationTable(); } else { $customTranslationEntryArr = getTranlationEntryByEntryKeyword($verbPart); $verbPartTranslated = $customTranslationEntryArr['EN_TEXT']; } } // TRANSLATION ACCUMILATION $verbEngTranslation = $verbEngTranslation . " " . $verbPartTranslated; } } } if ($verbEngTranslation != "is kind of" && $verbEngTranslation != "part of" && $verbEngTranslation != $is_a_relation_name_en) { //$verbEngTranslation = removeBasicEnglishStopwordsNoNegation($verbEngTranslation); } $verbSimple = trim($verbSimple); if (empty($verbSimple)) { $verbSimple = removeTashkeel(shallowUthmaniToSimpleConversion($verbUthmani)); } return addNewRelation($relationsArr, $type, $subjectSimple, $verbSimple, $objectSimple, $joinedPattern, $verbEngTranslation, $verbUthmani); }
} $enrichedFinalConcepts[$finalConceptName]['EXTRA']['MEANING_EN']['WORDNET'] = $glossary; if (isFoundInTranslationTable($glossary, "DESC")) { $customTranslationEntry = getTranlationEntryByEntryKeyword($glossary); $glossaryAR = $customTranslationEntry['AR_TEXT']; } else { $tentitaveTranslation = translateText($glossary); /* echoN($glossary); echoN("==".("(plural) any group of human beings (men or women or children) collectively"==$glossary)); //showHiddenChars(removeUnacceptedChars(cleanAndTrim("(plural) any group of human beings (men or women or children) collectively")),"EN"); //showHiddenChars("someone who leads you to believe something that is not true","EN"); isFoundInTranslationTable($glossary,"DESC"); preprint_r($CUSTOM_TRANSLATION_TABLE_EN_AR["(plural) any group of human beings (men or women or children) collectively"]); preprint_r($CUSTOM_TRANSLATION_TABLE_EN_AR); exit;*/ addTranslationEntry($glossary, "DESC", $tentitaveTranslation); $glossaryAR = $tentitaveTranslation; } $enrichedFinalConcepts[$finalConceptName]['EXTRA']['MEANING_AR']['WORDNET'] = $glossaryAR; foreach ($wordsArr as $synonym => $dummy) { if ($synonym != $parentConceptName) { $enrichedFinalConcepts[$finalConceptName]['EXTRA']['AKA']['EN']['WORDNET'] = cleanWordnetCollocation($synonym); } } } else { //echoN("##$finalConceptName|T-BOX"); //echoN("$concept,$is_a_relation_name_ar,$finalConceptName"); /* * WILL NOT DO IT HERE SINCE SOME RELATIONS ARE EXCLUDED LATER, SO OPERATIONS DONE HERE * CAN'T BE REVERTED BACK, WILL BE MOVED AFTER EXCLUSION INSTEAD */