annak
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

make_sense.py
text/x-python

Download raw (2.7 KB)

import RDF
from urlparse import urlparse

RDF_STORAGE_DIR = "."
RDF_STORAGE_NAME = "store"

options = "hash-type='bdb', contexts='yes', dir='%s'" % RDF_STORAGE_DIR
storage = RDF.HashStorage(RDF_STORAGE_NAME, options=options)


RDF_MODEL = RDF.Model(storage)


def list_associated_tags(tag):
    """
    List the tags associated the given one
    """
    query = """
    PREFIX dc: <http://purl.org/dc/elements/1.1/>
    SELECT DISTINCT ?s ?tags
    WHERE {
        ?s dc:subject "%s" .
        ?s dc:subject ?tags .
    }
    """ % tag

    results = RDF.Query(query, query_language='sparql').execute(RDF_MODEL)

    ret = []
    for r in results:
        ret.append('%s %s' % (r['s'], r['tags']))

    print("\n".join(ret))


def list_people_names():
    query = """
    SELECT DISTINCT ?name
    WHERE {
        ?s a <http://xmlns.com/foaf/0.1/Person> ;
           <http://xmlns.com/foaf/0.1/surname> ?name.
    }
    """

    results = RDF.Query(query, query_language='sparql').execute(RDF_MODEL)

    ret = []
    for r in results:
        ret.append('%s' % (r['name']))

    print("\n".join(ret))


def construct_graph_of_names():
    query = """
    PREFIX foaf: <http://xmlns.com/foaf/0.1/>
    CONSTRUCT {
        ?s foaf:name ?name .
    }
    WHERE {
        ?s a foaf:Person ;
           foaf:surname ?name.
    }
    """

    new_graph = RDF.Query(query, query_language='sparql').execute(RDF_MODEL)

    print(new_graph.to_string())


def is_there_more_books_than_blogposts():
    """
    Is there more books than blog posts?
    """
    query = """
    PREFIX z: <http://www.zotero.org/namespaces/export#> 
    ASK
    {
        ?books z:itemType "book" .
        ?blogposts z:itemType "blogPost" .
        FILTER(?books > ?blogposts) .
    }
    """

    answer = RDF.Query(query, query_language='sparql').execute(RDF_MODEL)
    print(answer)


def tell_me_whatever_about(title):
    query = """
    PREFIX foaf: <http://xmlns.com/foaf/0.1/>
    PREFIX dc: <http://purl.org/dc/elements/1.1/>
    DESCRIBE ?something
    WHERE {
        ?something dc:title "%s" .
    }
    """ % title
    answer = RDF.Query(query, query_language='sparql').execute(RDF_MODEL)
    print(answer)


def select_title(title):
    query = """
    PREFIX dc: <http://purl.org/dc/elements/1.1/>
    select ?something 
    WHERE {
        ?something dc:title "%s" .
    }
    """ % title
    results = RDF.Query(query, query_language='sparql').execute(RDF_MODEL)
    ret = []
    for r in results:
        ret.append('%s' % r['something'])

    print("\n".join(ret))


if __name__ == "__main__":
    #list_associated_tags("blog")
    #list_people_names()
    #construct_graph_of_names()
    is_there_more_books_than_blogposts()
    #tell_me_whatever_about("AK")
    #select_title("AK")