Получение всех отношений в БД с помощью 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)

Вы можете сделать это более эффективным, отслеживая, какие пары документов вы уже видели, и игнорируя повторы. Как написано, вы увидите каждое ребро дважды.

Другие вопросы по тегам