Skip to content

Commit

Permalink
replace COLUMN with INSTANCE
Browse files Browse the repository at this point in the history
  • Loading branch information
olaurino committed May 27, 2018
1 parent 3615fcc commit 61c6cf4
Show file tree
Hide file tree
Showing 9 changed files with 59 additions and 55 deletions.
18 changes: 11 additions & 7 deletions rama/reader/votable/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def get_local_name(tag_name):
TEMPLATES = get_local_name("TEMPLATES")
INSTANCE = get_local_name("INSTANCE")
LITERAL = get_local_name("INSTANCE")
COLUMN = get_local_name("COLUMN")
COLUMN = get_local_name("INSTANCE")
REFERENCE = get_local_name("ATTRIBUTE")
COMPOSITION = get_local_name("ATTRIBUTE")
ATTRIBUTE = get_local_name("ATTRIBUTE")
Expand Down Expand Up @@ -203,10 +203,10 @@ def parse_identifier_field(context, xml_element):


def parse_primary_key_field(context, xml_element):
literal_elements = xml_element.xpath(f"./{LITERAL}")
literal_elements = xml_element.xpath(f"./{LITERAL}[not(@ref)]")
if literal_elements:
return parse_literal(context, literal_elements[0])
column_elements = xml_element.xpath(f"./{COLUMN}")
column_elements = find_columns(xml_element)
if column_elements:
return parse_column(context, column_elements[0]).data

Expand All @@ -232,6 +232,10 @@ def get_children(element, child_tag_name):
return element.xpath(get_child_selector(child_tag_name))


def find_columns(element):
return element.xpath(f'.//{COLUMN}[@ref and not(@value)]')


def resolve_type(xml_element):
element_type = xml_element.xpath(TYPE_ATTR)[0]
return element_type
Expand All @@ -252,7 +256,7 @@ def find_element_for_role(xml_element, tag_name, role_id):

def is_template(xml_element):
has_template_parent = len(xml_element.xpath(f'./parent::{TEMPLATES}')) > 0
has_column_descendants = len(xml_element.xpath(f'.//{COLUMN}')) > 0
has_column_descendants = len(find_columns(xml_element)) > 0
return has_template_parent or has_column_descendants


Expand Down Expand Up @@ -313,17 +317,17 @@ def parse_references(xml_element, field_object, context):


def parse_structured_instances(xml_element, context):
elements = xml_element.xpath(f"./{INSTANCE}[not(@value)]")
elements = xml_element.xpath(f"./{INSTANCE}[not(@value) and not(@ref)]")
return [read_instance(element, context) for element in elements]


def parse_literals(xml_element, context):
elements = xml_element.xpath(f"./{INSTANCE}[@value]")
elements = xml_element.xpath(f"./{INSTANCE}[@value and not(@ref)]")
return [parse_literal(context, element) for element in elements]


def parse_columns(xml_element, context):
elements = get_children(xml_element, COLUMN)
elements = xml_element.xpath(f"./{INSTANCE}[@ref and not(@value)]")
return [parse_column(context, element) for element in elements]


