function render () {
      subject = kb.canon(subject)
      if (!p || !p.parentNode || !p.parentNode.parentNode) return false

      var newTable
      UI.log.info('@@ REPAINTING ')
      if (!already) { // first expand
        newTable = propertyTable(subject, undefined, pane, options)
      } else {
        UI.log.info(' ... p is  ' + p)
        for (newTable = p.firstChild; newTable.nextSibling; newTable = newTable.nextSibling) {
          UI.log.info(' ... checking node ' + newTable)
          if (newTable.nodeName === 'table') break
        }
        newTable = propertyTable(subject, newTable, pane, options)
      }
      already = true
      if (UI.utils.ancestor(p, 'TABLE') && UI.utils.ancestor(p, 'TABLE').style.backgroundColor === 'white') {
        newTable.style.backgroundColor = '#eee'
      } else {
        newTable.style.backgroundColor = 'white'
      }
      try {
        if (YAHOO.util.Event.off) YAHOO.util.Event.off(p, 'mousedown', 'dragMouseDown')
      } catch (e) {
        console.log('YAHOO ' + e)
      }
      UI.utils.emptyNode(p).appendChild(newTable)
      thisOutline.focusTd = p // I don't know why I couldn't use 'this'...because not defined in callbacks
      UI.log.debug('expand: Node for ' + subject + ' expanded')
          // fetch seeAlso when render()
          // var seeAlsoStats = sf.store.statementsMatching(subject, UI.ns.rdfs('seeAlso'))
          // seeAlsoStats.map(function (x) {sf.lookUpThing(x.object, subject,false);})
      var seeAlsoWhat = kb.each(subject, UI.ns.rdfs('seeAlso'))
      for (var i = 0; i < seeAlsoWhat.length; i++) {
        if (i === 25) {
          UI.log.warn('expand: Warning: many (' +
                seeAlsoWhat.length + ') seeAlso links for ' + subject)
              // break; Not sure what limits the AJAX system has here
        }
        sf.lookUpThing(seeAlsoWhat[i], subject)
      }
    }
function render () {
      subject = kb.canon(subject)
      if (!p || !p.parentNode || !p.parentNode.parentNode) return false

      var newTable
      UI.log.info('@@ REPAINTING ')
      if (!already) { 
        newTable = propertyTable(subject, undefined, pane, options)
      } else {
        UI.log.info(' ... p is  ' + p)
        for (newTable = p.firstChild; newTable.nextSibling; newTable = newTable.nextSibling) {
          UI.log.info(' ... checking node ' + newTable)
          if (newTable.nodeName === 'table') break
        }
        newTable = propertyTable(subject, newTable, pane, options)
      }
      already = true
      if (UI.utils.ancestor(p, 'TABLE') && UI.utils.ancestor(p, 'TABLE').style.backgroundColor === 'white') {
        newTable.style.backgroundColor = '#eee'
      } else {
        newTable.style.backgroundColor = 'white'
      }
      try {
        if (YAHOO.util.Event.off) YAHOO.util.Event.off(p, 'mousedown', 'dragMouseDown')
      } catch (e) {
        console.log('YAHOO ' + e)
      }
      UI.utils.emptyNode(p).appendChild(newTable)
      thisOutline.focusTd = p 
      UI.log.debug('expand: Node for ' + subject + ' expanded')
          
          
          
      var seeAlsoWhat = kb.each(subject, UI.ns.rdfs('seeAlso'))
      for (var i = 0; i < seeAlsoWhat.length; i++) {
        if (i === 25) {
          UI.log.warn('expand: Warning: many (' +
                seeAlsoWhat.length + ') seeAlso links for ' + subject)
              
        }
        sf.lookUpThing(seeAlsoWhat[i], subject)
      }
    }
function render ( ) { subject = kb . canon ( subject ) if ( ! p || ! p . parentNode || ! p . parentNode . parentNode ) return false var newTable UI . log . info ( '@@ REPAINTING ' ) if ( ! already ) { // first expand newTable = propertyTable ( subject , undefined , pane , options ) } else { UI . log . info ( ' ... p is  ' + p ) for ( newTable = p . firstChild ; newTable . nextSibling ; newTable = newTable . nextSibling ) { UI . log . info ( ' ... checking node ' + newTable ) if ( newTable . nodeName === 'table' ) break } newTable = propertyTable ( subject , newTable , pane , options ) } already = true if ( UI . utils . ancestor ( p , 'TABLE' ) && UI . utils . ancestor ( p , 'TABLE' ) . style . backgroundColor === 'white' ) { newTable . style . backgroundColor = '#eee' } else { newTable . style . backgroundColor = 'white' } try { if ( YAHOO . util . Event . off ) YAHOO . util . Event . off ( p , 'mousedown' , 'dragMouseDown' ) } catch ( e ) { console . log ( 'YAHOO ' + e ) } UI . utils . emptyNode ( p ) . appendChild ( newTable ) thisOutline . focusTd = p // I don't know why I couldn't use 'this'...because not defined in callbacks UI . log . debug ( 'expand: Node for ' + subject + ' expanded' ) // fetch seeAlso when render() // var seeAlsoStats = sf.store.statementsMatching(subject, UI.ns.rdfs('seeAlso')) // seeAlsoStats.map(function (x) {sf.lookUpThing(x.object, subject,false);}) var seeAlsoWhat = kb . each ( subject , UI . ns . rdfs ( 'seeAlso' ) ) for ( var i = 0 ; i < seeAlsoWhat . length ; i ++ ) { if ( i === 25 ) { UI . log . warn ( 'expand: Warning: many (' + seeAlsoWhat . length + ') seeAlso links for ' + subject ) // break; Not sure what limits the AJAX system has here } sf . lookUpThing ( seeAlsoWhat [ i ] , subject ) } }
var requTerm = subject.uri ? kb.sym(UI.rdf.uri.docpart(subject.uri)) : subject
var requTerm = subject . uri ? kb . sym ( UI . rdf . uri . docpart ( subject . uri )) : subject