def process_data_concept(record):
  import aixm
  import amxm
  
  aixm = aixm.Aixm()
  amxm = amxm.Amxm()
  
  if isinstance(record['Semantic Correspondence'], str):
    urn = record['Semantic Correspondence']
    urn = urn.strip()
    if aixm.is_in_aixm_mapping(urn):
      global overlap_aixm_counter 
      overlap_aixm_counter += 1
    
    if amxm.is_in_amxm_mapping(urn):
      global overlap_amxm_counter 
      overlap_amxm_counter += 1
Пример #2
0
def process_data_concept(record):
    import aixm
    import fixm

    aixm = aixm.Aixm()
    fixm = fixm.Fixm()

    if isinstance(record['AIRM Concept Identifier'], str):
        urn = record['AIRM Concept Identifier']
        urn = urn.strip()
        if aixm.is_in_aixm_mapping(urn):
            global overlap_aixm_counter
            overlap_aixm_counter += 1

        if fixm.is_in_fixm_mapping(urn):
            global overlap_fixm_counter
            overlap_fixm_counter += 1
Пример #3
0
def create_html():
  mapping_pages_directory = "docs/developers/aixm-5.1.1-to-airm-1.0.0"
  # creates docs/developers/amxm-2.0.0-to-airm-1.0.0 directory
  path = mapping_pages_directory
  try:
      os.mkdir(path)
  except OSError:
      print ("Creation of the directory %s failed" % path)
  else:
      print ("Successfully created the directory %s " % path)
  
  import aixm
  aixm = aixm.Aixm()
  aixm_mapping_merged_dict = aixm.aixm_mapping_merged_dataframe.to_dict('records')

  #Create index page
  #creates soup for developers/amxm-2.2.0-to-airm-1.0.0.html using amxm_mapping_template.html
  html = open("data/html/templates/AIXM-list-template.html").read()
  soup = BeautifulSoup(html, "lxml") 

  #For each entry
    #create table entry
  for record in aixm_mapping_merged_dict:
    tr = soup.new_tag("tr")
    print(record)
    print("\n")

    td_ic_name = soup.new_tag("td")
    
    if str(record["Information Concept"]) != "missing data" and str(record["Information Concept"]) != "":
      if str(record["Data Concept"]) == "missing data" or str(record["Data Concept"]) == "":
        url = "aixm-5.1.1-to-airm-1.0.0/"+str(record["Information Concept"])+".html"
        text = str(record["Information Concept"])
        #print(text)
        new_link = soup.new_tag("a")
        new_link['href'] = url
        new_link['target'] = "_blank"
        new_link.string = text
        td_ic_name.insert(1,new_link)
        td_ic_name["data-order"] = record["Information Concept"]
      else:
        td_ic_name.string = str(record["Information Concept"])
        td_ic_name["data-order"] = record["Information Concept"]
    else:
      td_ic_name.string = "-"
    tr.insert(0,td_ic_name)

    td_dc_name = soup.new_tag("td")
    if str(record["Data Concept"]) != "missing data" and str(record["Data Concept"]) != "":
      url = "aixm-5.1.1-to-airm-1.0.0/"+str(record["Information Concept"])+".html"+"#"+str(record["Data Concept"])
      text = str(record["Data Concept"])
      #print(text)
      new_link = soup.new_tag("a")
      new_link['href'] = url
      new_link['target'] = "_blank"
      new_link.string = text
      td_dc_name.insert(1,new_link)
      td_dc_name["data-order"] = record["Data Concept"]
    else:
      td_dc_name.string = "-"
    tr.insert(1,td_dc_name)

    td_def = soup.new_tag("td")
    if str(record["Concept Definition"]) != "missing data":
      td_def.string = str(record["Concept Definition"])
    else:
      td_def.string = "-"
    tr.insert(2,td_def)
    
    td_type = soup.new_tag("td")
    if str(record["Basic Type"]) != "missing data":
      td_type.string = str(record["Basic Type"])
    else:
      td_type.string = "-"

    tr.insert(3,td_type)

    #td_dc_type = soup.new_tag("td")
    #if str(record["Data Concept's Basic Type"]) != "missing data":
    #  parts = str(record["Data Concept's Basic Type"]).split(":")
    #  clean_type = parts[-1]
    #  url = "amxm-2.0.0-to-airm-1.0.0/"+clean_type+".html"
    #  text = clean_type
    #  print(text)
    #  new_link = soup.new_tag("a")
    #  new_link['href'] = url
    #  new_link['target'] = "_blank"
    #  new_link.string = text
    #  td_dc_type.insert(1,new_link)
    #else:
    #  td_dc_type = soup.new_tag("td")
    #  td_dc_type.string = "-"
    #tr.insert(3,td_dc_type)
    
    soup.find('tbody').insert(1,tr)
  
  f= open("docs/developers/aixm-5.1.1-to-airm-1.0.0.html","w+")
  f.write(soup.prettify())
  f.close() 
