Question

Je développe un proxy inverse sémantique que les métadonnées des extraits. J'utilise Django, dj-revproxy et rdflib (et pour le stockage que j'utilise MySQL), mais je suis passer au cadre de Redland avec les liaisons Python pour la gestion de la partie sémantique.

Mais j'ai un problème important. Après le stockage d'un RDF (Les données sont dans la base de données Mysql, j'ai vérifié) Je veux faire une requête SPARQL et le résultat est « aucun ». Peut-être la méthode pour les requêtes est mal appliquée.

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)

Le résultat est le suivant:

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>

Merci:)

Était-ce utile?

La solution

Je trouve le problème après la mise à niveau à la version GIT de tous les Redland libs (rapace, rasqal ...). Le problème est quand je me connecte à la base de données MySQL nouvelles = true ruines toutes les données stockées (données de restes là-bas, mais les requêtes sont nulles).

En d'autres termes, pour résoudre le problème que vous devez mettre à jour les libs et la première fois que vous connectez (ou créer) le schéma de MySQL (db) mettre le nouveau drapeau vrai, et toujours le drapeau à faux. Je mets ici le code à certaines fonctions que j'ai fait: Contenu essentiel de l'exemple MySQL et Redland

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top