def scrapingForzato():
    urlD = request.args.get('url')

    # eliminazione delle annotazioni automatiche del documento corrente (automatiche = quelle con la nostra provenance)
    query_delete = query_delete_all_doc_nostraprovenance(urlD)
    do_query_post(sparql_endpoint_remoto, query_delete)

    listaAnnotazioni = scraping(urlD)

    result = {}
    result["numero"] = len(listaAnnotazioni)
    return json.dumps(result)
def scraping(urlD):

    # aggiunte sull'endpoint triple relative alla nostra provenance
    query_provenance = query_annotazione(nome_grafo_gruppo, PROVENANCE)
    do_query_post(sparql_endpoint_remoto, query_provenance)

    listaAnnotazioni = []

    try:
        anno = scraping_anno(urlD)
        annAnno = costruisciAnnotazione(urlD, anno["xpath"], anno["start"],
                                        anno["end"], "hasPublicationYear",
                                        anno["anno"], 0)
        query_Anno = query_annotazione(nome_grafo_gruppo, annAnno)
        do_query_post(sparql_endpoint_remoto, query_Anno)
        listaAnnotazioni.append(annAnno)
        print "anno ok"
    except Exception:
        print "exc anno"
        traceback.print_exc()
        pass

    try:
        annUrl = costruisciAnnotazione(urlD, "document", "0", "0", "hasURL",
                                       urlD, 0)
        query_url = query_annotazione(nome_grafo_gruppo, annUrl)
        do_query_post(sparql_endpoint_remoto, query_url)
        listaAnnotazioni.append(annUrl)
        print "url ok"
    except Exception:
        print "exc url"
        traceback.print_exc()
        pass

    try:
        listaAutori = scarping_autore(urlD)
        for autore in listaAutori:
            annAutore = costruisciAnnotazione(urlD, autore["path"],
                                              autore["start"], autore["end"],
                                              "hasAuthor",
                                              autore["autori"].decode("utf-8"),
                                              0)
            query_autore = query_annotazione(nome_grafo_gruppo, annAutore)
            do_query_post(sparql_endpoint_remoto, query_autore)
            listaAnnotazioni.append(annAutore)
        print "autori ok"
    except Exception:
        print "exc autori"
        traceback.print_exc()
        pass

    try:
        titolo = scraping_automatico_titolo(urlD)
        annTitolo = costruisciAnnotazione(urlD, titolo["path"],
                                          titolo["start"], titolo["end"],
                                          "hasTitle",
                                          titolo["titolo"].decode("utf-8"), 0)
        query_titolo = query_annotazione(nome_grafo_gruppo, annTitolo)
        do_query_post(sparql_endpoint_remoto, query_titolo)
        listaAnnotazioni.append(annTitolo)
        print "titolo ok"
    except Exception:
        print "exc titolo"
        traceback.print_exc()
        pass

    try:
        doi = scraping_doi(urlD)  # dict
        annDoi = costruisciAnnotazione(urlD, doi["xpath"], doi["start"],
                                       doi["end"], "hasDOI", doi["doi"], 0)
        query_doi = query_annotazione(nome_grafo_gruppo, annDoi)
        do_query_post(sparql_endpoint_remoto, query_doi)
        listaAnnotazioni.append(annDoi)
        print "doi ok"
    except Exception:
        print "exc doi"
        traceback.print_exc()
        pass

    try:
        listaCitazioni = scraping_citazioni(urlD)
        print "tot citazioni"
        print len(listaCitazioni)
        i = 1
        for citazione in listaCitazioni:
            annCitazione = costruisciAnnotazione(
                urlD, citazione["path"], citazione["start"], citazione["end"],
                "cites", citazione["citazione"].decode("utf-8"), i)
            query_citazione = query_annotazione(nome_grafo_gruppo,
                                                annCitazione)
            do_query_post(sparql_endpoint_remoto, query_citazione)
            listaAnnotazioni.append(annCitazione)
            i += 1
        print "citazioni ok"
    except Exception:
        print "exc citazioni"
        traceback.print_exc()
        pass

    print "tot annotazioni"
    print len(listaAnnotazioni)
    print "scraping completo"

    return listaAnnotazioni
def salvaAnnotazioni():
    query = request.args.get('query')
    lista_query = json.loads(query)
    for q in lista_query:
        do_query_post(sparql_endpoint_remoto, q)
    return "ok"