Я хочу провести некоторый анализ сетевых данных, имеющих несколько режимов (например, несколько типов сетевых узлов) и мультиплексных отношений (например, несколько типов границ сети).
Анализ, вероятно, касается SNA или применения любого алгоритма из теории графов, например сила связи, центральность, промежуточность, расстояние между узлами, блок, кластер и т. д.
Исходные данные довольно неструктурированы, поэтому сначала я должен подумать о том, как я представляю, храню и извлекаю данные.
Ниже приведены некоторые идеи. Буду признателен за любые отзывы или дальнейшие предложения. :)
Я знаю, что уже есть несколько отличных баз данных NoSQL, например Neo4J, InfoGrid, для такого рода приложений. Но по некоторым причинам расширяемости (например, лицензия, веб-стандарт ...) я бы предпочел использовать RDF для хранения и представления моих данных. Инструменты, которые следует использовать, - это СЕЗАМ или ДЖЕНА.
идея представления данных сети / графа с помощью RDF тривиальна. Например:
Данные сети / графика
*Alice* ----lend 100USD----> *Bob* ----- likes ----> *Skiing*
представлен RDF
*Alice* --src--> *lend_relation* <---target--- *Bob* ---likes---> *Skiing*
|
has_value
\|/
*100USD*
[Alice src lend_relation]
[Bob target lend_relation]
[lend_relation has_value 100USD]
[Bob likes Skiing]
Однако проблема в том, что RDF, как и SPARQL, лишены перспектив графовой модели. Неэффективно перемещаться между узлами или находить (кратчайшее) расстояние с помощью запроса RDF. Это должно быть выполнено с помощью некоторых дополнительных инструментов анализа, например JUNG или JGarphT, и я должен сначала построить подграф, запросив хранилище RDF, а затем преобразовать его в модель данных, используемую JUNG или JGraphT. Если мне нужна дополнительная визуализация (ни от JUNG, ни от JGraphT), я должен построить другую модель данных для инструментария визуализации. Я не знаю, является ли это четкой или эффективной интеграцией.
еще раз спасибо за любое предложение!