def entity():
    
    global graph
    
    uri = request.args.get('uri')

    form = MainForm()
    
    

    facetQuery = "SELECT ?p ?o WHERE { <" + uri + "> ?p ?o . }"
    facetResults = graph.query(facetQuery)

    if not facetResults: 
        facetQuery = "SELECT ?p ?o WHERE { <" + url_fix(uri) + "> ?p ?o . }"
        facetResults = graph.query(facetQuery)
   
   
    facetsentitylist = []
    for fr in facetResults : 
        
        facetproperty = fr[0]
        prefixed_facetproperty = u.get_prefixed(facetproperty)
        facetobject = fr[1]
        prefixed_facetobject = ""
        if facetobject.startswith("http://"):
            prefixed_facetobject = u.get_prefixed(facetobject)


        
        subjects = graph.subjects(facetproperty, facetobject)
        occurrences = sum(1 for _ in subjects)
#         current_app.logger.debug(occurrences)
        
        
        facetsentitylist.append({'facetproperty': facetproperty, 'prefixed_facetproperty': prefixed_facetproperty, 'facetobject': facetobject, 'prefixed_facetobject': prefixed_facetobject, 'occurrences': occurrences})       



    sortedlist = sorted(facetsentitylist, key=lambda k: k['occurrences']) 
    return render_template('base2.html', form=form, uri=uri, facetsentity=sortedlist)
def work():    
    
    global facetsdict
    global resultsdict
    global graph
    
    form = MainForm()
    dataset = form.endpoints.data
    
    my_var = request.form.get("btn", "None")
    my_var2 = request.form.get("btn2", "None")
    if ((my_var == 'None') and (my_var2 == 'None')): 
        querydoc = ("app/queries/" + dataset + ".q")
        with open ((querydoc), "r") as queryfile:
            q = queryfile.read()
            form.query.data = q
        return render_template('base.html', form=form)
    
    
    if (my_var != 'None'):
        rankingfile = "app/rankings/ranking_" + dataset + ".txt"
        resultsfile = "app/results/results_" + dataset + ".rdf"
    
        if (True): 
#             if (form.datafromendpoint.data): 
           
            
            try:
                sparql = SPARQLWrapper(app.config['ENDPOINTS'].get(dataset))
                sparql.setReturnFormat(JSON)
                sparql.setQuery(form.query.data)
                sparql.setReturnFormat(XML)
                resultfile = open(resultsfile, "wb")
                r = sparql.query().convert()
                r.serialize(destination=resultfile, format="xml")
                resultfile.flush() 
                resultfile.close()
                

            except (urllib2.HTTPError, QueryBadFormed, TypeError, AttributeError), err:
                current_app.logger.debug(str(err))
                error = str(err)
                return render_template('base.html', results=[], url="", form=form, error=error, facets=[])
             

            try:  
                
                global graph
                graph = rdflib.Graph()
                graph.parse(resultsfile)
                resultsdict = u.compute_rankings(graph, rankingfile)
                url = "" 
                current_app.logger.debug(url)

                try: 
                    with open("app/static/similarities_" + dataset + ".json"):
                        url = url_for('.static', filename='similarities_' + dataset + '.json')
                except IOError:
                    url = "" 
                    
                current_app.logger.debug(url)
       
                with open ("app/queries/facets.q", "r") as myresultfile:
                    localQuery = myresultfile.read()
                entityresults = graph.query(localQuery)
                
                
                facetsdict = []
                for row in entityresults:
                    facet = row[0]
                    count = int(row[1])
                    label = u.get_prefixed(facet)
                    facetsdict.append({'facet': facet, 'label': label, 'count': count})            


            except (TypeError, xml.sax.SAXParseException), err:
                current_app.logger.debug(str(err))
                error = str(err)
                return render_template('base.html', results=resultsdict, url=url, form=form, error=error, facets=facetsdict)