【问题标题】:Problem with queries, Redland and python bindings查询、Redland 和 python 绑定的问题
【发布时间】:2011-09-15 09:09:09
【问题描述】:

我正在开发一种提取元数据的语义反向代理。我使用 Django、dj-revproxy 和 RDFLib(对于存储,我使用 MySQL),但我正在切换到 redland 的框架,使用 python 绑定来管理语义部分。

但是我有一个重要的问题。存储 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>

谢谢:)

【问题讨论】:

    标签: python mysql semantics redland


    【解决方案1】:

    我在升级到所有 Redland 库(raptor、rasqal...)的 GIT 版本后发现了问题。问题是当我连接到 MySQL 数据库时,new=true 会破坏所有存储的数据(数据仍然存在,但查询为空)。

    换句话说,要解决问题,您必须更新库,然后在第一次连接(或创建)MySQL 模式(db)时将新标志设置为 true,然后始终将标志设置为 false。 我把我做的一些函数的代码放在这里:Gist of MySQL and Redland example

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 1970-01-01
      • 2012-03-09
      • 2020-05-20
      • 2014-12-01
      • 2016-11-04
      • 1970-01-01
      • 2013-05-02
      • 2021-11-22
      相关资源
      最近更新 更多