使用rdflib获取DB中的所有关系

时间:2013-10-12 20:07:11

标签: python mongodb 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将与SECOND(年龄)相关,THIRD将与SECOND(颜色)相关 另外,我如何将结果保存为rdf文件并使用某些rdf查看器查看(例如rdf-gravity) 感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

对于此应用程序,graph database可能是比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)

通过跟踪您已经看过哪些文档对并忽略重复,可以提高效率。如上所述,你会看到每个边缘两次。