Получение всех отношений в БД с помощью rdflib
Допустим, у меня есть какая-то коллекция в mongoDB, и я хочу создать граф со ВСЕМИ возможными отношениями, используя rdflib. Например, если у меня есть 3 записи в моей БД:
FIRST{color:red, name:Ben, age: 29}
SECOND{color :blue ,name:David, age:29}
THIRD{color :blue,name:Mark,age:34}
Тогда FIRST будет относиться ко второму (возраст), THIRD будет относиться ко второму (цвет). Также, как я могу сохранить результаты в виде файла rdf и просмотреть его с помощью некоторого средства просмотра rdf (например, rdf-gravity). Я ценю вашу помощь.
1 ответ
Решение
Графическая база данных, вероятно, лучший инструмент для этого приложения, чем MongoDB. Самый простой способ сделать это с MongoDB - 1+N запросов:
# Get a cursor for the entire collection
docs = db.collection.find()
for doc in docs:
# Get all documents that have a common element
related_docs = db.collection.find({"$or": [
{"color": doc["color"]},
{"name": doc["name"]},
{"age": doc["age"]},
]})
# Record the relationships in whatever structure you're using
for related_doc in related_docs:
store_relationship(doc, related_doc)
Вы можете сделать это более эффективным, отслеживая, какие пары документов вы уже видели, и игнорируя повторы. Как написано, вы увидите каждое ребро дважды.