Пример #4
0
def create_html_pages():
  import aixm
  import airm
  aixm = aixm.Aixm()
  airm = airm.Airm()
  aixm_info_concepts_dict = aixm.get_information_concepts()

  for info_concept in aixm_info_concepts_dict:
    if info_concept['Information Concept']!="missing data":
      print(info_concept['Information Concept'])
      #creates soup for concept page using concept-template.html
      html = open("data/html/templates/AIXM-concept-template.html").read()
      soup = BeautifulSoup(html, "lxml") 
      
      #span = soup.new_tag("span")
      #span.string = str(info_concept['Information Concept'])
      #soup.find(id="BC_INFO_CONCEPT_NAME").insert(0,span)span = soup.new_tag("span")
      #span.string = str(info_concept['Information Concept'])
      soup.title.string = str(info_concept['Information Concept'])+" - AIXM 5.1.1 to AIRM 1.0.0 | AIRM.aero"
  
      soup.find(text="FIXM_CLASS_NAME_BC").replace_with(str(info_concept['Information Concept']))

      definition = str(info_concept["Concept Definition"])
      definition = definition.replace("Definition: ","")
      soup.find(text="FIXM_CLASS_DEFINITION").replace_with(definition)

      h2 = soup.new_tag("h2")
      h2.string = str(info_concept['Information Concept'])
      soup.find(id="INFO_CONCEPT_NAME").insert(0,h2)
      code = soup.new_tag("code")
      datac_identifier = info_concept['Concept Identifier']
      
      code.string = datac_identifier
      code["class"] = "text-secondary"
      soup.find(id="INFO_CONCEPT_NAME").insert(1,code)
      
      traces = aixm.get_traces_by_info_concept(info_concept['Information Concept'])
      for trace in traces:
        print('\t'+str(trace['Data Concept']))
        
        tr = soup.new_tag("tr")

        if str(trace["Data Concept"]) != "":
          td_dc_name = soup.new_tag("td")
          url = "#"+str(trace["Data Concept"])
          text = str(trace["Data Concept"])
          new_link = soup.new_tag("a")
          new_link['href'] = url
          new_link.string = text
          td_dc_name.insert(1,new_link)
          tr.insert(1,td_dc_name)
        
        if trace["Concept Definition"] != "":
          td_def = soup.new_tag("td")
          definition = str(trace["Concept Definition"])
          definition = definition.replace("Definition: ","")
          td_def.string = definition
          tr.insert(2,td_def)
                
        soup.find(id="DATA_CONCEPTS_LIST").insert(1,tr)

      for trace in traces:
        property_div = soup.new_tag("div")
        property_div["style"] = "border: 0.5px solid #b2b2b2;border-radius: 4px;box-shadow: 2px 2px #b2b2b2;padding: 15px;padding-bottom: 0px; margin-bottom: 30px"

        h3 = soup.new_tag("h3")
        h3.string = str(trace["Data Concept"])
        h3["id"] = str(trace["Data Concept"])
        h3["style"] = "padding-top: 120px; margin-top: -120px;"
        property_div.insert(0,h3)

        code = soup.new_tag("code")
        identifier = trace['Concept Identifier']
        code.string = identifier
        code["class"] = "text-secondary"
        property_div.insert(1,code)
        
        p = soup.new_tag("p")
        definition = str(trace["Concept Definition"])
        definition = definition.replace("Definition: ","")
        p.string = definition
        br = soup.new_tag("br")
        p.insert(2,br)
        property_div.insert(2,p)
        
        sc_h5 = soup.new_tag("h5")
        sc_h5.string = "Semantic Correspondence"
        sc_h5['style'] = "margin-top: 40px;"
        property_div.insert(3,sc_h5)

        sc_div = soup.new_tag("div")
        sc_div["class"] = "table-responsive"
        sc_table = soup.new_tag("table")
        sc_table["class"] = "table"
        sc_thead = soup.new_tag("thead")
        tr = soup.new_tag("tr")
        th = soup.new_tag("th")
        th.string = "AIRM Concept"
        tr.insert(1,th)
        th = soup.new_tag("th")
        th.string = "Definition"
        tr.insert(2,th)
        sc_thead.insert(1,tr)
        sc_table.insert(1,sc_thead)
        tbody = soup.new_tag("tbody")
        #for each insert row
        print('\t\tSemantic Corresponce:')
        if str(trace['AIRM Concept Identifier']) == "missing data":
            tr = soup.new_tag("tr")
            td = soup.new_tag("td")
            line = str(trace['Special Case'])
            url = create_url(line)
            text = create_name(line)
            a = soup.new_tag("a")
            a['href'] = url
            a['target'] = "_blank"
            a.string = text
            
            a["data-toggle"] = "tooltip"
            a["data-placement"] = "right"
            a["title"] = line

            td.insert(1,a)
            tr.insert(1,td)
            td = soup.new_tag("td")
            airm_entry = airm.load_and_find_urn(line)
            td.string = airm_entry["definition"]
            tr.insert(2,td)
            tbody.insert(1,tr)
        else:
          sem_correspondences = str(trace['AIRM Concept Identifier']).split('\n')
          for line in sem_correspondences:
            print('\t\t\t'+line)
            tr = soup.new_tag("tr")
            td = soup.new_tag("td")
            
            url = create_url(line)
            text = create_name(line)
            a = soup.new_tag("a")
            a['href'] = url
            a['target'] = "_blank"
            a.string = text
            
            a["data-toggle"] = "tooltip"
            a["data-placement"] = "right"
            a["title"] = line

            td.insert(1,a)
            tr.insert(1,td)
            td = soup.new_tag("td")
            airm_entry = airm.load_and_find_urn(line)
            td.string = airm_entry["definition"]
            tr.insert(2,td)
            tbody.insert(1,tr)

        sc_table.insert(2,tbody)
        sc_div.insert(1,sc_table)
        property_div.insert(4,sc_div)
        

        
        
        if str(trace["Rationale"]) != "missing data":
          h5 = soup.new_tag("h5")
          h5.string = "Rationale"
          property_div.insert(5,h5)

          p = soup.new_tag("p")
          p.string = str(trace["Rationale"])
          print('Rationale:'+str(trace["Rationale"]))
          property_div.insert(6,p)
        
        if str(trace["Remarks"]) != "missing data":
          notes_h5 = soup.new_tag("h5")
          notes_h5.string = "Remarks"
          property_div.insert(7,notes_h5)

          p = soup.new_tag("p")
          p.string = str(trace["Remarks"])
          print('Remarks:'+str(trace["Remarks"]))
          property_div.insert(8,p)

        top_link_p = soup.new_tag("p")
        new_link = soup.new_tag("a")
        new_link['href'] = "#top"
        new_icon = soup.new_tag("i")
        new_icon['class'] = "fa fa-arrow-circle-up"
        new_icon["data-toggle"] = "tooltip"
        new_icon["data-placement"] = "left"
        new_icon["title"] = "Top of page"
        new_link.insert(1,new_icon)
        top_link_p.insert(1,new_link)
        top_link_p['class'] =   "text-right"
        property_div.insert(9,top_link_p)

        soup.find(id="DATA_CONCEPTS_DETAIL").insert(1,property_div)

      f= open("docs/developers/aixm-5.1.1-to-airm-1.0.0/"+str(info_concept['Information Concept'])+".html","w+")
      f.write(soup.prettify())
      f.close()
