查询,Redland和python绑定问题

| 我正在开发提取元数据的语义反向代理。我使用Django,dj-revproxy和RDFLib(对于存储,我使用MySQL),但是我正在切换到带有python绑定的redland框架来管理语义部分。 但是我有一个重要的问题。存储完RDF之后(我检查了数据在Mysql数据库中),我想执行sparql查询,结果为“无”。也许查询方法实施不正确。
def sparql_query(query, user, password, db, output, dbSystem=\'mysql\'):

    if dbSystem == \'mysql\':
        st= connect_librdf_mysql(user, password, db)
    else:
        st= connect_librdf_sqlite(db)

    options = \'database=\\\'\' + db + \'\\\'\'
    model=RDF.Model(st, options_string=options)

    q1 = RDF.Query(query ,query_language=\'sparql\')

    #q1Result = q1.execute(model) 
    q1Result = model.execute(q1) 

    print(\"[ SPARQL QUERY DONE ]\")

    if q1Result.is_graph():
        return q1Result.as_stream()
    else:
        return str(q1Result)
结果是这样的:
slok@sLoKAsus:utils$ python ./test_redland.py
[ CONNETED TO redland2 DATABASE ]
[ RDF STORED ]
[ CONNETED TO redland2 DATABASE ]
[ SPARQL QUERY DONE ]
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<sparql xmlns=\"http://www.w3.org/2005/sparql-results#\">
  <head>
    <variable name=\"aname\"/>
    <variable name=\"bname\"/>
  </head>
  <results>
  </results>
</sparql>
谢谢 :)     
已邀请:
        升级到所有Redland库的GIT版本(猛禽,rasqal ...)后,我发现了问题。问题是当我连接到MySQL数据库时,new = true破坏了所有存储的数据(数据保留在那里,但查询为null)。 换句话说,要解决该问题,您必须更新库,然后第一次连接(或创建)MySQL模式(db)时,将new标志设置为true,然后始终将标志设置为false。 我在这里将代码放到了我做的一些函数中:MySQL的要点和Redland示例     

要回复问题请先登录注册