def intersecting(specs, activated=False): if activated is False: print("THE FUNCTION [intersecting] IS NOT ACTIVATED") return { St.message: "THE FUNCTION [intersecting] IS NOT ACTIVATED.", St.error_code: 1, St.result: None } print Ut.headings("EXECUTING INTERSECTION SPECS...") # 1. GENERATE THE LENS NAME lens_name = generate_lens_name(specs['datasets'], operator="intersection") specs[St.lens] = "{}{}".format(Ns.lens, lens_name['name']) Ut.update_specification(specs) # ********************************** # 3. GOOD TO GO CHECK # ********************************** query = """ SELECT * {{ <{}> ?predicate ?object . }} """.format(specs[St.lens]) check = Lens_Union.run_checks(specs, query, operator="intersection") # NOT GOOD TO GO, IT ALREADY EXISTS if check[St.message].__contains__("ALREADY EXISTS"): return { St.message: check[St.message], St.error_code: 71, St.result: specs[St.lens] } # ********************************** # GOOD TO GO # ********************************** else: try: specs[St.lens_target_triples] = "" # DOCUMENTING START TIME lens_start = time.time() print "\n4. GENERATE THE INSERT QUERY" specs[St.insert_query] = intersection_extended( specs, lens_name=specs[St.lens_name]) print specs[St.insert_query] print "\n5. >>> LOOKING FOR INTERSECTING LINKS" print "\t", Qry.boolean_endpoint_response(specs[St.insert_query]) print "\n6. EXTRACTING THE NUMBER OF TRIPLES" specs[St.triples] = Qry.get_namedgraph_size("{0}{1}".format( Ns.lens, specs[St.lens_name])) lens_end = time.time() diff = lens_end - lens_start print " \n>>> Executed so far in : {:<14}".format( str(datetime.timedelta(seconds=diff))) if int(specs[St.triples]) > 0: for linkset in specs[St.datasets]: specs[St.lens_target_triples] += \ "\n\t void:target <{}> ;".format(linkset) print "\n7. INSERTING THE GENERIC METADATA" metadata = Gn.intersection_meta(specs) # print metadata Qry.boolean_endpoint_response(metadata) # print "\n8. WRITING TO FILE" server_message = "Linksets created as: {}".format( specs[St.lens]) message = "The linkset was created as [{}] with {} triples found!".format( specs[St.lens], specs[St.triples]) print "\n\t", server_message Urq.register_lens(specs, is_created=True) ls_end_2 = time.time() diff = ls_end_2 - lens_end print ">>> Executed in : {:<14}".format( str(datetime.timedelta(seconds=diff))) print "\t*** JOB DONE! ***" return { St.message: message, St.error_code: 0, St.result: specs[St.lens] } else: print "The linkset was not generated as no match could be found" print "\t*** JOB DONE! ***" return { St.message: "The linkset was not generated as no match could be found", St.error_code: 4, St.result: None } except Exception as err: traceback.print_exc() return { St.message: Ec.ERROR_CODE_1, St.error_code: 5, St.result: None } # specs = { # 'lens_operation': u'intersection', # 'datasets': [u'http://risis.eu/linkset/grid_20170712_eter_2014_approxStrSim_Organization_altLabel_P1079405301', # u'http://risis.eu/linkset/grid_20170712_eter_2014_approxStrSim_Organization_altLabel_P1661430032', # u'http://risis.eu/linkset/grid_20170712_eter_2014_approxStrSim_Organization_label_N1860664105'], # 'researchQ_URI': u'http://risis.eu/activity/idea_67a6ce'} # specs_2 = {'lens_operation': u'intersection', # 'datasets': [u'http://risis.eu/lens/union_Grid_20170712_Eter_2014_N291690309', # u'http://risis.eu/lens/union_Orgreg_20170718_Eter_2014_P1061032980', # u'http://risis.eu/lens/union_Orgreg_20170718_Grid_20170712_N1966224323'], # 'researchQ_URI': u'http://risis.eu/activity/idea_67a6ce'} # # specs_3 = {'lens_operation': u'intersection', # 'datasets': [ # u'http://risis.eu/linkset/orgreg_20170718_grid_20170712_approxStrSim_University_Entity_current_name_English_N682223883', # u'http://risis.eu/linkset/orgreg_20170718_grid_20170712_approxStrSim_University_Entity_current_name_English_P2117262605', # u'http://risis.eu/lens/union_Grid_20170712_Eter_2014_N291690309', # u'http://risis.eu/lens/union_Orgreg_20170718_Eter_2014_P1061032980', # u'http://risis.eu/lens/union_Orgreg_20170718_Grid_20170712_N1966224323'], # 'researchQ_URI': u'http://risis.eu/activity/idea_67a6ce'} # # # # print intersection_extended(specs_3, "lens_name", display=False) # import Alignments.Manage.AdminGraphs as adm # adm.drop_a_lens("http://risis.eu/lens/intersection_Grid_20170712_Eter_2014_P1326988364", display=True, activated=True) # print intersecting(specs, activated=True)
def refine_lens(specs, activated=False, check_file=False): try: message = Ec.ERROR_CODE_0.replace('\n', "<br/>") if activated is False: print Ut.headings("THE FUNCTION [refine_lens] IS NOT ACTIVATED") return {St.message: message, St.error_code: 4, St.result: None} # 1. UPDATING THE SPECS BY CHANGING LINKSET TO TENS specs[St.refined] = specs['linkset'] specs.pop('linkset') Ut.update_specification(specs) # CHECKING WHETHER THE LENS IS REFINENABLE # Refine.is_refinable(specs[St.refined]) # PRINTING THE SPECIFICATIONS # lensUt.print_specs(specs) # ASSIGN THE SAME AS COUNT specs[St.sameAsCount] = Qry.get_same_as_count(specs[St.mechanism]) message = Ec.ERROR_CODE_4.replace('\n', "<br/>") if specs[St.sameAsCount]: source = specs[St.source] target = specs[St.target] # 2. SET THE LENS NAME # ******************************* print "\n2. SET THE LENS NAME" # ******************************* lensUt.lens_refine_name(specs, 'refine') #******************************* # GOOD TO GO CHECK # ******************************* query = """ SELECT * {{ <{}> ?predicate ?object . }} """.format(specs[St.lens]) check = Lens_Union.run_checks(specs, query, operator="refine") # NOT GOOD TO GO, IT ALREADY EXISTS if check[St.message].__contains__("ALREADY EXISTS"): return { St.message: check[St.message], St.error_code: 71, St.result: specs[St.lens] } # ******************************* # GOOD TO GO # ******************************* else: lens_start = time.time() # UPDATE THE SPECIFICATION Ut.update_specification(specs[St.source]) Ut.update_specification(specs[St.target]) # PRINTING THE SPECIFICATIONS lensUt.print_specs(specs) ######################################################################## print """\n4. EXECUTING THE GEO-MATCH """ ######################################################################## geo_match(specs) ######################################################################## print """\n5. EXTRACT THE NUMBER OF TRIPLES """ ######################################################################## specs[St.triples] = Qry.get_namedgraph_size("{0}{1}".format( Ns.lens, specs[St.lens_name])) ######################################################################## print """\n6. ASSIGN THE SPARQL INSERT QUERY """ ######################################################################## specs[St.insert_query] = "{} ;\n{};\n{}".format( geo_load_query(specs, True), geo_load_query(specs, False), geo_match_query(specs)) lens_end = time.time() diff = lens_end - lens_start print "\n\t>>> Executed so far in : {:<14}".format( str(datetime.timedelta(seconds=diff))) if int(specs[St.triples]) > 0: ######################################################################## print """\n4. INSERTING THE GENERIC METADATA """ ######################################################################## metadata = Gn.lens_refine_geo_metadata(specs) Qry.boolean_endpoint_response(metadata) ######################################################################## print """\n5. WRITING TO FILE """ ######################################################################## src = [source[St.graph_name], "", source[St.entity_ns]] trg = [target[St.graph_name], "", target[St.entity_ns]] # linkset_path = "D:\datasets\Linksets\ExactName" linkset_path = DIRECTORY writelinkset(src, trg, specs[St.lens_name], linkset_path, metadata, check_file=check_file) server_message = "Linksets created as: {}".format( specs[St.lens]) message = "The linkset was created as [{}] with {} triples found!".format( specs[St.lens], specs[St.triples]) print "\n\t", server_message Urq.register_lens(specs, is_created=True) ls_end_2 = time.time() diff = ls_end_2 - lens_end print ">>> Executed in : {:<14}".format( str(datetime.timedelta(seconds=diff))) print "\t*** JOB DONE! ***" return { St.message: message, St.error_code: 0, St.result: specs[St.lens] } else: print "\tThe linkset was not generated as no match could be found" print "\t*** JOB DONE! ***" return { St.message: message, St.error_code: 4, St.result: None } except Exception as err: traceback.print_exc() return {St.message: Ec.ERROR_CODE_1, St.error_code: 5, St.result: None} # print geo_load_query(specs, is_source=True) # print geo_load_query(specs, is_source=False) # geo_match_query(specs) # traceback.print_exception() # import Alignments.Manage.AdminGraphs as adm # adm.drop_a_lens("http://risis.eu/lens/refine_union_Grid_20170712_Eter_2014_N291690309", display=True, activated=True) # refine_lens(specs_example, activated=True, check_file=False) # # adm.drop_a_lens("http://risis.eu/lens/refine_union_Orgreg_20170718_Eter_2014_P1061032980", display=True, activated=True) # refine_lens(specs_example_2, activated=True, check_file=False) # # adm.drop_a_lens("http://risis.eu/lens/refine_union_Orgreg_20170718_Grid_20170712_N1966224323", display=True, activated=True) # refine_lens(specs_example_3, activated=True, check_file=False)