Пример #5
0
def create_connected_index():
    df_connected_index_cols = [
        "airm_urn", "model_name", "concept_name", "concept_id", "concept_type"
    ]
    df_connected_index_rows = []

    import fixm
    fixm = fixm.Fixm()
    fixm_mapping_dict = fixm.fixm_mapping_dataframe.to_dict('records')

    for entry in fixm_mapping_dict:
        sem_correspondences = str(entry['Semantic Correspondence']).split('\n')
        for line in sem_correspondences:
            urn = line
            df_connected_index_rows.append({
                "airm_urn":
                urn,
                "model_name":
                "FIXM 4.2.0",
                "concept_name":
                entry["Data Concept"],
                "concept_id":
                entry["Identifier"],
                "concept_type":
                entry["Type"]
            })

    import amxm
    amxm = amxm.Amxm()
    amxm_mapping_dict = amxm.amxm_mapping_dataframe.to_dict('records')

    for entry in amxm_mapping_dict:
        sem_correspondences = str(entry['AIRM Concept Identifier']).split('\n')
        for line in sem_correspondences:
            urn = line
            if str(entry["Data Concept"]) == "missing data":
                df_connected_index_rows.append({
                    "airm_urn":
                    urn,
                    "model_name":
                    "AMXM 2.0.0",
                    "concept_name":
                    entry["Information Concept"],
                    "concept_id":
                    entry["Concept Identifier"],
                    "concept_type":
                    entry["Basic Type"]
                })
            else:
                df_connected_index_rows.append({
                    "airm_urn":
                    urn,
                    "model_name":
                    "AMXM 2.0.0",
                    "concept_name":
                    entry["Data Concept"],
                    "concept_id":
                    entry["Concept Identifier"],
                    "concept_type":
                    entry["Basic Type"]
                })

    amxm_mapping_dict = amxm.amxm_mapping_enum_dataframe.to_dict('records')

    for entry in amxm_mapping_dict:
        sem_correspondences = str(entry['AIRM Concept Identifier']).split('\n')
        for line in sem_correspondences:
            urn = line
            if str(entry["Data Concept"]) == "missing data":
                df_connected_index_rows.append({
                    "airm_urn":
                    urn,
                    "model_name":
                    "AMXM 2.0.0",
                    "concept_name":
                    entry["Information Concept"],
                    "concept_id":
                    entry["Concept Identifier"],
                    "concept_type":
                    entry["Basic Type"]
                })
            else:
                df_connected_index_rows.append({
                    "airm_urn":
                    urn,
                    "model_name":
                    "AMXM 2.0.0",
                    "concept_name":
                    entry["Data Concept"],
                    "concept_id":
                    entry["Concept Identifier"],
                    "concept_type":
                    entry["Basic Type"]
                })

    import aixm
    aixm = aixm.Aixm()
    aixm_mapping_merged_dict = aixm.aixm_mapping_merged_dataframe.to_dict(
        'records')

    for entry in aixm_mapping_merged_dict:
        sem_correspondences = str(entry['AIRM Concept Identifier']).split('\n')
        for line in sem_correspondences:
            urn = line
            if str(entry["Data Concept"]) == "missing data":
                df_connected_index_rows.append({
                    "airm_urn":
                    urn,
                    "model_name":
                    "AIXM 5.1.1",
                    "concept_name":
                    entry["Information Concept"],
                    "concept_id":
                    entry["Concept Identifier"],
                    "concept_type":
                    entry["Basic Type"]
                })
            else:
                df_connected_index_rows.append({
                    "airm_urn":
                    urn,
                    "model_name":
                    "AIXM 5.1.1",
                    "concept_name":
                    entry["Data Concept"],
                    "concept_id":
                    entry["Concept Identifier"],
                    "concept_type":
                    entry["Basic Type"]
                })

    import aixm_adr
    aixm_adr = aixm_adr.Aixm_adr()
    aixm_adr_mapping_dict = aixm_adr.aixm_adr_mapping_dataframe.to_dict(
        'records')

    for entry in aixm_adr_mapping_dict:
        sem_correspondences = str(entry['AIRM Concept Identifier']).split('\n')
        for line in sem_correspondences:
            urn = line
            if str(entry["Data Concept"]) == "missing data":
                df_connected_index_rows.append({
                    "airm_urn":
                    urn,
                    "model_name":
                    "ADR 23.5.0 Extension (AIXM 5.1.1)",
                    "concept_name":
                    entry["Information Concept"],
                    "concept_id":
                    entry["Concept Identifier"],
                    "concept_type":
                    entry["Basic Type"]
                })
            else:
                df_connected_index_rows.append({
                    "airm_urn":
                    urn,
                    "model_name":
                    "ADR 23.5.0 Extension (AIXM 5.1.1)",
                    "concept_name":
                    entry["Data Concept"],
                    "concept_id":
                    entry["Concept Identifier"],
                    "concept_type":
                    entry["Basic Type"]
                })

    df_connected_index_out = pd.DataFrame(df_connected_index_rows,
                                          columns=df_connected_index_cols)
    with pd.ExcelWriter('data/xlsx/' + 'connected_index.xlsx',
                        engine='xlsxwriter') as writer:
        df_connected_index_out.to_excel(writer, sheet_name='connceted_index')