diff --git a/build.gradle.kts b/build.gradle.kts index 2ebabe6..63514d4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -27,6 +27,7 @@ vodml { outputDocDir.set(layout.projectDirectory.dir("std/generated")) outputSiteDir.set(layout.projectDirectory.dir("docs/generated")) + } /* uncomment this if not using the eclipse vodsl plugin to edit the vodsl diff --git a/src/main/vo-dml/proposalManagement.vo-dml.xml b/src/main/vo-dml/proposalManagement.vo-dml.xml index 3564cce..b407b8b 100644 --- a/src/main/vo-dml/proposalManagement.vo-dml.xml +++ b/src/main/vo-dml/proposalManagement.vo-dml.xml @@ -9,7 +9,7 @@ Proposal Management Paul Harrison 0.6 - 2024-10-21T12:03:07Z + 2024-10-21T12:24:05Z null IVOA-v1.0.vo-dml.xml @@ -25,6 +25,21 @@ proposaldm.vo-dml.xml not known + + InstrumentKind + InstrumentKind + + + InstrumentKind.continuum + continuum + + + + InstrumentKind.spectroscopic + spectroscopic + + + TacRole TacRole @@ -45,6 +60,389 @@ + + Observatory + Observatory + An organisation that can perform astronomical observations + + proposal:Organization + + + Observatory.telescopes + telescopes + the telescopes that the observatory controls + + proposalManagement:Telescope + + + 1 + -1 + + + + Observatory.instruments + instruments + the instruments that are available for the telescopes + + proposalManagement:Instrument + + + 1 + -1 + + + + Observatory.backends + backends + the backends that exist + + proposalManagement:Backend + + + 1 + -1 + + + + Observatory.arrays + arrays + any arrays of telescopes that typically operate together + + proposalManagement:TelescopeArray + + + 0 + -1 + + + + + ObservingPlatform + ObservingPlatform + base type of a telescope or array of telescopes + + + Telescope + Telescope + + + proposalManagement:ObservingPlatform + + + Telescope.name + name + telescope name + + ivoa:string + + + 1 + 1 + + + + Telescope.wikiId + wikiId + the wikidata id for the Telescope + + proposal:WikiDataId + + + 0 + 1 + + + + Telescope.location + location + the location of the telescope + + coords:RealCartesianPoint + + + 1 + 1 + + + + + TelescopeArrayMember + TelescopeArrayMember + + + TelescopeArrayMember.telescope + telescope + + + proposalManagement:Telescope + + + 1 + 1 + + + + + TelescopeArray + TelescopeArray + a set of telescopes that are operated together for an observation + + proposalManagement:ObservingPlatform + + + TelescopeArray.name + name + the array name + + ivoa:string + + + 1 + 1 + + + + TelescopeArray.arrayMembers + arrayMembers + the telescopes that make up the array + + proposalManagement:TelescopeArrayMember + + + 1 + -1 + + + + + Instrument + Instrument + An instrument that can be attached to a telescope - e.g. CCD, Radio Receiver + + Instrument.name + name + the instrument name - human readable + + ivoa:string + + + 1 + 1 + + + + Instrument.description + description + short human readable description + + ivoa:string + + + 0 + 1 + + + + Instrument.wikiId + wikiId + the wikidata id for the Instrument + + proposal:WikiDataId + + + 0 + 1 + + + + Instrument.reference + reference + a URL that points to a more detailed description of the instrument + + ivoa:anyURI + + + 0 + 1 + + + + Instrument.kind + kind + the kind of instrument + + proposalManagement:InstrumentKind + + + 1 + 1 + + + + + Filter + Filter + Available filters /bandpasses for intruments + + Filter.name + name + human readable name + + ivoa:string + + + 1 + 1 + + + + Filter.description + description + human readable description + + ivoa:string + + + 1 + 1 + + + + Filter.frequencyCoverage + frequencyCoverage + the frequency range that the instrument covers + + proposal:SpectralWindowSetup + + + 1 + 1 + + + + + Backend + Backend + a processing backend /pipeline- e.g. correlator + + Backend.name + name + the backend name + + ivoa:string + + + 1 + 1 + + + + Backend.parallel + parallel + is capable of being run at same time as other backends + + ivoa:boolean + + + 1 + 1 + + + + + ObservingModeConfiguration + ObservingModeConfiguration + A particular observation combination that is possible + + ObservingModeConfiguration.telescope + telescope + + + proposalManagement:ObservingPlatform + + + 1 + 1 + + + + ObservingModeConfiguration.instrument + instrument + + + proposalManagement:Instrument + + + 1 + 1 + + + + ObservingModeConfiguration.filter + filter + The filter or frequency response that + + proposalManagement:Filter + + + 1 + 1 + + + + ObservingModeConfiguration.backend + backend + + + proposalManagement:Backend + + + 1 + 1 + + + + + ObservingMode + ObservingMode + a configuration that has been chosen to observe with. + + ObservingMode.name + name + human readable name for the mode + + ivoa:string + + + 1 + 1 + + + + ObservingMode.description + description + human readable description + + ivoa:string + + + 1 + 1 + + + + ObservingMode.configuration + configuration + + + proposalManagement:ObservingModeConfiguration + + + 1 + 1 + + + ProposalCycle ProposalCycle @@ -54,7 +452,7 @@ observatory - proposal:Observatory + proposalManagement:Observatory 1 @@ -114,7 +512,7 @@ observingModes the possible observing modes offered in the cycle - proposal:ObservingMode + proposalManagement:ObservingMode 1 @@ -266,7 +664,7 @@ mode The observing mode - proposal:ObservingMode + proposalManagement:ObservingMode 1 @@ -560,7 +958,7 @@ mode - proposal:ObservingMode + proposalManagement:ObservingMode 1 diff --git a/src/main/vo-dml/proposaldm.vo-dml.xml b/src/main/vo-dml/proposaldm.vo-dml.xml index 3c8bd4a..42d125f 100644 --- a/src/main/vo-dml/proposaldm.vo-dml.xml +++ b/src/main/vo-dml/proposaldm.vo-dml.xml @@ -12,7 +12,7 @@ Proposal Paul Harrison 0.6 - 2024-10-21T12:09:40Z + 2024-10-21T12:21:58Z null IVOA-v1.0.vo-dml.xml @@ -66,21 +66,6 @@ co-investigator - - InstrumentKind - InstrumentKind - - - InstrumentKind.continuum - continuum - - - - InstrumentKind.spectroscopic - spectroscopic - - - TextFormats TextFormats @@ -539,389 +524,6 @@ - - Observatory - Observatory - An organisation that can perform astronomical observations - - proposal:Organization - - - Observatory.telescopes - telescopes - the telescopes that the observatory controls - - proposal:Telescope - - - 1 - -1 - - - - Observatory.instruments - instruments - the instruments that are available for the telescopes - - proposal:Instrument - - - 1 - -1 - - - - Observatory.backends - backends - the backends that exist - - proposal:Backend - - - 1 - -1 - - - - Observatory.arrays - arrays - any arrays of telescopes that typically operate together - - proposal:TelescopeArray - - - 0 - -1 - - - - - ObservingPlatform - ObservingPlatform - base type of a telescope or array of telescopes - - - Telescope - Telescope - - - proposal:ObservingPlatform - - - Telescope.name - name - telescope name - - ivoa:string - - - 1 - 1 - - - - Telescope.wikiId - wikiId - the wikidata id for the Telescope - - proposal:WikiDataId - - - 0 - 1 - - - - Telescope.location - location - the location of the telescope - - coords:RealCartesianPoint - - - 1 - 1 - - - - - TelescopeArrayMember - TelescopeArrayMember - - - TelescopeArrayMember.telescope - telescope - - - proposal:Telescope - - - 1 - 1 - - - - - TelescopeArray - TelescopeArray - a set of telescopes that are operated together for an observation - - proposal:ObservingPlatform - - - TelescopeArray.name - name - the array name - - ivoa:string - - - 1 - 1 - - - - TelescopeArray.arrayMembers - arrayMembers - the telescopes that make up the array - - proposal:TelescopeArrayMember - - - 1 - -1 - - - - - Instrument - Instrument - An instrument that can be attached to a telescope - e.g. CCD, Radio Receiver - - Instrument.name - name - the instrument name - human readable - - ivoa:string - - - 1 - 1 - - - - Instrument.description - description - short human readable description - - ivoa:string - - - 0 - 1 - - - - Instrument.wikiId - wikiId - the wikidata id for the Instrument - - proposal:WikiDataId - - - 0 - 1 - - - - Instrument.reference - reference - a URL that points to a more detailed description of the instrument - - ivoa:anyURI - - - 0 - 1 - - - - Instrument.kind - kind - the kind of instrument - - proposal:InstrumentKind - - - 1 - 1 - - - - - Filter - Filter - Available filters /bandpasses for intruments - - Filter.name - name - human readable name - - ivoa:string - - - 1 - 1 - - - - Filter.description - description - human readable description - - ivoa:string - - - 1 - 1 - - - - Filter.frequencyCoverage - frequencyCoverage - the frequency range that the instrument covers - - proposal:SpectralWindowSetup - - - 1 - 1 - - - - - Backend - Backend - a processing backend /pipeline- e.g. correlator - - Backend.name - name - the backend name - - ivoa:string - - - 1 - 1 - - - - Backend.parallel - parallel - is capable of being run at same time as other backends - - ivoa:boolean - - - 1 - 1 - - - - - ObservingModeConfiguration - ObservingModeConfiguration - A particular observation combination that is possible - - ObservingModeConfiguration.telescope - telescope - - - proposal:ObservingPlatform - - - 1 - 1 - - - - ObservingModeConfiguration.instrument - instrument - - - proposal:Instrument - - - 1 - 1 - - - - ObservingModeConfiguration.filter - filter - The filter or frequency response that - - proposal:Filter - - - 1 - 1 - - - - ObservingModeConfiguration.backend - backend - - - proposal:Backend - - - 1 - 1 - - - - - ObservingMode - ObservingMode - a configuration that has been chosen to observe with. - - ObservingMode.name - name - human readable name for the mode - - ivoa:string - - - 1 - 1 - - - - ObservingMode.description - description - human readable description - - ivoa:string - - - 1 - 1 - - - - ObservingMode.configuration - configuration - - - proposal:ObservingModeConfiguration - - - 1 - 1 - - - Justification Justification diff --git a/src/main/vodsl/proposalManagement.vodsl b/src/main/vodsl/proposalManagement.vodsl index 2cf779c..9c1d91c 100644 --- a/src/main/vodsl/proposalManagement.vodsl +++ b/src/main/vodsl/proposalManagement.vodsl @@ -10,13 +10,92 @@ include "../../../build/tmp/Coords-v1.0.vodsl" // this is a case where recursive import would be better - https://github.com/ivoa/vo-dml/issues/7 - here stc is really only used in the proposaldm include "proposaldm.vodsl" + + //IMPL - this and related objects should probably be in the "Management" model. + otype Observatory -> proposal:Organization "An organisation that can perform astronomical observations" { + + telescopes : Telescope @+ as composition "the telescopes that the observatory controls"; + instruments : Instrument @+ as composition "the instruments that are available for the telescopes"; + backends : Backend @+ as composition "the backends that exist"; + arrays: TelescopeArray @* as composition "any arrays of telescopes that typically operate together"; + + } + + abstract otype ObservingPlatform "base type of a telescope or array of telescopes" + { + + } + + otype Telescope -> ObservingPlatform "" { + name : ivoa:string "telescope name"; + wikiId : proposal:WikiDataId @? "the wikidata id for the Telescope"; //IMPL this is just an idea to have a reference outside this database + + location : coords:RealCartesianPoint "the location of the telescope" ; + } + + otype TelescopeArrayMember "" { + telescope references Telescope ""; + } + + otype TelescopeArray -> ObservingPlatform "a set of telescopes that are operated together for an observation" { // IMPL might not be necessary with ObservingConfiguration doing the same sort of thing. + name : ivoa:string "the array name"; + arrayMembers: TelescopeArrayMember @+ as composition "the telescopes that make up the array"; + } + + + + enum InstrumentKind { //IMPL is this extensive enough to be useful? + continuum, + spectroscopic + } + + otype Instrument "An instrument that can be attached to a telescope - e.g. CCD, Radio Receiver"{ + name : ivoa:string "the instrument name - human readable"; + description: ivoa:string @? "short human readable description"; + wikiId : proposal:WikiDataId @? "the wikidata id for the Instrument"; + reference : ivoa:anyURI @? " a URL that points to a more detailed description of the instrument"; + kind : InstrumentKind "the kind of instrument"; + } + + otype Filter "Available filters /bandpasses for intruments " { + name : ivoa:string "human readable name"; + description: ivoa:string "human readable description"; + frequencyCoverage : proposal:SpectralWindowSetup "the frequency range that the instrument covers"; + } + + otype Backend "a processing backend /pipeline- e.g. correlator" { + name : ivoa:string "the backend name"; + parallel : ivoa:boolean "is capable of being run at same time as other backends"; + + } + + /* Note that when presenting these configurations in the GUI they probably need to be decomposed into combo boxes that display each set of possibilities of each member one after another + limited by the remaining possible choices having selected those above */ + otype ObservingModeConfiguration "A particular observation combination that is possible" { + telescope references ObservingPlatform ""; + instrument references Instrument ""; + filter:Filter as composition "The filter or frequency response that "; + backend references Backend ""; + } + + otype ObservingMode "a configuration that has been chosen to observe with." { + name: ivoa:string "human readable name for the mode"; + description: ivoa:string "human readable description"; + configuration references ObservingModeConfiguration ""; + // IMPL could add an arbitrary "options" here. + } + + + + + otype ProposalCycle "Defines collection of resources and proposals for a particular observing season" { - observatory references proposal:Observatory ""; + observatory references Observatory ""; ^title: ivoa:string "a human readable description of the cycle"; submissionDeadline : ivoa:datetime @? "the date by which observing proposals must be submitted to be considered for this cycle"; observationSessionStart : ivoa:datetime "the start date of the observing cycle"; observationSessionEnd: ivoa:datetime "the end date of the observing cycle"; - observingModes: proposal:ObservingMode @+ as composition "the possible observing modes offered in the cycle"; + observingModes: ObservingMode @+ as composition "the possible observing modes offered in the cycle"; availableResources : AvailableResources as composition ""; possibleGrades : AllocationGrade @+ as composition "The possible grades that can be allocated for this cycle"; tac : TAC as composition "The time allocation committee"; @@ -49,7 +128,7 @@ otype ObservationConfiguration "the configuration of an observation specific to a submission to a particular cycle" { observation @+ references proposal:Observation ""; - mode references proposal:ObservingMode "The observing mode"; //IMPL this is what allows the observation to be tied to multiple observatories. + mode references ObservingMode "The observing mode"; //IMPL this is what allows the observation to be tied to multiple observatories. } otype SubmittedProposal "an instance of a proposal that has been submitted" { @@ -103,7 +182,7 @@ otype ResourceBlock "A block of resources that can be allocated" { - mode references proposal:ObservingMode ""; + mode references ObservingMode ""; resource : Resource as composition "the amount of resource"; } diff --git a/src/main/vodsl/proposaldm.vodsl b/src/main/vodsl/proposaldm.vodsl index 3fbac0a..e39dbc6 100644 --- a/src/main/vodsl/proposaldm.vodsl +++ b/src/main/vodsl/proposaldm.vodsl @@ -76,81 +76,7 @@ observations, although the intention is that information about targets etc. coul } - //IMPL - this and related objects should probably be in the "Management" model. - otype Observatory -> Organization "An organisation that can perform astronomical observations" { - - telescopes : Telescope @+ as composition "the telescopes that the observatory controls"; - instruments : Instrument @+ as composition "the instruments that are available for the telescopes"; - backends : Backend @+ as composition "the backends that exist"; - arrays: TelescopeArray @* as composition "any arrays of telescopes that typically operate together"; - - } - - abstract otype ObservingPlatform "base type of a telescope or array of telescopes" - { - - } - - otype Telescope -> ObservingPlatform "" { - name : ivoa:string "telescope name"; - wikiId : WikiDataId @? "the wikidata id for the Telescope"; //IMPL this is just an idea to have a reference outside this database - - location : coords:RealCartesianPoint "the location of the telescope" ; - } - - otype TelescopeArrayMember "" { - telescope references Telescope ""; - } - - otype TelescopeArray -> ObservingPlatform "a set of telescopes that are operated together for an observation" { // IMPL might not be necessary with ObservingConfiguration doing the same sort of thing. - name : ivoa:string "the array name"; - arrayMembers: TelescopeArrayMember @+ as composition "the telescopes that make up the array"; - } - - - - enum InstrumentKind { //IMPL is this extensive enough to be useful? - continuum, - spectroscopic - } - - otype Instrument "An instrument that can be attached to a telescope - e.g. CCD, Radio Receiver"{ - name : ivoa:string "the instrument name - human readable"; - description: ivoa:string @? "short human readable description"; - wikiId : WikiDataId @? "the wikidata id for the Instrument"; - reference : ivoa:anyURI @? " a URL that points to a more detailed description of the instrument"; - kind : InstrumentKind "the kind of instrument"; - } - - otype Filter "Available filters /bandpasses for intruments " { - name : ivoa:string "human readable name"; - description: ivoa:string "human readable description"; - frequencyCoverage : SpectralWindowSetup "the frequency range that the instrument covers"; - } - - otype Backend "a processing backend /pipeline- e.g. correlator" { - name : ivoa:string "the backend name"; - parallel : ivoa:boolean "is capable of being run at same time as other backends"; - - } - - /* Note that when presenting these configurations in the GUI they probably need to be decomposed into combo boxes that display each set of possibilities of each member one after another - limited by the remaining possible choices having selected those above */ - otype ObservingModeConfiguration "A particular observation combination that is possible" { - telescope references ObservingPlatform ""; - instrument references Instrument ""; - filter:Filter as composition "The filter or frequency response that "; - backend references Backend ""; - } - - otype ObservingMode "a configuration that has been chosen to observe with." { - name: ivoa:string "human readable name for the mode"; - description: ivoa:string "human readable description"; - configuration references ObservingModeConfiguration ""; - // IMPL could add an arbitrary "options" here. - } - - + enum TextFormats "acceptable text formats for document submission"{ //IMPL this list is up for debate latex "LaTeX using standard document style" ,//IMPL document sytle to be specified rst "restructured text", diff --git a/src/test/java/org/ivoa/dm/proposal/prop/EmerlinExample.java b/src/test/java/org/ivoa/dm/proposal/prop/EmerlinExample.java index a9ab20b..c9dd7a1 100644 --- a/src/test/java/org/ivoa/dm/proposal/prop/EmerlinExample.java +++ b/src/test/java/org/ivoa/dm/proposal/prop/EmerlinExample.java @@ -13,7 +13,7 @@ import java.util.stream.Stream; import static org.ivoa.dm.proposal.management.ProposalCycle.createProposalCycle; -import static org.ivoa.dm.proposal.prop.Observatory.createObservatory; +import static org.ivoa.dm.proposal.management.Observatory.createObservatory; import static org.ivoa.dm.proposal.prop.SpectralWindowSetup.createSpectralWindowSetup; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -66,7 +66,7 @@ public EmerlinExample () { final TelescopeArray eMERLIN = new TelescopeArray("e-MERLIN", Stream.of(telescopes).map(t -> new TelescopeArrayMember(t)).collect(Collectors.toList())); final TelescopeArray eMERLINReduced = new TelescopeArray("e-MERLIN (reduced)", - Stream.of(telescopes).filter(t -> !notK.contains(t.name)).map(t -> new TelescopeArrayMember(t)).collect(Collectors.toList())); + Stream.of(telescopes).filter(t -> !notK.contains(t.getName())).map(t -> new TelescopeArrayMember(t)).collect(Collectors.toList())); observatory = createObservatory(obs -> { obs.address = "on earth"; obs.ivoid = new Ivorn("ivo://obs/anobs"); diff --git a/src/test/java/org/ivoa/dm/proposal/prop/LCOExample.java b/src/test/java/org/ivoa/dm/proposal/prop/LCOExample.java index 4f7df7c..8fecb3e 100644 --- a/src/test/java/org/ivoa/dm/proposal/prop/LCOExample.java +++ b/src/test/java/org/ivoa/dm/proposal/prop/LCOExample.java @@ -4,7 +4,7 @@ */ import static org.ivoa.dm.proposal.management.ProposalCycle.createProposalCycle; -import static org.ivoa.dm.proposal.prop.Observatory.createObservatory; +import static org.ivoa.dm.proposal.management.Observatory.createObservatory; import java.util.Arrays; import java.util.stream.Collectors; @@ -14,9 +14,16 @@ import org.ivoa.dm.proposal.management.AllocatedProposal; import org.ivoa.dm.proposal.management.AllocationGrade; import org.ivoa.dm.proposal.management.AvailableResources; +import org.ivoa.dm.proposal.management.Backend; +import org.ivoa.dm.proposal.management.Instrument; +import org.ivoa.dm.proposal.management.Observatory; +import org.ivoa.dm.proposal.management.ObservingMode; import org.ivoa.dm.proposal.management.Resource; import org.ivoa.dm.proposal.management.ResourceType; import org.ivoa.dm.proposal.management.SubmittedProposal; +import org.ivoa.dm.proposal.management.Telescope; +import org.ivoa.dm.proposal.management.TelescopeArray; +import org.ivoa.dm.proposal.management.TelescopeArrayMember; /** *