diff -r 000000000000 -r 4095911a7830 src/core/rdf_models.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/core/rdf_models.py Sat Jun 15 01:33:28 2013 +0200 @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +''' +Created on Jun 11, 2013 + +@author: ymh +''' + +from rdflib import plugin, ConjunctiveGraph, URIRef, Literal +from rdflib.store import Store +from django.db import connections + +class TermGraph(ConjunctiveGraph): + + def __init__(self, do_open=False, create=False): + identifier = "jocondelab" + store = plugin.get("SQLAlchemy", Store)(identifier=identifier) + ConjunctiveGraph.__init__(self, store=store, identifier=identifier) + if do_open: + self.open(create) + + def open(self, create=False): + db_settings = connections['default'].settings_dict + sa_db_settings = { + 'engine': 'postgresql+psycopg2' if db_settings['ENGINE'] == "django.db.backends.postgresql_psycopg2" else db_settings['ENGINE'], + 'user': db_settings['USER'], + 'password': db_settings['PASSWORD'], + 'port': db_settings['PORT'] if db_settings['PORT'] else "5432", + 'host': db_settings['HOST'] if db_settings['HOST'] else "localhost", + 'name': db_settings['NAME'] + } + connect_config = "%(engine)s://%(user)s:%(password)s@%(host)s:%(port)s/%(name)s"%sa_db_settings + + return ConjunctiveGraph.open(self, connect_config, create=create) + + def get_uri_for_term(self, term, context): + c = URIRef(context) + tl = Literal(term) + + for s,p,_ in self.triples((None, None, tl), context=c): + if p in [URIRef("http://www.w3.org/2004/02/skos/core#prefLabel"), URIRef("http://www.w3.org/2004/02/skos/core#alternateLabel")]: + return unicode(s) + return None + +graph = TermGraph(do_open=True, create=False) \ No newline at end of file