Penso che sia importante costruire un modello di dati che catturi la comprensione del dominio aziendale. I nodi e i bordi fluiranno naturalmente da quello. Questo riguarda anche l'ontologia.
Se costruisco una sequenza di parole, e la mando su Twitter, e poi mando le stesse parole su Facebook, ho creato due distinti POST o un POST su due piattaforme? Quale di queste definizioni è importante nel dominio del problema dell'applicazione.
Per una campagna di marketing, ad esempio, potrei capire che si tratterebbe di un singolo messaggio su più piattaforme. In alternativa, se stavo valutando l'uso dei social media da parte di un individuo, posso considerarli distinti. Il contesto è tutto.
Se i post sono distinti per piattaforma, la piattaforma è un attributo di post. Se lo vedono come un singolo post, ma è l'atto di distribuzione che distingue allora la piattaforma è un attributo della relazione. Se la comunità di utenti avesse un interesse costante in Twitter e da sola, non solo come obiettivo di post, anche Twitter dovrebbe essere un nodo. Tutti e tre possono essere significativi indipendentemente e abbiamo bisogno di una nuova etichetta di nodo "postare" con i bordi per l'utente, il post e la piattaforma.
L'implementazione di un modello di dati logici come database fisico può spesso implicare compromessi. Penso che ce ne possa essere uno qui. Neo4j memorizza un elenco di bordi in entrata e in uscita su ciascun nodo. Se ci sono molti post, per esempio, su Twitter, l'aggiornamento dell'elenco dei bordi diventerà un collo di bottiglia.