public Collection<IdentifiedObject> getRootOBOObjects( OboCategory... categories ) { ArrayList<IdentifiedObject> rootOboObjects = new ArrayList<IdentifiedObject>(); OBOObject rootObj = ( OBOObject ) oboSession.getObject( MI_ROOT_IDENTIFIER ); Collection<Link> childLinks = rootObj.getChildren(); for ( Link childLink : childLinks ) { if (MI_ROOT_IDENTIFIER.equals(childLink.getParent().getID())) { OBOObject immediateChildOfRoot = (OBOObject) childLink.getChild(); if ( checkIfCategorySubset( immediateChildOfRoot, categories ) ) { rootOboObjects.add( immediateChildOfRoot ); } } } log.debug( "oboObjects " + rootOboObjects.size() ); return rootOboObjects; }
private static void findParents( Collection<OBOObject> parents, OBOObject oboObject, boolean recursive, Set<String> processedIdSet ) { final String id = oboObject.getID(); if( processedIdSet.contains( id ) ) { return; // cuts infinite loop as the ontology can have cycles. } else { processedIdSet.add( id ); } for ( Link parentLink : oboObject.getParents() ) { OBOObject parent = (OBOObject) parentLink.getParent(); parents.add( parent ); if( recursive && !parent.getParents().isEmpty() ) { if ( log.isTraceEnabled() ) { log.trace( "Calling recursively findParent( "+ parent.getID() +" - "+ parent.getName() +" ) ..." ); } findParents( parents, parent, recursive, processedIdSet ); } } }
final String parentId = parentLink.getParent().getID(); cvClass = findCvClassforMI(parentId);
protected <T extends CvObject> Class<T> findCvClassforMI( String id ) { Class<T> cvClass; cvClass = mi2Class.get( id ); if ( cvClass != null ) { //then it is one of rootCv return cvClass; } else { OBOObject oboObj = ( OBOObject ) oboSession.getObject( id ); Collection<Link> parentLinks = oboObj.getParents(); for ( Link parentLink : parentLinks ) { String parentId = parentLink.getParent().getID(); return findCvClassforMI( parentId ); } } return cvClass; }
Term parentTrm = ontologyTerms.get(safeTrim(lnk.getParent().getID())); parentTrm = localTermCache.get(safeTrim(lnk.getParent().getID())); if (parentTrm == null) { parentTrm = tqh.getTermById(safeTrim(lnk.getParent().getID()), null); throw new IllegalStateException(lnk.getParent().getID() + " is not lot local to " + SHORT_NAME + " and is not already loaded in the OLS dabatase. Cannot proceed."); } else { logger.warn(lnk.getParent().getID() + " is not lot local to " + SHORT_NAME + " and is not already loaded in the OLS dabatase. RELATIONSHIP IGNORED."); logger.info("retrieved " + lnk.getParent().getID() + " from OLS database"); localTermCache.put(safeTrim(lnk.getParent().getID()), parentTrm); logger.debug("cached " + lnk.getParent().getID() + " for local reuse if required"); logger.debug("used cached resolved term: " + lnk.getParent().getID());
LinkedObject oboParent = link.getParent();