Expand Down
14 changes: 7 additions & 7 deletions rama/reader/votable/tests/data/cube.vot.xml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
<ATTRIBUTE dmrole="coord">
<INSTANCE dmtype="coords:domain.time.ISOTime">
<ATTRIBUTE dmrole="date">
<COLUMN dmtype="ivoa:datetime" ref="_col_TIME"/>
<INSTANCE dmtype="ivoa:datetime" ref="_col_TIME"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="frame">
<IDREF>_TT_FRAME</IDREF>
Expand All @@ -100,10 +100,10 @@
<ATTRIBUTE dmrole="coord">
<INSTANCE dmtype="coords:domain.space.EquatorialCoord">
<ATTRIBUTE dmrole="ra">
<COLUMN dmtype="ivoa:RealQuantity" ref="_col_RAJ2000"/>
<INSTANCE dmtype="ivoa:RealQuantity" ref="_col_RAJ2000"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="dec">
<COLUMN dmtype="ivoa:RealQuantity" ref="_col_DECJ2000"/>
<INSTANCE dmtype="ivoa:RealQuantity" ref="_col_DECJ2000"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="frame">
<IDREF>_FK4_J2000_FRAME</IDREF>
Expand All @@ -122,7 +122,7 @@
<ATTRIBUTE dmrole="coord">
<INSTANCE dmtype="coords:PhysicalCoordValue">
<ATTRIBUTE dmrole="cval">
<COLUMN dmtype="ivoa:RealQuantity" ref="_col_FLUX"/>
<INSTANCE dmtype="ivoa:RealQuantity" ref="_col_FLUX"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
Expand All @@ -131,7 +131,7 @@
<ATTRIBUTE dmrole="statError">
<INSTANCE dmtype="meas:Symmetrical1D">
<ATTRIBUTE dmrole="radius">
<COLUMN dmtype="ivoa:RealQuantity" ref="_col_FLUX_ERROR"/>
<INSTANCE dmtype="ivoa:RealQuantity" ref="_col_FLUX_ERROR"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
Expand All @@ -149,7 +149,7 @@
<ATTRIBUTE dmrole="coord">
<INSTANCE dmtype="coords:PhysicalCoordValue">
<ATTRIBUTE dmrole="cval">
<COLUMN dmtype="ivoa:RealQuantity" ref="_col_MAG"/>
<INSTANCE dmtype="ivoa:RealQuantity" ref="_col_MAG"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
Expand All @@ -158,7 +158,7 @@
<ATTRIBUTE dmrole="statError">
<INSTANCE dmtype="meas:Symmetrical1D">
<ATTRIBUTE dmrole="radius">
<COLUMN dmtype="ivoa:RealQuantity" ref="_col_MAG_ERROR"/>
<INSTANCE dmtype="ivoa:RealQuantity" ref="_col_MAG_ERROR"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
Expand Down
22 changes: 11 additions & 11 deletions rama/reader/votable/tests/data/hsc.vot.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,16 @@
<INSTANCE ID="_source" dmtype="source:Detection">
<PRIMARYKEY>
<PKFIELD>
<COLUMN dmtype="ivoa:string" ref="SourceID"/>
<INSTANCE dmtype="ivoa:string" ref="SourceID"/>
</PKFIELD>
</PRIMARYKEY>
<ATTRIBUTE dmrole="name">
<COLUMN ref="SourceID" dmtype="ivoa:string"/>
<INSTANCE ref="SourceID" dmtype="ivoa:string"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="luminosity">
<INSTANCE dmtype="source:LuminosityMeasurement">
<ATTRIBUTE dmrole="value">
<COLUMN ref="MagAper2" dmtype="ivoa:real"/>
<INSTANCE ref="MagAper2" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="type">
<INSTANCE value="magnitude" dmtype="source:LuminosityType"/>
Expand All @@ -100,10 +100,10 @@
<ATTRIBUTE dmrole="filter">
<FOREIGNKEY>
<PKFIELD>
<COLUMN ref="Filter" dmtype="ivoa:string"/>
<INSTANCE ref="Filter" dmtype="ivoa:string"/>
</PKFIELD>
<PKFIELD>
<COLUMN ref="Instrument" dmtype="ivoa:string"/>
<INSTANCE ref="Instrument" dmtype="ivoa:string"/>
</PKFIELD>
<TARGETID>_HSC_FILTERS</TARGETID>
</FOREIGNKEY>
Expand All @@ -115,10 +115,10 @@
<ATTRIBUTE dmrole="coord">
<INSTANCE dmtype="coords:domain.space.EquatorialCoord">
<ATTRIBUTE dmrole="ra">
<COLUMN ref="SourceRA" dmtype="ivoa:real"/>
<INSTANCE ref="SourceRA" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="dec">
<COLUMN ref="SourceDec" dmtype="ivoa:real"/>
<INSTANCE ref="SourceDec" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="frame">
<IDREF>_icrs_</IDREF>
Expand All @@ -130,17 +130,17 @@
<ATTRIBUTE dmrole="sourceImage">
<INSTANCE dmtype="source:Image">
<ATTRIBUTE dmrole="url">
<COLUMN ref="AccessUrlFits" dmtype="ivoa:real"/>
<INSTANCE ref="AccessUrlFits" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="exposureTime">
<COLUMN ref="ExposureTime" dmtype="ivoa:real"/>
<INSTANCE ref="ExposureTime" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="startTime">
<!--TBD: What is the right way to define these time stamps?-->
<COLUMN ref="StartMJD" dmtype="ivoa:real"/>
<INSTANCE ref="StartMJD" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="stopTime">
<COLUMN ref="StopMJD" dmtype="ivoa:real"/>
<INSTANCE ref="StopMJD" dmtype="ivoa:real"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
Expand Down
4 changes: 2 additions & 2 deletions rama/reader/votable/tests/data/invalid.vot.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@
<ATTRIBUTE dmrole="coord">
<INSTANCE dmtype="coords:domain.space.EquatorialCoord">
<ATTRIBUTE dmrole="ra">
<COLUMN ref="foo" dmtype="ivoa:RealQuantity"/>
<INSTANCE ref="foo" dmtype="ivoa:RealQuantity"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="dec">
<COLUMN ref="_DEC" dmtype="ivoa:RealQuantity"/>
<INSTANCE ref="_DEC" dmtype="ivoa:RealQuantity"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="frame">
<IDREF>_SPACE_FRAME</IDREF>
Expand Down
14 changes: 7 additions & 7 deletions rama/reader/votable/tests/data/references.vot.xml
Original file line number Diff line number Diff line change
Expand Up @@ -104,19 +104,19 @@
<INSTANCE ID="_source" dmtype="sample:catalog.Source">
<PRIMARYKEY>
<PKFIELD>
<COLUMN ref="_designation" dmtype="ivoa:string"/>
<INSTANCE ref="_designation" dmtype="ivoa:string"/>
</PKFIELD>
</PRIMARYKEY>
<ATTRIBUTE dmrole="name">
<COLUMN ref="_designation" dmtype="ivoa:string"/>
<INSTANCE ref="_designation" dmtype="ivoa:string"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="position">
<INSTANCE dmtype="sample:catalog.SkyCoordinate">
<ATTRIBUTE dmrole="longitude">
<COLUMN ref="_ra" dmtype="ivoa:real"/>
<INSTANCE ref="_ra" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="latitude">
<COLUMN ref="_dec" dmtype="ivoa:real"/>
<INSTANCE ref="_dec" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="frame">
<IDREF>_SPACE_FRAME</IDREF>
Expand All @@ -126,18 +126,18 @@
<ATTRIBUTE dmrole="luminosity">
<INSTANCE dmtype="sample:catalog.LuminosityMeasurement">
<ATTRIBUTE dmrole="value">
<COLUMN ref="MagAper2" dmtype="ivoa:real"/>
<INSTANCE ref="MagAper2" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="type">
<INSTANCE value="magnitude" dmtype="sample:catalog.LuminosityType"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="filter">
<FOREIGNKEY>
<PKFIELD>
<COLUMN ref="Filter" dmtype="ivoa:string"/>
<INSTANCE ref="Filter" dmtype="ivoa:string"/>
</PKFIELD>
<PKFIELD>
<COLUMN ref="Instrument" dmtype="ivoa:string"/>
<INSTANCE ref="Instrument" dmtype="ivoa:string"/>
</PKFIELD>
<TARGETID>_HSC_FILTERS</TARGETID>
</FOREIGNKEY>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@
<ATTRIBUTE dmrole="coord">
<INSTANCE dmtype="coords:domain.space.EquatorialCoord">
<ATTRIBUTE dmrole="ra">
<COLUMN ref="_RA" dmtype="ivoa:RealQuantity"/>
<INSTANCE ref="_RA" dmtype="ivoa:RealQuantity"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="dec">
<COLUMN ref="_DEC" dmtype="ivoa:RealQuantity"/>
<INSTANCE ref="_DEC" dmtype="ivoa:RealQuantity"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="frame">
<IDREF>_SPACE_FRAME</IDREF>
Expand Down
26 changes: 13 additions & 13 deletions rama/reader/votable/tests/data/test5.vot.xml
Original file line number Diff line number Diff line change
Expand Up @@ -87,23 +87,23 @@
<INSTANCE ID="_source" dmtype="sample:catalog.Source">
<PRIMARYKEY>
<PKFIELD>
<COLUMN ref="_designation" dmtype="ivoa:string"/>
<INSTANCE ref="_designation" dmtype="ivoa:string"/>
</PKFIELD>
</PRIMARYKEY>
<!-- possible error -->
<!--
<ATTRIBUTE dmrole="name">
-->
<ATTRIBUTE dmrole="name">
<COLUMN ref="_designation" dmtype="ivoa:string"/>
<INSTANCE ref="_designation" dmtype="ivoa:string"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="position">
<INSTANCE dmtype="sample:catalog.SkyCoordinate">
<ATTRIBUTE dmrole="longitude">
<COLUMN ref="_ra" dmtype="ivoa:real"/>
<INSTANCE ref="_ra" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="latitude">
<COLUMN ref="_dec" dmtype="ivoa:real"/>
<INSTANCE ref="_dec" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="frame">
<IDREF>_icrs</IDREF>
Expand All @@ -114,10 +114,10 @@
<ATTRIBUTE dmrole="luminosity">
<INSTANCE dmtype="sample:catalog.LuminosityMeasurement">
<ATTRIBUTE dmrole="value">
<COLUMN ref="_magH" dmtype="ivoa:real"/>
<INSTANCE ref="_magH" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="error">
<COLUMN ref="_errH" dmtype="ivoa:real"/>
<INSTANCE ref="_errH" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="type">
<INSTANCE value="magnitude" dmtype="sample:catalog.LuminosityType"/>
Expand All @@ -128,10 +128,10 @@
</INSTANCE>
<INSTANCE dmtype="sample:catalog.LuminosityMeasurement">
<ATTRIBUTE dmrole="value">
<COLUMN ref="_magJ" dmtype="ivoa:real"/>
<INSTANCE ref="_magJ" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="error">
<COLUMN ref="_errJ" dmtype="ivoa:real"/>
<INSTANCE ref="_errJ" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="type">
<INSTANCE value="magnitude" dmtype="sample:catalog.LuminosityType"/>
Expand All @@ -142,10 +142,10 @@
</INSTANCE>
<INSTANCE dmtype="sample:catalog.LuminosityMeasurement">
<ATTRIBUTE dmrole="value">
<COLUMN ref="_magK" dmtype="ivoa:real"/>
<INSTANCE ref="_magK" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="error">
<COLUMN ref="_errK" dmtype="ivoa:real"/>
<INSTANCE ref="_errK" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="type">
<INSTANCE value="magnitude" dmtype="sample:catalog.LuminosityType"/>
Expand All @@ -164,16 +164,16 @@
<CONTAINER>
<FOREIGNKEY>
<PKFIELD>
<COLUMN ref="_container" dmtype="ivoa:string"/>
<INSTANCE ref="_container" dmtype="ivoa:string"/>
</PKFIELD>
<TARGETID>_source</TARGETID>
</FOREIGNKEY>
</CONTAINER>
<ATTRIBUTE dmrole="value">
<COLUMN ref="_mag" dmtype="ivoa:real"/>
<INSTANCE ref="_mag" dmtype="ivoa:real"/>
</ATTRIBUTE>
<ATTRIBUTE dmrole="error">
<COLUMN ref="_eMag" dmtype="ivoa:real"/>
<INSTANCE ref="_eMag" dmtype="ivoa:real"/>
</ATTRIBUTE>
<!-- Following is example of OR-like reference, but not to another table but to a singleton object -->
<ATTRIBUTE dmrole="filter">
Expand Down
2 changes: 1 addition & 1 deletion rama/reader/votable/tests/data/time.vot.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<IDREF>_TT_FRAME</IDREF>
</ATTRIBUTE>
<ATTRIBUTE dmrole="date">
<COLUMN dmtype="ivoa:real" ref="_col_H_TIME"/>
<INSTANCE dmtype="ivoa:real" ref="_col_H_TIME"/>
</ATTRIBUTE>
</INSTANCE>
</ATTRIBUTE>
Expand Down
Loading

0 comments on commit 61c6cf4

Please sign in to comment.