diff --git a/model-dmdocument/pom.xml b/model-dmdocument/pom.xml index d4fe01bb..ecff0e81 100644 --- a/model-dmdocument/pom.xml +++ b/model-dmdocument/pom.xml @@ -212,6 +212,11 @@ argparse4j 0.9.0 + + commons-io + commons-io + 2.16.1 + diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/AbstractGenerationPlugin.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/AbstractGenerationPlugin.java index 26503a4e..81d85b11 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/AbstractGenerationPlugin.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/AbstractGenerationPlugin.java @@ -1,40 +1,6 @@ -// Copyright 2019, California Institute of Technology ("Caltech"). -// U.S. Government sponsorship acknowledged. -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions must reproduce the above copyright notice, this list of -// conditions and the following disclaimer in the documentation and/or other -// materials provided with the distribution. -// * Neither the name of Caltech nor its operating division, the Jet Propulsion -// Laboratory, nor the names of its contributors may be used to endorse or -// promote products derived from this software without specific prior written -// permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - package gov.nasa.pds.model.plugin; import java.io.File; -import java.lang.reflect.Field; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Parameter; @@ -67,7 +33,6 @@ public void execute() throws MojoExecutionException { getLog().info("Writing artifacts from those sources to ‘" + this.target + "’"); File d = new File(this.target); d.mkdirs(); - DMDocument.outputDirPath = d.toString() + "/"; this.generateArtifacts(); } catch (RuntimeException ex) { throw ex; diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DMDocument.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DMDocument.java index a98cb4ea..01914216 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DMDocument.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DMDocument.java @@ -44,10 +44,9 @@ import java.util.Set; import java.util.TimeZone; import java.util.TreeMap; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - +import gov.nasa.pds.model.plugin.util.Utility; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.helper.HelpScreenException; import net.sourceforge.argparse4j.impl.Arguments; @@ -95,7 +94,7 @@ public class DMDocument extends Object { static String ddDocTeam = "TBD_ddDocTeam"; static String dataDirPath = "TBD_dataDirPath"; - static String outputDirPath = "./"; + private static String outputDirPath = "./"; static String DMDocVersionId = "0.0.0"; // static String XMLSchemaLabelBuildNum = "6a"; @@ -302,7 +301,7 @@ public class DMDocument extends Object { // info, warning, and error messages static int msgOrder = 100000; - static ArrayList mainMsgArr = new ArrayList<>(); + public static ArrayList mainMsgArr = new ArrayList<>(); static DOMMsgDefn masterDOMMsgDefn = new DOMMsgDefn(); static TreeMap messageLevelCountMap = new TreeMap<>(); static Integer lMessageWarningCount = 0; @@ -366,10 +365,10 @@ public static void run(String[] args) throws Throwable { } } } else { - registerMessage("0>info - Property data.home is null"); + Utility.registerMessage("0>info - Property data.home is null"); String sysUserDir = System.getProperty("user.dir"); if (sysUserDir == null) { - registerMessage("3>error Environment variable sysUserDir is null"); + Utility.registerMessage("3>error Environment variable sysUserDir is null"); printErrorMessages(); System.exit(1); } @@ -390,9 +389,9 @@ public static void run(String[] args) throws Throwable { } } } - registerMessage("0>info - Parent Directory:" + parentDir); - registerMessage("0>info - IM Directory Path:" + dataDirPath); - registerMessage("0>info - IM Versions Available:" + alternateIMVersionArr); + Utility.registerMessage("0>info - Parent Directory:" + parentDir); + Utility.registerMessage("0>info - IM Directory Path:" + dataDirPath); + Utility.registerMessage("0>info - IM Versions Available:" + alternateIMVersionArr); // read the configuration file and initialize key attributes; SchemaFileDefn map is initialized // below (setupNameSpaceInfoAll) @@ -466,10 +465,10 @@ public static void run(String[] args) throws Throwable { } } catch (FileNotFoundException ex) { // file does not exist - registerMessage("3>error Configuration file does not exist. [config.properties]"); + Utility.registerMessage("3>error Configuration file does not exist. [config.properties]"); } catch (IOException ex) { // I/O error - registerMessage("3>error Configuration file IO Exception. [config.properties]"); + Utility.registerMessage("3>error Configuration file IO Exception. [config.properties]"); } finally { try { reader.close(); @@ -501,21 +500,21 @@ public static void run(String[] args) throws Throwable { // output the context info if (!LDDToolFlag) { - registerMessage("1>info DMDoc Version: " + DMDocVersionId); - registerMessage("1>info IM Version Id: " + DMDocument.masterPDSSchemaFileDefn.versionId); - registerMessage("1>info IM Namespace Id: " + DMDocument.masterPDSSchemaFileDefn.identifier); - registerMessage( + Utility.registerMessage("1>info DMDoc Version: " + DMDocVersionId); + Utility.registerMessage("1>info IM Version Id: " + DMDocument.masterPDSSchemaFileDefn.versionId); + Utility.registerMessage("1>info IM Namespace Id: " + DMDocument.masterPDSSchemaFileDefn.identifier); + Utility.registerMessage( "1>info IM Label Version Id: " + DMDocument.masterPDSSchemaFileDefn.labelVersionId); } else { - registerMessage("1>info LDDTOOL Version: " + LDDToolVersionId); - registerMessage("1>info IM Version Id: " + DMDocument.masterPDSSchemaFileDefn.versionId); - registerMessage("1>info IM Namespace Id: " + DMDocument.masterPDSSchemaFileDefn.identifier); - registerMessage( + Utility.registerMessage("1>info LDDTOOL Version: " + LDDToolVersionId); + Utility.registerMessage("1>info IM Version Id: " + DMDocument.masterPDSSchemaFileDefn.versionId); + Utility.registerMessage("1>info IM Namespace Id: " + DMDocument.masterPDSSchemaFileDefn.identifier); + Utility.registerMessage( "1>info IM Label Version Id: " + DMDocument.masterPDSSchemaFileDefn.labelVersionId); } - registerMessage("1>info Date: " + sTodaysDate); - registerMessage("1>info PARENT_DIR: " + parentDir); + Utility.registerMessage("1>info Date: " + sTodaysDate); + Utility.registerMessage("1>info PARENT_DIR: " + parentDir); // get the 11179 Attribute Dictionary - .pins file ProtPinsDOM11179DD lProtPinsDOM11179DD = new ProtPinsDOM11179DD(); @@ -544,7 +543,7 @@ public static void run(String[] args) throws Throwable { ExportModels lExportModels = new ExportModels(); lExportModels.writeAllArtifacts(); } - registerMessage("0>info Next UID: " + DOMInfoModel.getNextUId()); + Utility.registerMessage("0>info Next UID: " + DOMInfoModel.getNextUId()); printErrorMessages(); reset(); @@ -552,9 +551,11 @@ public static void run(String[] args) throws Throwable { /********************************************************************************************************** * local utilities + * + * @throws IOException ***********************************************************************************************************/ - static private void cleanupLDDInputFileName(SchemaFileDefn lSchemaFileDefn) { + static private void cleanupLDDInputFileName(SchemaFileDefn lSchemaFileDefn) throws IOException { String lSourceFileSpec = lSchemaFileDefn.sourceFileName; lSourceFileSpec = replaceString(lSourceFileSpec, "\\", "/"); // String lSourceFileSpecToLower = lSourceFileSpec.toLowerCase(); @@ -563,84 +564,62 @@ static private void cleanupLDDInputFileName(SchemaFileDefn lSchemaFileDefn) { lSchemaFileDefn.LDDToolOutputFileNameNE = null; // *** deprecate *** - if (!checkFileName(lSchemaFileDefn.LDDToolInputFileName)) { + if (!Utility.checkFileName(lSchemaFileDefn.LDDToolInputFileName)) { lSchemaFileDefn.LDDToolInputFileName = lSchemaFileDefn.LDDToolInputFileName.toLowerCase(); - if (!checkFileName(lSchemaFileDefn.LDDToolInputFileName)) { + if (!Utility.checkFileName(lSchemaFileDefn.LDDToolInputFileName)) { lSchemaFileDefn.LDDToolInputFileName = lSchemaFileDefn.LDDToolInputFileName.toUpperCase(); - if (!checkFileName(lSchemaFileDefn.LDDToolInputFileName)) { - registerMessage("3>error " + "Input file not found: " + lSchemaFileDefn.sourceFileName); + if (!Utility.checkFileName(lSchemaFileDefn.LDDToolInputFileName)) { + String msg = "Input file not found: " + lSchemaFileDefn.sourceFileName; + Utility.registerMessage("3>error " + msg); parser.printHelp(); printErrorMessages(); - System.exit(1); + throw new IOException(msg); } } } } - static public boolean checkCreateDirectory(String lDirectoryPathName) { - File file = new File(lDirectoryPathName); - if (file.exists() && file.isDirectory()) { - registerMessage("0>info Found directory: " + lDirectoryPathName); - return true; - } - // Create the directory - boolean bool = file.mkdir(); - if (bool) { - registerMessage("0>info Created directory: " + lDirectoryPathName); - return true; - } else { - registerMessage("1>error Directory create failed: " + lDirectoryPathName); - } - return false; - } - - static public boolean checkFileName(String inputFileName) { - File file = new File(inputFileName); - if (file.exists() && (file.isFile())) { - registerMessage("0>info Found input file: " + inputFileName); - return true; - } - registerMessage("1>error " + "Input file not found: " + inputFileName); - return false; - } - - static public void checkRequiredFiles() { + static public void checkRequiredFiles() throws IOException { // check that all the required data files exist File file = new File(dataDirPath + "UpperModel.pont"); boolean isFound = file.exists(); + String msg = ""; if (!isFound) { - registerMessage( - "3>error " + "Required data file was not found: " + dataDirPath + "UpperModel.pont"); + msg = "Required data file was not found: " + dataDirPath + "UpperModel.pont"; + Utility.registerMessage("3>error " + msg); printErrorMessages(); - System.exit(1); + throw new IOException(msg); } file = new File(dataDirPath + "dd11179.pins"); isFound = file.exists(); if (!isFound) { - registerMessage( - "3>error " + "Required data file was not found: " + dataDirPath + "dd11179.pins"); + msg = "Required data file was not found: " + dataDirPath + "dd11179.pins"; + Utility.registerMessage( + "3>error " + msg); printErrorMessages(); - System.exit(1); + throw new IOException(msg); } file = new File(dataDirPath + "Glossary.pins"); isFound = file.exists(); if (!isFound) { - registerMessage( - "3>error " + "Required data file was not found: " + dataDirPath + "Glossary.pins"); + msg = "Required data file was not found: " + dataDirPath + "Glossary.pins"; + Utility.registerMessage( + "3>error " + msg); printErrorMessages(); - System.exit(1); + throw new IOException(msg); } file = new File(dataDirPath + "DMDocument.pins"); isFound = file.exists(); if (!isFound) { - registerMessage( - "3>error " + "Required data file was not found: " + dataDirPath + "DMDocument.pins"); + msg = "Required data file was not found: " + dataDirPath + "DMDocument.pins"; + Utility.registerMessage( + "3>error " + msg); printErrorMessages(); - System.exit(1); + throw new IOException(msg); } } @@ -657,7 +636,6 @@ static private void init() { ddDocTeam = "TBD_ddDocTeam"; dataDirPath = "TBD_dataDirPath"; - outputDirPath = "./"; DMDocVersionId = "0.0.0"; @@ -866,7 +844,7 @@ static void setupNameSpaceInfoAll(Properties prop) { lSchemaFileDefn.setDictionaryType("Common"); } } else { - registerMessage("3>error Missing schema config item: " + isMasterKey); + Utility.registerMessage("3>error Missing schema config item: " + isMasterKey); } // default to the master values @@ -901,7 +879,7 @@ static void setupNameSpaceInfoAll(Properties prop) { lSchemaFileDefn.stewardArr.add(element); } } else { - registerMessage("3>error Missing schema config item: " + stewardArrKey); + Utility.registerMessage("3>error Missing schema config item: " + stewardArrKey); } String commentKey = SCHEMA_LITERAL + nameSpaceId + ".comment"; @@ -981,7 +959,7 @@ static void setupNameSpaceInfoAll(Properties prop) { } if (printNamespaceFlag || debugFlag) { - registerMessage("1>info Configured NameSpaceIds:" + lNamespaceIdArr); + Utility.registerMessage("1>info Configured NameSpaceIds:" + lNamespaceIdArr); } } @@ -1135,20 +1113,7 @@ static void setRegistryAttrFlag() { registryAttr.add("version_id"); } - static void registerMessage(String lMessage) { - DOMMsgDefn lMessageDefn = new DOMMsgDefn(lMessage); - mainMsgArr.add(lMessageDefn); - return; - } - - static void registerMessage(String lNameSpaceIdNCLC, String lMessage) { - DOMMsgDefn lMessageDefn = new DOMMsgDefn(lMessage); - lMessageDefn.nameSpaceIdNCLC = lNameSpaceIdNCLC; - mainMsgArr.add(lMessageDefn); - return; - } - - static Namespace getArgumentParserNamespace(String args[]) { + static Namespace getArgumentParserNamespace(String args[]) throws ArgumentParserException { parser = ArgumentParsers.newFor("LDDTool").build().defaultHelp(true).version(LDDToolVersionId) .description("LDDTool process control:"); @@ -1159,11 +1124,6 @@ static Namespace getArgumentParserNamespace(String args[]) { .action(Arguments.storeTrue()) .help("Process one or more local data dictionary input files"); - /* - * parser.addArgument("-map", "--map") .dest("map") .type(Boolean.class) .nargs(1) - * .action(Arguments.storeTrue()) .setDefault("false") .help("Map Tool Processing"); - */ - parser.addArgument("-d", "--discipline").dest("d").type(Boolean.class).nargs(1) .action(Arguments.storeTrue()) .help("Omit the term \"mission\" from the namespace of a dictionary"); @@ -1238,16 +1198,13 @@ static Namespace getArgumentParserNamespace(String args[]) { namespace = parser.parseArgs(args); } catch (HelpScreenException e) { System.out.println(">> INFO Exit(0)"); - // parser.handleError(e); - // e.printStackTrace(); - System.exit(0); + parser.printHelp(); + throw e; } catch (ArgumentParserException e) { System.out.println(">> ERROR Invalid argument list"); parser.printHelp(); System.out.println(">> INFO Exit(1)"); - // parser.handleError(e); - // e.printStackTrace(); - System.exit(1); + throw e; } return namespace; } @@ -1293,31 +1250,23 @@ static void processArgumentParserNamespacePhase2(Namespace ns) { System.out.println("Build Date: " + buildDate); System.out.println("Configured IM Versions: " + alternateIMVersionArr); System.out.println(" "); - System.exit(0); + return; } // validate the input arguments if (!PDSOptionalFlag) { - registerMessage("3>error " + "The -p option must be used for PDS4 processing"); + String msg = "The -p option must be used for PDS4 processing"; + Utility.registerMessage("3>error " + msg); parser.printHelp(); System.out.println(">> INFO Exit(1)"); - System.exit(1); + throw new IllegalArgumentException(msg); } - /* - * String mapFlag = ns.getBoolean("map"); if (mapFlag) { registerMessage - * ("1>info Tool processing"); dmProcessState.setmapToolFlag (); LDDToolFlag = false; - * mapToolFlag = true; PDSOptionalFlag = true; } - */ - /* - * Boolean tFlag = ns.getBoolean("t"); if (tFlag) { - * dmProcessState.setLDDToolAnnotateDefinitionFlag (); LDDToolAnnotateDefinitionFlag = true; } - */ Boolean MFlag = ns.getBoolean("M"); if (MFlag) { dmProcessState.setLDDToolMissionFlag(); LDDToolMissionFlag = true; - registerMessage("1>warning " + Utility.registerMessage("1>warning " + "The -M flag has been deprecated as of PDS4 IM Version 1.14.0.0. See the LDDTool User's Manual for more information on how to provide this information."); } Boolean mFlag = ns.getBoolean("m"); @@ -1335,11 +1284,6 @@ static void processArgumentParserNamespacePhase2(Namespace ns) { dmProcessState.setprintNamespaceFlag(); printNamespaceFlag = true; } - /* - * String aFlag = ns.getBoolean("a"); if (aFlag) { dmProcessState.setLDDAttrElementFlag (); // - * LDDAttrElementFlag = true; LDDAttrElementFlag = false; } - */ - Boolean dFlag = ns.getBoolean("d"); if (dFlag) { @@ -1382,10 +1326,6 @@ static void processArgumentParserNamespacePhase2(Namespace ns) { exportCustomFileFlag = true; } - /* - * Boolean fFlag = ns.getBoolean("f"); if (fFlag) { dmProcessState.setcheckFileNameFlag (); } - */ - // get the LDDIngest file names for (String fileName : ns.getList("fileNameArr")) { SchemaFileDefn lLDDSchemaFileDefn = new SchemaFileDefn(fileName); @@ -1396,7 +1336,6 @@ static void processArgumentParserNamespacePhase2(Namespace ns) { LDDSchemaFileSortArr.add(lLDDSchemaFileDefn); masterLDDSchemaFileDefn = lLDDSchemaFileDefn; // the last Ingest_LDD named is the master. } - return; } static void printErrorMessages() { @@ -1408,18 +1347,18 @@ static void printErrorMessages() { DOMMsgDefn lMainMsg = i.next(); // eliminate certain messages - if (nameSpaceIdExtrnFlagArr.contains(lMainMsg.nameSpaceIdNCLC)) { + if (nameSpaceIdExtrnFlagArr.contains(lMainMsg.getNameSpaceIdNCLC())) { continue; } // if debugFlag is false, skip debug messages // 0>info, 0>warning, 0>error if (!debugFlag) { - if ((lMainMsg.msgTypeLevel.substring(0, 2)).compareTo("0>") == 0) { + if ((lMainMsg.getMsgTypeLevel().substring(0, 2)).compareTo("0>") == 0) { continue; } } - String lMapID = lMainMsg.msgTypeLevel + "." + lMainMsg.msgOrder.toString(); + String lMapID = lMainMsg.getMsgTypeLevel() + "." + lMainMsg.getMsgOrder().toString(); lMainMsgMap.put(lMapID, lMainMsg); } @@ -1427,17 +1366,17 @@ static void printErrorMessages() { ArrayList lMainMsgArr = new ArrayList<>(lMainMsgMap.values()); for (Iterator i = lMainMsgArr.iterator(); i.hasNext();) { DOMMsgDefn lMainMsg = i.next(); - Integer lMessageCount = messageLevelCountMap.get(lMainMsg.msgTypeLevel); + Integer lMessageCount = messageLevelCountMap.get(lMainMsg.getMsgTypeLevel()); if (lMessageCount != null) { lMessageCount++; - messageLevelCountMap.put(lMainMsg.msgTypeLevel, lMessageCount); + messageLevelCountMap.put(lMainMsg.getMsgTypeLevel(), lMessageCount); } - if (lPreviousGroupTitle.compareTo(lMainMsg.msgGroupTitle) != 0) { - lPreviousGroupTitle = lMainMsg.msgGroupTitle; + if (lPreviousGroupTitle.compareTo(lMainMsg.getMsgGroupTitle()) != 0) { + lPreviousGroupTitle = lMainMsg.getMsgGroupTitle(); System.out.println(""); } - System.out.println(lMainMsg.msgPrefix + " " + lMainMsg.msgCleanText); + System.out.println(lMainMsg.getMsgPrefix() + " " + lMainMsg.getMsgCleanText()); } // print out the message counts @@ -1501,4 +1440,12 @@ static private void printOutputFileNames() { System.out.println(" - " + writtenFileName); } } + + public static String getOutputDirPath() { + return outputDirPath; + } + + public static void setOutputDirPath(String outputDirPath) { + DMDocument.outputDirPath = outputDirPath; + } } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DMProcessState.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DMProcessState.java index 9543a983..adea04fe 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DMProcessState.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DMProcessState.java @@ -34,6 +34,7 @@ import java.util.Iterator; import java.util.Set; import java.util.TreeMap; +import gov.nasa.pds.model.plugin.util.Utility; public class DMProcessState { @@ -445,7 +446,7 @@ public void setRelativeFileSpecDDCSV(SchemaFileDefn lSchemaFileDefn) { public void setRelativeFileSpecCCSDSCSV(SchemaFileDefn lSchemaFileDefn) { writtenFilesMap.put(lSchemaFileDefn.relativeFileSpecCCSDSCSV, 1120); if (lSchemaFileDefn.isLDD) { - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/CSV/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/CSV/"); } return; } @@ -465,7 +466,7 @@ public void setRelativeFileSpecReportTXT(SchemaFileDefn lSchemaFileDefn) { public void setRelativeFileSpecDDDocXML(SchemaFileDefn lSchemaFileDefn) { writtenFilesMap.put(lSchemaFileDefn.relativeFileSpecDDDocXML, 1150); if (lSchemaFileDefn.isLDD) { - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/DD/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/DD/"); } return; } @@ -485,7 +486,7 @@ public void setRelativeFileSpecDDProtPinsSN(SchemaFileDefn lSchemaFileDefn) { public void setRelativeFileSpecModelRDF(SchemaFileDefn lSchemaFileDefn) { writtenFilesMap.put(lSchemaFileDefn.relativeFileSpecModelRDF, 1190); if (lSchemaFileDefn.isLDD) { - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/rdf/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/rdf/"); } return; } @@ -493,7 +494,7 @@ public void setRelativeFileSpecModelRDF(SchemaFileDefn lSchemaFileDefn) { public void setRelativeFileSpecOWLRDF_DOM(SchemaFileDefn lSchemaFileDefn) { writtenFilesMap.put(lSchemaFileDefn.relativeFileSpecOWLRDF_DOM, 1210); if (lSchemaFileDefn.isLDD) { - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/owl/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/owl/"); } return; } @@ -501,7 +502,7 @@ public void setRelativeFileSpecOWLRDF_DOM(SchemaFileDefn lSchemaFileDefn) { public void setRelativeFileSpecSKOSTTL_DOM(SchemaFileDefn lSchemaFileDefn) { writtenFilesMap.put(lSchemaFileDefn.relativeFileSpecSKOSTTL_DOM, 1230); if (lSchemaFileDefn.isLDD) { - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/skos/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/skos/"); } return; } @@ -509,7 +510,7 @@ public void setRelativeFileSpecSKOSTTL_DOM(SchemaFileDefn lSchemaFileDefn) { public void setRelativeFileSpecOWLRDFTTL(SchemaFileDefn lSchemaFileDefn) { writtenFilesMap.put(lSchemaFileDefn.relativeFileSpecOWLRDF_DOM, 1231); if (lSchemaFileDefn.isLDD) { - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/owl/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/owl/"); } return; } @@ -517,7 +518,7 @@ public void setRelativeFileSpecOWLRDFTTL(SchemaFileDefn lSchemaFileDefn) { public void setRelativeFileSpecOWLRDF(SchemaFileDefn lSchemaFileDefn) { writtenFilesMap.put(lSchemaFileDefn.relativeFileSpecOWLRDF_DOM, 1232); if (lSchemaFileDefn.isLDD) { - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/owl/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/owl/"); } return; } @@ -525,7 +526,7 @@ public void setRelativeFileSpecOWLRDF(SchemaFileDefn lSchemaFileDefn) { public void setRelativeFileSpecUMLXMI(SchemaFileDefn lSchemaFileDefn) { writtenFilesMap.put(lSchemaFileDefn.relativeFileSpecUMLXMI, 1240); if (lSchemaFileDefn.isLDD) { - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/xmi/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/xmi/"); } return; } @@ -533,7 +534,7 @@ public void setRelativeFileSpecUMLXMI(SchemaFileDefn lSchemaFileDefn) { public void setRelativeFileSpecUMLXMI2(SchemaFileDefn lSchemaFileDefn) { writtenFilesMap.put(lSchemaFileDefn.relativeFileSpecUMLXMI2, 1250); if (lSchemaFileDefn.isLDD) { - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/xmi/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/xmi/"); } return; } @@ -541,7 +542,7 @@ public void setRelativeFileSpecUMLXMI2(SchemaFileDefn lSchemaFileDefn) { public void setRelativeFileSpecAttrDefn(SchemaFileDefn lSchemaFileDefn) { writtenFilesMap.put(lSchemaFileDefn.relativeFileSpecAttrDefn, 1300); if (lSchemaFileDefn.isLDD) { - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/defnAttr/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/defnAttr/"); } return; } @@ -549,7 +550,7 @@ public void setRelativeFileSpecAttrDefn(SchemaFileDefn lSchemaFileDefn) { public void setRelativeFileSpecClassDefn(SchemaFileDefn lSchemaFileDefn) { writtenFilesMap.put(lSchemaFileDefn.relativeFileSpecClassDefn, 1310); if (lSchemaFileDefn.isLDD) { - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/defnClass/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/defnClass/"); } return; } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMAttr.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMAttr.java index e39cc5a0..1052dc27 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMAttr.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMAttr.java @@ -34,6 +34,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.TreeMap; +import gov.nasa.pds.model.plugin.util.Utility; public class DOMAttr extends ISOClassOAIS11179 { String sort_identifier; // lAttr.title + "_" + lAttr.steward + "_" + lAttr.className + "_" + @@ -256,7 +257,7 @@ public void InitStringArr(ArrayList lDomStrArr, ArrayList lPDSSt if (lOldStr != null) { lDomStrArr.add(lOldStr); } else { - DMDocument.registerMessage("1>error " + "InitStringArr - Null DomStr"); + Utility.registerMessage("1>error " + "InitStringArr - Null DomStr"); } } } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMMsgDefn.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMMsgDefn.java index 5cbdee0a..fd54bdfd 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMMsgDefn.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMMsgDefn.java @@ -42,13 +42,13 @@ public class DOMMsgDefn extends Object { static TreeMap messageLevelTitleMap = new TreeMap<>(); static TreeMap messagePrefixMap = new TreeMap<>(); - Integer msgOrder; - String msgTypeLevel; - String msgPrefix; - String msgOrgText; - String msgCleanText; - String msgGroupTitle; - String nameSpaceIdNCLC; + private Integer msgOrder; + private String msgTypeLevel; + private String msgPrefix; + private String msgOrgText; + private String msgCleanText; + private String msgGroupTitle; + private String nameSpaceIdNCLC; public DOMMsgDefn() { // messageLevelArr is initialized (init()) when masterDOMMsgDefn is created in DMDocument @@ -142,4 +142,84 @@ static void init() { messageLevelArr.add("3>error"); messageLevelArr.add("4>error"); } + + public static ArrayList getMessageLevelArr() { + return messageLevelArr; + } + + public static void setMessageLevelArr(ArrayList messageLevelArr) { + DOMMsgDefn.messageLevelArr = messageLevelArr; + } + + public static TreeMap getMessageLevelTitleMap() { + return messageLevelTitleMap; + } + + public static void setMessageLevelTitleMap(TreeMap messageLevelTitleMap) { + DOMMsgDefn.messageLevelTitleMap = messageLevelTitleMap; + } + + public static TreeMap getMessagePrefixMap() { + return messagePrefixMap; + } + + public static void setMessagePrefixMap(TreeMap messagePrefixMap) { + DOMMsgDefn.messagePrefixMap = messagePrefixMap; + } + + public Integer getMsgOrder() { + return msgOrder; + } + + public void setMsgOrder(Integer msgOrder) { + this.msgOrder = msgOrder; + } + + public String getMsgTypeLevel() { + return msgTypeLevel; + } + + public void setMsgTypeLevel(String msgTypeLevel) { + this.msgTypeLevel = msgTypeLevel; + } + + public String getMsgPrefix() { + return msgPrefix; + } + + public void setMsgPrefix(String msgPrefix) { + this.msgPrefix = msgPrefix; + } + + public String getMsgOrgText() { + return msgOrgText; + } + + public void setMsgOrgText(String msgOrgText) { + this.msgOrgText = msgOrgText; + } + + public String getMsgCleanText() { + return msgCleanText; + } + + public void setMsgCleanText(String msgCleanText) { + this.msgCleanText = msgCleanText; + } + + public String getMsgGroupTitle() { + return msgGroupTitle; + } + + public void setMsgGroupTitle(String msgGroupTitle) { + this.msgGroupTitle = msgGroupTitle; + } + + public String getNameSpaceIdNCLC() { + return nameSpaceIdNCLC; + } + + public void setNameSpaceIdNCLC(String nameSpaceIdNCLC) { + this.nameSpaceIdNCLC = nameSpaceIdNCLC; + } } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMProp.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMProp.java index 53f1f578..834cef37 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMProp.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMProp.java @@ -31,6 +31,7 @@ package gov.nasa.pds.model.plugin; import java.util.ArrayList; +import gov.nasa.pds.model.plugin.util.Utility; public class DOMProp extends ISOClassOAIS11179 { @@ -122,7 +123,7 @@ public void setCardMinMax(String lCardMin, String lCardMax) { } catch (NumberFormatException e) { cardMinI = 0; cardMin = "0"; - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "DomProp " + " - Minimum cardinality is invalid: " + lCardMin); } } @@ -138,12 +139,12 @@ public void setCardMinMax(String lCardMin, String lCardMax) { } catch (NumberFormatException e) { cardMaxI = 0; cardMax = "0"; - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "DomProp " + " - Maximum cardinality is invalid: " + lCardMax); } } if (cardMaxI < cardMinI) { - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "DomProp " + " - Maximum cardinality is less than minimum cardinality"); } } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMProtAttr.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMProtAttr.java index 4deb41b1..7608bbe9 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMProtAttr.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/DOMProtAttr.java @@ -33,6 +33,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; +import gov.nasa.pds.model.plugin.util.Utility; public class DOMProtAttr extends ISOClassOAIS11179 { String sort_identifier; // lAttr.title + "_" + lAttr.steward + "_" + lAttr.className + "_" + @@ -169,7 +170,7 @@ public void InitStringArr(ArrayList lDomStrArr, ArrayList lPDSSt if (lOldStr != null) { lDomStrArr.add(lOldStr); } else { - DMDocument.registerMessage("1>error " + "InitStringArr - Null DomStr"); + Utility.registerMessage("1>error " + "InitStringArr - Null DomStr"); } } } @@ -208,10 +209,10 @@ public ArrayList convertToDOMPropCompArr() { lDomPropComp.domComp = lClassMember; lDomPropCompArr.add(lDomPropComp); } else { - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "Could not find the class referenced in an association - identifier:" + this.identifier + " Class:" + lClassTitle); - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "Could not find the class referenced in an association - identifier:" + this.identifier + " lClassMemberIdentifier:" + lClassMemberIdentifier); } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ExportModels.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ExportModels.java index c1a8188c..9c8cad46 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ExportModels.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ExportModels.java @@ -33,9 +33,9 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.TreeMap; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import gov.nasa.pds.model.plugin.util.Utility; /** * Driver for getting document @@ -54,20 +54,20 @@ public ExportModels() { public void writeAllArtifacts() throws java.io.IOException { // check if the export/ directory exists; if not create it - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/"); // write the model specification DMDocument.dmProcessState.setRelativeFileSpecModelSpec_DOM(DMDocument.masterPDSSchemaFileDefn); WriteDOMSpecification writeDOMSpecification = new WriteDOMSpecification(DMDocument.docInfo); writeDOMSpecification.printArtifacts(); - DMDocument.registerMessage("0>info " + "writeAllArtifacts - Specification Done"); + Utility.registerMessage("0>info " + "writeAllArtifacts - Specification Done"); // write the label schema - new version 4 DMDocument.dmProcessState.setRelativeFileSpecXMLSchema(DMDocument.masterPDSSchemaFileDefn); XML4LabelSchemaDOM xml4LabelSchemaDOM = new XML4LabelSchemaDOM(); xml4LabelSchemaDOM.writeXMLSchemaFiles(DMDocument.masterPDSSchemaFileDefn, DOMInfoModel.masterDOMClassArr); - DMDocument + Utility .registerMessage("0>info " + "writeAllArtifacts - XML Schema - lSchemaFileDefn.identifier:" + DMDocument.masterPDSSchemaFileDefn.identifier + " - Done"); @@ -76,7 +76,7 @@ public void writeAllArtifacts() throws java.io.IOException { WriteDOMSchematron writeDOMSchematron = new WriteDOMSchematron(); writeDOMSchematron.writeSchematronFile(DMDocument.masterPDSSchemaFileDefn, DOMInfoModel.masterDOMClassMap); - DMDocument + Utility .registerMessage("0>info " + "writeAllArtifacts - Schematron - lSchemaFileDefn.identifier:" + DMDocument.masterPDSSchemaFileDefn.identifier + " - Done"); @@ -84,7 +84,7 @@ public void writeAllArtifacts() throws java.io.IOException { DMDocument.dmProcessState.setRelativeFileSpecXMLLabel(DMDocument.masterPDSSchemaFileDefn); WriteCoreXMLSchemaLabel writeCoreXMLSchemaLabel = new WriteCoreXMLSchemaLabel(); writeCoreXMLSchemaLabel.writeFile(DMDocument.masterPDSSchemaFileDefn); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + "writeAllArtifacts - Schema Label - lSchemaFileDefn.identifier:" + DMDocument.masterPDSSchemaFileDefn.identifier + " - Done"); @@ -92,7 +92,7 @@ public void writeAllArtifacts() throws java.io.IOException { DMDocument.dmProcessState.setRelativeFileSpecDDDocXML(DMDocument.masterPDSSchemaFileDefn); WriteDOMDocBook lWriteDOMDocBook = new WriteDOMDocBook(); lWriteDOMDocBook.writeDocBook(DMDocument.masterPDSSchemaFileDefn); - DMDocument.registerMessage("0>info " + "writeAllArtifacts - DD DocBook Done"); + Utility.registerMessage("0>info " + "writeAllArtifacts - DD DocBook Done"); // write the custom files if (DMDocument.exportCustomFileFlag) { @@ -104,21 +104,13 @@ public void writeAllArtifacts() throws java.io.IOException { // write the DOM RDF WriteDOM11179DDRDFFile writeDOM11179DDRDFFile = new WriteDOM11179DDRDFFile(); writeDOM11179DDRDFFile.printISO11179DDRDF(DMDocument.sTodaysDate); - DMDocument.registerMessage("0>info " + "writeAllArtifacts - RDF Done"); + Utility.registerMessage("0>info " + "writeAllArtifacts - RDF Done"); // write the DOM PDS4 DD CSV file WriteDOMCSVFiles writeDOMCSVFiles = new WriteDOMCSVFiles(); ArrayList domSortClassArr = new ArrayList<>(DOMInfoModel.masterDOMClassMap.values()); writeDOMCSVFiles.writeDOMCSVFile(domSortClassArr, DMDocument.masterPDSSchemaFileDefn, null); - DMDocument.registerMessage("0>info " + "writeAllArtifacts - DD CSV Done"); - - // write the 11179 DD pins file - // WriteDOM11179DDPinsFile lWriteDOM11179DDPinsFile = new WriteDOM11179DDPinsFile (); - // lWriteDOM11179DDPinsFile.writePINSFile - // (DMDocument.masterPDSSchemaFileDefn.relativeFileSpecDDProtPins); - // lWriteDOM11179DDPinsFile.writePINSFile - // (DMDocument.masterPDSSchemaFileDefn.relativeFileSpecDDProtPinsSN); - // DMDocument.registerMessage ("0>info " + "writeAllArtifacts - DD Pins File Done"); + Utility.registerMessage("0>info " + "writeAllArtifacts - DD CSV Done"); // write the 11179 DD pins file - Plus Class Version WriteDOM11179DDPinsFilePClass lWriteDOM11179DDPinsFilePClass = @@ -127,25 +119,19 @@ public void writeAllArtifacts() throws java.io.IOException { .writePINSFile(DMDocument.masterPDSSchemaFileDefn.relativeFileSpecDDProtPins); lWriteDOM11179DDPinsFilePClass .writePINSFile(DMDocument.masterPDSSchemaFileDefn.relativeFileSpecDDProtPinsSN); - DMDocument + Utility .registerMessage("0>info " + "writeAllArtifacts - DD Pins *** plus class *** File Done"); - - // write the 11179 DOM JSON file - requires DOMInfoModel to be executed -// DMDocument.dmProcessState.setRelativeFileSpecDOMModelJSON(DMDocument.masterPDSSchemaFileDefn); -// WriteDOMDDJSONFile writeDOMDDJSONFile = new WriteDOMDDJSONFile(); -// writeDOMDDJSONFile.writeJSONFile(); -// DMDocument.registerMessage("0>info " + "writeAllArtifacts - JSON Done"); // write the 11179 DOM JSON file - requires DOMInfoModel to be executed DMDocument.dmProcessState.setRelativeFileSpecDOMModelJSON(DMDocument.masterPDSSchemaFileDefn); WriteDOMDDJSONFileLib writeDOMDDJSONFileLib = new WriteDOMDDJSONFileLib(); writeDOMDDJSONFileLib.writeJSONFile(DMDocument.masterPDSSchemaFileDefn); - DMDocument.registerMessage("0>info " + "writeAllArtifacts - JSON Done"); + Utility.registerMessage("0>info " + "writeAllArtifacts - JSON Done"); // write the 11179 DD Data Element Definition XML Files - DMDocument.registerMessage("0>info " + "writeAllArtifacts - Class Defn Done"); - DMDocument.registerMessage("0>info " + "writeAllArtifacts - Attr Defn Done"); + Utility.registerMessage("0>info " + "writeAllArtifacts - Class Defn Done"); + Utility.registerMessage("0>info " + "writeAllArtifacts - Attr Defn Done"); // write the 11179 DOM DD Data Element Definition XML Files WriteDDProductDOMAttrDefinitions writeDDProductDOMAttrDefinitions = @@ -158,22 +144,19 @@ public void writeAllArtifacts() throws java.io.IOException { new WriteDDProductDOMClassDefinitions(); writeDDProductDOMClassDefinitions.writeDDProductDOMClassDefnFiles( DMDocument.masterPDSSchemaFileDefn, DMDocument.sTodaysDate); - DMDocument.registerMessage("0>info " + "writeAllDOMArtifacts - DOM Class Defn Done"); - DMDocument.registerMessage("0>info " + "writeAllDOMArtifacts - DOM Attr Defn Done"); + Utility.registerMessage("0>info " + "writeAllDOMArtifacts - DOM Class Defn Done"); + Utility.registerMessage("0>info " + "writeAllDOMArtifacts - DOM Attr Defn Done"); // write the OWL/RDF/TTL output in TTL format (IM Classification) if (DMDocument.exportOWLRDFTTLFileFlag) { String lClassificationType = "TBD_default"; // default lClassificationType = ""; // default lClassificationType = "PDS4.All.Products.Class.Prop"; // works - // lClassificationType = "EIMEntity"; // works - // lClassificationType = "PDS4.LDD.All"; - // lClassificationType = "OAISIF"; ClassAttrPropClassification lCAPC = new ClassAttrPropClassification (lClassificationType); DMDocument.dmProcessState.setRelativeFileSpecOWLRDFTTL (DMDocument.masterPDSSchemaFileDefn); WriteDOMRDFTTLFile writeDOMRDFTTLFile = new WriteDOMRDFTTLFile (); writeDOMRDFTTLFile.writeDOMRDFTTLFile (lClassificationType, lCAPC); - DMDocument.registerMessage ("0>info " + "ExportModels - OWL/RDF/TTL output in TTL format (IM Classification) - Done"); + Utility.registerMessage ("0>info " + "ExportModels - OWL/RDF/TTL output in TTL format (IM Classification) - Done"); } // write the OWL/RDF output in RDF format (IM Export) @@ -181,7 +164,7 @@ public void writeAllArtifacts() throws java.io.IOException { DMDocument.dmProcessState.setRelativeFileSpecOWLRDFTTL (DMDocument.masterPDSSchemaFileDefn); WriteDOMRDFOWLFile writeDOMRDFOWLFile = new WriteDOMRDFOWLFile (); writeDOMRDFOWLFile.writeOWLFile (DMDocument.masterPDSSchemaFileDefn); - DMDocument.registerMessage ("0>info " + "ExportModels - OWL/RDF output in RDF format (IM Export) - Done"); + Utility.registerMessage ("0>info " + "ExportModels - OWL/RDF output in RDF format (IM Export) - Done"); } return; @@ -189,7 +172,7 @@ public void writeAllArtifacts() throws java.io.IOException { public void writeLDDArtifacts() throws java.io.IOException { // check if the export directory exists; if not create it - DMDocument.checkCreateDirectory(DMDocument.outputDirPath + "export/"); + Utility.checkCreateDirectory(DMDocument.getOutputDirPath() + "export/"); // DOM ArrayList lLDDDOMClassArr = new ArrayList<>(); @@ -212,7 +195,7 @@ public void writeLDDArtifacts() throws java.io.IOException { DMDocument.dmProcessState.setRelativeFileSpecDDDocXML(DMDocument.masterLDDSchemaFileDefn); WriteDOMDocBook lWriteDOMDocBook = new WriteDOMDocBook(); lWriteDOMDocBook.writeDocBook(DMDocument.masterPDSSchemaFileDefn); - DMDocument.registerMessage("0>info " + "writeLDDArtifacts - DD DocBook Done"); + Utility.registerMessage("0>info " + "writeLDDArtifacts - DD DocBook Done"); } // write the custom files @@ -226,7 +209,7 @@ public void writeLDDArtifacts() throws java.io.IOException { DMDocument.dmProcessState.setRelativeFileSpecXMLSchema(DMDocument.masterLDDSchemaFileDefn); XML4LabelSchemaDOM xml4LabelSchemaDOM = new XML4LabelSchemaDOM(); xml4LabelSchemaDOM.writeXMLSchemaFiles(DMDocument.masterLDDSchemaFileDefn, lLDDDOMClassArr); - DMDocument + Utility .registerMessage("0>info " + "writeLDDArtifacts - XML Schema - lSchemaFileDefn.identifier:" + DMDocument.masterLDDSchemaFileDefn.identifier + " - Done"); @@ -234,7 +217,7 @@ public void writeLDDArtifacts() throws java.io.IOException { DMDocument.dmProcessState.setRelativeFileSpecSchematron(DMDocument.masterLDDSchemaFileDefn); WriteDOMSchematron writeDOMSchematron = new WriteDOMSchematron(); writeDOMSchematron.writeSchematronFile(DMDocument.masterLDDSchemaFileDefn, lLDDDOMClassMap); - DMDocument + Utility .registerMessage("0>info " + "writeLDDArtifacts - Schematron - lSchemaFileDefn.identifier:" + DMDocument.masterLDDSchemaFileDefn.identifier + " - Done"); @@ -242,24 +225,16 @@ public void writeLDDArtifacts() throws java.io.IOException { DMDocument.dmProcessState.setRelativeFileSpecXMLLabel(DMDocument.masterLDDSchemaFileDefn); WriteCoreXMLSchemaLabel writeCoreXMLSchemaLabel = new WriteCoreXMLSchemaLabel(); writeCoreXMLSchemaLabel.writeFile(DMDocument.masterLDDSchemaFileDefn); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + "writeAllArtifacts - Schema Label - lSchemaFileDefn.identifier:" + DMDocument.masterLDDSchemaFileDefn.identifier + " - Done"); - - // write the 11179 JSON file -// if (DMDocument.exportJSONFileFlag || DMDocument.exportJSONFileAllFlag) { -// DMDocument.dmProcessState.setRelativeFileSpecDOMModelJSON(DMDocument.masterLDDSchemaFileDefn); -// WriteDOMDDJSONFile writeDOMDDJSONFile = new WriteDOMDDJSONFile(); -// writeDOMDDJSONFile.writeJSONFile(); -// DMDocument.registerMessage("0>info " + "writeAllArtifacts - JSON Done"); -// } // write the 11179 DOM JSON file if (DMDocument.exportJSONFileFlag) { DMDocument.dmProcessState.setRelativeFileSpecDOMModelJSON(DMDocument.masterPDSSchemaFileDefn); WriteDOMDDJSONFileLib writeDOMDDJSONFileLib = new WriteDOMDDJSONFileLib(); writeDOMDDJSONFileLib.writeJSONFile(DMDocument.masterPDSSchemaFileDefn); - DMDocument.registerMessage("0>info " + "writeLDDArtifacts - JSON Done"); + Utility.registerMessage("0>info " + "writeLDDArtifacts - JSON Done"); } // write the Info Spec file @@ -268,7 +243,7 @@ public void writeLDDArtifacts() throws java.io.IOException { .setRelativeFileSpecModelSpec_DOM(DMDocument.masterLDDSchemaFileDefn); WriteDOMSpecification writeDOMSpecification = new WriteDOMSpecification(DMDocument.docInfo); writeDOMSpecification.printArtifacts(); - DMDocument.registerMessage("0>info " + "writeLDDArtifacts - Info Model Spec Done"); + Utility.registerMessage("0>info " + "writeLDDArtifacts - Info Model Spec Done"); } // write the OWL/RDF/TTL output in TTL format (IM Classification) @@ -281,7 +256,7 @@ public void writeLDDArtifacts() throws java.io.IOException { ClassAttrPropClassification lCAPC = new ClassAttrPropClassification (lClassificationType); WriteDOMRDFTTLFile writeDOMRDFTTLFile = new WriteDOMRDFTTLFile (); writeDOMRDFTTLFile.writeDOMRDFTTLFile (lClassificationType, lCAPC); - DMDocument.registerMessage ("0>info " + "ExportModels - OWL/RDF/TTL output in TTL format (IM Classification) - Done"); + Utility.registerMessage ("0>info " + "ExportModels - OWL/RDF/TTL output in TTL format (IM Classification) - Done"); } // write the OWL/RDF output in RDF format (IM Export) @@ -289,7 +264,7 @@ public void writeLDDArtifacts() throws java.io.IOException { DMDocument.dmProcessState.setRelativeFileSpecOWLRDFTTL (DMDocument.masterLDDSchemaFileDefn); WriteDOMRDFOWLFile writeDOMRDFOWLFile = new WriteDOMRDFOWLFile (); writeDOMRDFOWLFile.writeOWLFile (DMDocument.masterLDDSchemaFileDefn); - DMDocument.registerMessage ("0>info " + "ExportModels - OWL/RDF output in RDF format (IM Export) - Done"); + Utility.registerMessage ("0>info " + "ExportModels - OWL/RDF output in RDF format (IM Export) - Done"); } // *** To be deprecated *** @@ -298,7 +273,7 @@ public void writeLDDArtifacts() throws java.io.IOException { // write the terminological entry files WriteDOMTermEntryJSON writeDOMTermEntryJSON = new WriteDOMTermEntryJSON (); writeDOMTermEntryJSON.WriteDOMTermEntries (DMDocument.masterPDSSchemaFileDefn); - DMDocument.registerMessage ("0>info " + "WriteDOMTermEntryJSON - Done"); + Utility.registerMessage ("0>info " + "WriteDOMTermEntryJSON - Done"); } return; diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ExportModelsCustom.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ExportModelsCustom.java index 35aeac5f..504f2b6c 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ExportModelsCustom.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ExportModelsCustom.java @@ -31,6 +31,7 @@ package gov.nasa.pds.model.plugin; import java.util.*; +import gov.nasa.pds.model.plugin.util.Utility; /** Driver for Customized Document Writers * @@ -46,7 +47,7 @@ public ExportModelsCustom () { ***********************************************************************************************************/ public void writeArtifacts (boolean lLDDToolFlag, SchemaFileDefn lSchemaFileDefn) throws java.io.IOException { - DMDocument.registerMessage ("0>info " + "ExportModelsCustom - Specification Done"); + Utility.registerMessage ("0>info " + "ExportModelsCustom - Specification Done"); // need to pass SchemaFileDefn to get namespace; set static for now. // SchemaFileDefn lSchemaFileDefn; @@ -61,7 +62,7 @@ public void writeArtifacts (boolean lLDDToolFlag, SchemaFileDefn lSchemaFileDefn DMDocument.dmProcessState.setRelativeFileSpecDDDocXML (DMDocument.masterLDDSchemaFileDefn); WriteDOMDocBookAnon lWriteDOMDocBooks = new WriteDOMDocBookAnon (); lWriteDOMDocBooks.writeDocBooks(DMDocument.masterPDSSchemaFileDefn); - DMDocument.registerMessage ("0>info " + "writeLDDArtifacts - DD DocBooks - One Per LDD - Done"); + Utility.registerMessage ("0>info " + "writeLDDArtifacts - DD DocBooks - One Per LDD - Done"); } } @@ -94,7 +95,7 @@ public void writeArtifacts (boolean lLDDToolFlag, SchemaFileDefn lSchemaFileDefn ArrayList domSortClassArr = new ArrayList<>(DOMInfoModel.masterDOMClassMap.values()); WriteDOMCSVFileClassHier writeDOMCSVFileClassHier = new WriteDOMCSVFileClassHier (); writeDOMCSVFileClassHier.writeDOMCSVFile (domSortClassArr, DMDocument.masterPDSSchemaFileDefn, null); - DMDocument.registerMessage ("0>info " + "writeAllArtifacts - WriteDOMCSVFileClassHier Done"); + Utility.registerMessage ("0>info " + "writeAllArtifacts - WriteDOMCSVFileClassHier Done"); // print out the histogram for the DEC concepts /* diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GenDOMRules.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GenDOMRules.java index 532fb320..ea4939f5 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GenDOMRules.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GenDOMRules.java @@ -34,6 +34,7 @@ import java.util.Arrays; import java.util.Iterator; import java.util.TreeMap; +import gov.nasa.pds.model.plugin.util.Utility; class GenDOMRules extends Object { TreeMap lUnitIdDeprecatedMap = new TreeMap (); @@ -808,7 +809,7 @@ private void findChildrenOfAssociatedExternalClass() { parentChildrenRelationMap.put(lDOMClass.identifier, lParentChildrenRelation); lParentClassIdArr.add(lDOMClass.identifier); } else { - DMDocument.registerMessage("1>error " + Utility.registerMessage("1>error " + "Duplicate Found - Adding Extern Class to parentChildrenRelationMap - lDOMClass.identifier:" + lDOMClass.identifier); } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GetDOMModel.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GetDOMModel.java index ab791b35..cc79ab51 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GetDOMModel.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GetDOMModel.java @@ -35,6 +35,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Set; +import gov.nasa.pds.model.plugin.util.Utility; public class GetDOMModel extends Object { @@ -76,7 +77,7 @@ public void getDOMModel(String docFileName) throws Throwable { if (!DOMInfoModel.masterDOMClassMap.containsKey(lClass.rdfIdentifier)) { DOMInfoModel.masterDOMClassMap.put(lClass.rdfIdentifier, lClass); } else { - DMDocument.registerMessage("1>error " + Utility.registerMessage("1>error " + "Duplicate Found - ADDING DOM class lClass.rdfIdentifier:" + lClass.rdfIdentifier); } } @@ -117,7 +118,7 @@ public void getDOMModel(String docFileName) throws Throwable { lClass.ownedAttrArr.add(lDOMProp); lDOMProp.attrParentClass = lClass; } else { - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "Duplicate Found - ADDING Attribute Property lDOMProp.rdfIdentifier:" + lDOMProp.rdfIdentifier); } @@ -132,7 +133,7 @@ public void getDOMModel(String docFileName) throws Throwable { lDOMProp.isInactive = lClass.isInactive; lDOMAttr.isInactive = lClass.isInactive; } else { - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "Duplicate Found - ADDING Attribute lDOMAttr.rdfIdentifier:" + lDOMAttr.rdfIdentifier); } @@ -153,7 +154,7 @@ public void getDOMModel(String docFileName) throws Throwable { lClass.ownedAssocArr.add(lDOMProp); lDOMProp.attrParentClass = lClass; } else { - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "Duplicate Found - ADDING Class Property lDOMProp.rdfIdentifier:" + lDOMProp.rdfIdentifier); } @@ -168,7 +169,7 @@ public void getDOMModel(String docFileName) throws Throwable { lDOMProp.isInactive = lClass.isInactive; } else { - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "Class not found - ADDING Class lDOMClass.rdfIdentifier:" + lDOMClass.rdfIdentifier); } @@ -197,7 +198,7 @@ public void getDOMModel(String docFileName) throws Throwable { // Discipline_Area, and Mission_Area if (DMDocument.LDDToolSingletonClassTitle.compareTo("USER") == 0) { DMDocument.LDDToolSingletonDOMClass = DOMInfoModel.masterDOMUserClass; - DMDocument.registerMessage("0>info " + Utility.registerMessage("0>info " + "getMasterObjectDict - Set LDDToolSingletonClass - DMDocument.LDDToolSingletonDOMClass.title:" + DMDocument.LDDToolSingletonDOMClass.title); } else { @@ -206,11 +207,11 @@ public void getDOMModel(String docFileName) throws Throwable { DOMClass lLDDToolSingletonClass = DOMInfoModel.masterDOMClassIdMap.get(lClassId); if (lLDDToolSingletonClass != null) { DMDocument.LDDToolSingletonDOMClass = lLDDToolSingletonClass; - DMDocument.registerMessage("0>info " + Utility.registerMessage("0>info " + "getMasterObjectDict - Found LDDToolSingletonClass - DMDocument.LDDToolSingletonDOMClass.title:" + DMDocument.LDDToolSingletonDOMClass.title); } else { - DMDocument.registerMessage("1>error " + Utility.registerMessage("1>error " + "getMasterObjectDict - Could not find LDDToolSingletonClass - lClassId:" + lClassId); } } @@ -472,78 +473,78 @@ public void getDOMModel(String docFileName) throws Throwable { } if (DMDocument.debugFlag) { - DMDocument.registerMessage("0>info "); - DMDocument.registerMessage("0>info " + "Active Namespace Ids:"); + Utility.registerMessage("0>info "); + Utility.registerMessage("0>info " + "Active Namespace Ids:"); for (Iterator i = lNameSpaceHasMemberArr.iterator(); i.hasNext();) { String lNameSpaceId = i.next(); - DMDocument.registerMessage("0>info " + " - namespace_id:" + lNameSpaceId); + Utility.registerMessage("0>info " + " - namespace_id:" + lNameSpaceId); } - DMDocument.registerMessage("0>info "); - DMDocument.registerMessage("0>info " + "Master DOM Structures Initiated"); - DMDocument.registerMessage( + Utility.registerMessage("0>info "); + Utility.registerMessage("0>info " + "Master DOM Structures Initiated"); + Utility.registerMessage( "0>info " + "Master Class Map Sizes - DOMInfoModel.masterDOMClassMap.size():" + DOMInfoModel.masterDOMClassMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMClassIdMap.size():" + DOMInfoModel.masterDOMClassIdMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMClassArr.size():" + DOMInfoModel.masterDOMClassArr.size()); - DMDocument.registerMessage("0>info "); - DMDocument.registerMessage( + Utility.registerMessage("0>info "); + Utility.registerMessage( "0>info " + "Master Property Map Sizes - DOMInfoModel.masterDOMPropMap.size():" + DOMInfoModel.masterDOMPropMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMPropIdMap.size():" + DOMInfoModel.masterDOMPropIdMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMPropArr.size():" + DOMInfoModel.masterDOMPropArr.size()); - DMDocument.registerMessage("0>info "); - DMDocument.registerMessage( + Utility.registerMessage("0>info "); + Utility.registerMessage( "0>info " + "Master Attribute Map Sizes - DOMInfoModel.masterDOMAttrMap.size():" + DOMInfoModel.masterDOMAttrMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMAttrIdMap.size():" + DOMInfoModel.masterDOMAttrIdMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMAttrArr.size():" + DOMInfoModel.masterDOMAttrArr.size()); - DMDocument.registerMessage("0>info "); - DMDocument.registerMessage( + Utility.registerMessage("0>info "); + Utility.registerMessage( "0>info " + "Master Rule Map Sizes - DOMInfoModel.masterDOMRuleMap.size():" + DOMInfoModel.masterDOMRuleMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMRuleIdMap.size():" + DOMInfoModel.masterDOMRuleIdMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMRuleArr.size():" + DOMInfoModel.masterDOMRuleArr.size()); - DMDocument.registerMessage("0>info "); - DMDocument.registerMessage( + Utility.registerMessage("0>info "); + Utility.registerMessage( "0>info " + "Master Data Type Sizes - DOMInfoModel.masterDOMDataTypeMap.size():" + DOMInfoModel.masterDOMDataTypeMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMDataTypeTitleMap.size():" + DOMInfoModel.masterDOMDataTypeTitleMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMDataTypeArr.size():" + DOMInfoModel.masterDOMDataTypeArr.size()); - DMDocument.registerMessage("0>info "); - DMDocument.registerMessage( + Utility.registerMessage("0>info "); + Utility.registerMessage( "0>info " + "Master Unit Sizes - DOMInfoModel.masterDOMUnitMap.size():" + DOMInfoModel.masterDOMUnitMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMUnitTitleMap.size():" + DOMInfoModel.masterDOMUnitTitleMap.size()); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + " - DOMInfoModel.masterDOMUnitArr.size():" + DOMInfoModel.masterDOMUnitArr.size()); - DMDocument.registerMessage("0>info "); + Utility.registerMessage("0>info "); } - DMDocument.registerMessage("0>info " + "GetDOMModel Done"); + Utility.registerMessage("0>info " + "GetDOMModel Done"); } /********************************************************************************************************** diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GetDOMModelDoc.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GetDOMModelDoc.java index b3898bb7..70569110 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GetDOMModelDoc.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/GetDOMModelDoc.java @@ -34,6 +34,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Set; +import gov.nasa.pds.model.plugin.util.Utility; /** * Driver for getting document @@ -86,7 +87,7 @@ public void getModels(String docFileName) throws Throwable { lobjectid.getProtPinsGlossary(modelId, DMDocument.dataDirPath + lModelInfo.filename); } } - DMDocument.registerMessage("0>info " + "GetDOMModelDoc Done"); + Utility.registerMessage("0>info " + "GetDOMModelDoc Done"); } /********************************************************************************************************** diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ISO11179DOMMDR.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ISO11179DOMMDR.java index 4f5a50da..5e511a28 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ISO11179DOMMDR.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ISO11179DOMMDR.java @@ -35,6 +35,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.TreeMap; +import gov.nasa.pds.model.plugin.util.Utility; class ISO11179DOMMDR extends Object { TreeMap hashCodedPersmissibleValueMap; @@ -175,7 +176,7 @@ public void OverwriteFrom11179DataDict() { } else { if (lAttr.title.compareTo("%3ANAME") != 0) { if (! DOMInfoModel.isAttInactive (lAttr.identifier)) { - DMDocument.registerMessage("1>error " + "11179 data dictionary attribute is missing for overwrite - Identifier:" + lInstId); + Utility.registerMessage("1>error " + "11179 data dictionary attribute is missing for overwrite - Identifier:" + lInstId); } } } @@ -394,7 +395,7 @@ public void OverwriteClassFrom11179DataDict() { lDOMClass.setIsInactive(true); if (lDOMClass.title.compareTo("USER") != 0) { if (! DOMInfoModel.isAttInactive (lDOMClass.identifier)) { - DMDocument.registerMessage("1>error " + "11179 data dictionary class is missing for overwrite - Identifier:" + lInstId); + Utility.registerMessage("1>error " + "11179 data dictionary class is missing for overwrite - Identifier:" + lInstId); } } } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/LDDDOMParser.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/LDDDOMParser.java index 1a621291..ccdb2d2a 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/LDDDOMParser.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/LDDDOMParser.java @@ -47,6 +47,7 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; +import gov.nasa.pds.model.plugin.util.Utility; /** * Parses an XML document - Local_DD @@ -151,32 +152,32 @@ public LDDDOMParser() { public void getLocalDD() throws java.io.IOException { // parse the xml file and get the dom object parseXmlFile(gSchemaFileDefn); - DMDocument.registerMessage("0>info getLocalDD.parseXmlFile() Done"); + Utility.registerMessage("0>info getLocalDD.parseXmlFile() Done"); // process the dom document for classes, attributes, etc parseDocument(gSchemaFileDefn); - DMDocument.registerMessage("0>info getLocalDD.parseDocument() Done"); + Utility.registerMessage("0>info getLocalDD.parseDocument() Done"); } public void getLocalDDPhase2() { // resolve component references (cross namespace DD_Association references) resolveComponentsReferences(gSchemaFileDefn); - DMDocument.registerMessage("0>info resolveComponentsReferences() Done"); + Utility.registerMessage("0>info resolveComponentsReferences() Done"); // validate parsed header validateParsedHeader(gSchemaFileDefn); - DMDocument.registerMessage("0>info getLocalDD.validateParsedHeader() Done"); + Utility.registerMessage("0>info getLocalDD.validateParsedHeader() Done"); } public void getLocalDDPhase3() { // add the LDD artifacts to the master addLDDtoMaster(); - DMDocument.registerMessage("0>info getLocalDD.addLDDtoMaster() Done"); + Utility.registerMessage("0>info getLocalDD.addLDDtoMaster() Done"); validateNoNestedExposedClasses(); - DMDocument.registerMessage("0>info getLocalDD.validateNoNestedExposedClasses() Done"); + Utility.registerMessage("0>info getLocalDD.validateNoNestedExposedClasses() Done"); - DMDocument.registerMessage("0>info getLocalDD Done"); + Utility.registerMessage("0>info getLocalDD Done"); } private void parseXmlFile(SchemaFileDefn lSchemaFileDefn) { @@ -225,13 +226,13 @@ private void parseDocument(SchemaFileDefn lSchemaFileDefn) { // default - set settings to the pds configuration setting if the namespace is not found in // config file lConfigSchemaFileDefn = DMDocument.masterPDSSchemaFileDefn; - DMDocument.registerMessage( + Utility.registerMessage( "2>warning Init: " + " - Config.Properties Namespace Id Not Found:" + lNameSpaceIdNC); } else { - DMDocument.registerMessage( + Utility.registerMessage( "2>info Init: " + " - Config.Properties Namespace Id Found:" + lNameSpaceIdNC); } - DMDocument.registerMessage("2>info Init: " + " - Config.Properties Namespace Id Using:" + Utility.registerMessage("2>info Init: " + " - Config.Properties Namespace Id Using:" + lConfigSchemaFileDefn.identifier); // finally set namespace id and add this LDD to LDDSchemaFileSortMap @@ -257,20 +258,20 @@ private void parseDocument(SchemaFileDefn lSchemaFileDefn) { if (ldictionaryType.compareTo("Common") == 0) { lSchemaFileDefn.setDictionaryType("Discipline"); DMDocument.LDDToolSingletonClassTitle = "Discipline_Area"; - DMDocument.registerMessage("2>warning Init: " + " - LDD Dictionary_Type Found:" + Utility.registerMessage("2>warning Init: " + " - LDD Dictionary_Type Found:" + ldictionaryType + " Defaulting to Discipline"); } else if (ldictionaryType.compareTo("Discipline") == 0) { lSchemaFileDefn.setDictionaryType("Discipline"); DMDocument.LDDToolSingletonClassTitle = "Discipline_Area"; - DMDocument.registerMessage("2>info Init: " + " - LDD Dictionary_Type is " + ldictionaryType); + Utility.registerMessage("2>info Init: " + " - LDD Dictionary_Type is " + ldictionaryType); } else if (ldictionaryType.compareTo("Mission") == 0) { lSchemaFileDefn.setDictionaryType("Mission"); DMDocument.LDDToolSingletonClassTitle = "Mission_Area"; - DMDocument.registerMessage("2>info Init: " + " - LDD Dictionary_Type is " + ldictionaryType); + Utility.registerMessage("2>info Init: " + " - LDD Dictionary_Type is " + ldictionaryType); } else { lSchemaFileDefn.setDictionaryType("Discipline"); DMDocument.LDDToolSingletonClassTitle = "Discipline_Area"; - DMDocument.registerMessage("2>error Init: " + " - LDD Dictionary_Type not Found:" + Utility.registerMessage("2>error Init: " + " - LDD Dictionary_Type not Found:" + ldictionaryType + " Defaulting to Discipline"); } @@ -310,57 +311,57 @@ private void parseDocument(SchemaFileDefn lSchemaFileDefn) { // get the LDD attributes getAttributes(lSchemaFileDefn, docEle); - DMDocument.registerMessage("0>info getLocalDD.parseDocument.getAttributes() Done"); + Utility.registerMessage("0>info getLocalDD.parseDocument.getAttributes() Done"); // get the LDD attributes Extended getAttributesExtended (lSchemaFileDefn, docEle); - DMDocument.registerMessage ("0>info getLocalDD.parseDocument.getAttributesExtended() Done"); + Utility.registerMessage ("0>info getLocalDD.parseDocument.getAttributesExtended() Done"); // get the LDD classes getClass(lSchemaFileDefn, docEle); - DMDocument.registerMessage("0>info getLocalDD.parseDocument.getClass() Done"); + Utility.registerMessage("0>info getLocalDD.parseDocument.getClass() Done"); // get the LDD rules getRule(lSchemaFileDefn, docEle); - DMDocument.registerMessage("0>info getLocalDD.parseDocument.getRule() Done"); + Utility.registerMessage("0>info getLocalDD.parseDocument.getRule() Done"); // get the LDD property map getPropMap(docEle); - DMDocument.registerMessage("0>info getLocalDD.parseDocument.getPropMap() Done"); + Utility.registerMessage("0>info getLocalDD.parseDocument.getPropMap() Done"); } private void resolveComponentsReferences(SchemaFileDefn lSchemaFileDefn) { // get the component for the LDD association resolveComponentsForAssociation(lSchemaFileDefn); - DMDocument + Utility .registerMessage("0>info getLocalDD.parseDocument.resolveComponentsForAssociation() Done"); // scan DD_Rule to determine if any external namespaces are referenced scanRulesForExternalNamespaces(lSchemaFileDefn); - DMDocument + Utility .registerMessage("0>info getLocalDD.parseDocument.scanRulesForExternalNamespaces() Done"); validateReservedNames(lSchemaFileDefn); - DMDocument.registerMessage("0>info getLocalDD.parseDocument.validateReservedNames() Done"); + Utility.registerMessage("0>info getLocalDD.parseDocument.validateReservedNames() Done"); validateAttributeUsed(); - DMDocument.registerMessage("0>info getLocalDD.parseDocument.validateAttributeUsed() Done"); + Utility.registerMessage("0>info getLocalDD.parseDocument.validateAttributeUsed() Done"); validateNoDuplicateNames(); - DMDocument.registerMessage("0>info parseDocument.validateNoDuplicateNames() Done"); + Utility.registerMessage("0>info parseDocument.validateNoDuplicateNames() Done"); validateTypeAttributes(lSchemaFileDefn.isMission); - DMDocument.registerMessage("0>info parseDocument.validateTypeAttributes() Done"); + Utility.registerMessage("0>info parseDocument.validateTypeAttributes() Done"); validateNoUnitsAttributes(); - DMDocument.registerMessage("0>info parseDocument.validateNoUnitsAttributes() Done"); + Utility.registerMessage("0>info parseDocument.validateNoUnitsAttributes() Done"); validateNilRequiredAttributes(); - DMDocument.registerMessage("0>info parseDocument.validateNilRequiredAttributes() Done"); + Utility.registerMessage("0>info parseDocument.validateNilRequiredAttributes() Done"); validateEnumeratedFlags(); - DMDocument.registerMessage("0>info parseDocument.validateEnumeratedFlags() Done"); + Utility.registerMessage("0>info parseDocument.validateEnumeratedFlags() Done"); } private void printClassDebug(String lLable, String lIdentifier) { @@ -613,7 +614,7 @@ private void getTermEntry(Object lObject, Element docEle) { lTermEntry.isPreferred = true; } } else { - DMDocument.registerMessage( + Utility.registerMessage( "2>error Terminological Entry: " + "The attribute is missing."); } } @@ -661,7 +662,7 @@ private TreeMap getTermEntryQueryModel(String lClassN termEntryQueryModelMap.put(termEntryId, lTermEntryQMObject); } else { - DMDocument.registerMessage( + Utility.registerMessage( "2>error Terminological Entry: " + "The attribute is missing."); } } @@ -825,7 +826,7 @@ private void getAssociations(SchemaFileDefn lSchemaFileDefn, DOMClass lDOMClass, if (lLocalIdentifierArr.size() == 0) { lLocalIdentifierArr = getXMLValueArr("local_identifier", lAssocElem); // old identifier reference if (lLocalIdentifierArr.size() == 0) { - DMDocument.registerMessage("2>error Association - Reference_Type: " + lReferenceType + Utility.registerMessage("2>error Association - Reference_Type: " + lReferenceType + " - No identifiers were provided for this association."); continue; } @@ -839,12 +840,12 @@ private void getAssociations(SchemaFileDefn lSchemaFileDefn, DOMClass lDOMClass, } else if ((lReferenceType.compareTo("parent_of") == 0)) { lIsAttribute = false; if (lLocalIdentifierArr.size() != 1) { - DMDocument.registerMessage("2>error Association: " + lLocalIdentifier + Utility.registerMessage("2>error Association: " + lLocalIdentifier + " - The reference_type 'parent_of' is allowed only one parent"); continue; } } else { - DMDocument.registerMessage("2>error Association: " + lLocalIdentifier + Utility.registerMessage("2>error Association: " + lLocalIdentifier + " - Invalid reference type: " + lReferenceType); continue; } @@ -1035,13 +1036,13 @@ private void get_Class_Attr_Prop_DD_Associate_External_Class_Query_Model(DOMClas if (lDOMPropExternal != null) { finishInitDOMAttr(lDOMAttrExt, lDOMAttrExternal, lDOMPropExternal); } else { - DMDocument.registerMessage("2>error Association: " + lDOMAttrExternalId + Utility.registerMessage("2>error Association: " + lDOMAttrExternalId + " - Could not find referenced property - Query Model 1"); } } else // *** for qmsre process, when referencing external namespaces, e.g., msn, the attributes // are not present locally. Need some other solution. *** if (lSchemaFileDefn.nameSpaceIdNC.compareTo("qmsre") != 0) { - DMDocument.registerMessage("2>error Association: " + lDOMAttrExternalId + Utility.registerMessage("2>error Association: " + lDOMAttrExternalId + " - Could not find referenced attribute - Query Model 2"); } @@ -1630,7 +1631,7 @@ private void resolveComponentsForAssociation(SchemaFileDefn lSchemaFileDefn) { // *** for qmsre process, when referencing external namespaces, e.g., msn, the attributes // are not present locally. Need some other solution. *** if (lSchemaFileDefn.nameSpaceIdNC.compareTo("qmsre") != 0) { - DMDocument.registerMessage("2>error Association: " + lDOMProp.localIdentifier + Utility.registerMessage("2>error Association: " + lDOMProp.localIdentifier + " - Could not find referenced attribute - Reference Type: " + lDOMProp.referenceType); } @@ -1694,7 +1695,7 @@ private void resolveComponentsForAssociation(SchemaFileDefn lSchemaFileDefn) { lDOMClass.ownedAttrAssocNSTitleArr.add(lDOMProp.nsTitle); } } else { - DMDocument.registerMessage("2>error Association: " + lDOMProp.localIdentifier + Utility.registerMessage("2>error Association: " + lDOMProp.localIdentifier + " - Missing Component - Reference Type: " + lDOMProp.referenceType); } @@ -1708,7 +1709,7 @@ private void resolveComponentsForAssociation(SchemaFileDefn lSchemaFileDefn) { lDOMClass.subClassOfIdentifier = lDOMParentClass.identifier; lDOMClass.subClassOf = lDOMParentClass; } else { - DMDocument.registerMessage( + Utility.registerMessage( "2>error Association: " + lDOMProp.identifier + " - Missing Class: " + lDOMProp.localIdentifier + " - Reference Type: " + lDOMProp.referenceType); } @@ -1792,7 +1793,7 @@ private DOMAttr getLocalOrExternAttr(SchemaFileDefn lSchemaFileDefn, DOMClass lD // *** for qmsre process, when referencing external namespaces, e.g., msn, the attributes // are not present locally. Need some other solution. *** if (lSchemaFileDefn.nameSpaceIdNC.compareTo("qmsre") != 0) { - DMDocument.registerMessage( + Utility.registerMessage( "2>error Class:" + lDOMClass.identifier + " Association:" + lDOMProp.localIdentifier + " Attribute: " + lLocalIdentifier + " - Missing Attribute"); } @@ -1809,13 +1810,16 @@ private DOMAttr getLocalOrExternAttr(SchemaFileDefn lSchemaFileDefn, DOMClass lD // validate that referenced attribute is exposed // 555 commented out until DDWG approves impact of the fix -// if (lDOMAttr.nameSpaceIdNC.compareTo("pds") == 0 && ! lDOMAttr.isExposed) { -// if (lDOMAttr.isEnumerated) { -// DMDocument.registerMessage("2>warning Attribute: " + " - The referenced enumerated attribute " + lLocalIdentifier + " is not exposed."); -// } else { -// DMDocument.registerMessage("2>warning Attribute: " + " - The referenced attribute " + lLocalIdentifier + " is not exposed."); -// } -// } + // if (lDOMAttr.nameSpaceIdNC.compareTo("pds") == 0 && ! lDOMAttr.isExposed) { + // if (lDOMAttr.isEnumerated) { + // DMDocument.registerMessage("2>warning Attribute: " + " - The referenced enumerated attribute + // " + lLocalIdentifier + " is not exposed."); + // } else { + // DMDocument.registerMessage("2>warning Attribute: " + " - The referenced attribute " + + // lLocalIdentifier + " is not exposed."); + // } + // } + // clone the USER or LDD attribute for use as a Resolved attribute // returns rdfIdentifier = "TBD_rdfIdentifier" @@ -1875,7 +1879,7 @@ private DOMClass getLocalOrExtrnCompClass(SchemaFileDefn lSchemaFileDefn, DOMCla lLDDValArrExtUpdDefnClassMap.put(lLocalIdentifier, lComponentDOMClass.title); return lComponentDOMClass; } - DMDocument.registerMessage("2>error Class:" + lDOMClass.identifier + " Association:" + Utility.registerMessage("2>error Class:" + lDOMClass.identifier + " Association:" + lDOMProp.localIdentifier + " Class:" + lLocalIdentifier + " - Missing Component Class"); return null; } @@ -1905,7 +1909,7 @@ private DOMClass getLocalOrExtrnParentClass(SchemaFileDefn lSchemaFileDefn, DOMC } return lParentDOMClass; } - DMDocument.registerMessage("2>error Class:" + lDOMClass.identifier + " Association:" + Utility.registerMessage("2>error Class:" + lDOMClass.identifier + " Association:" + lDOMProp.localIdentifier + " Class:" + lLocalIdentifier + " - Missing Parent Class"); return null; } @@ -1966,12 +1970,12 @@ private void validateReservedNames(SchemaFileDefn lSchemaFileDefn) { // the value of the attribute local_identifier is irrelevant even if it is a reference to a // foreign namespace if (DMDocument.reservedClassNames.contains(lDOMClass.title)) { - DMDocument.registerMessage("2>error Class: " + Utility.registerMessage("2>error Class: " + " - No local dictionary may define a class called " + lDOMClass.title + "."); } Character lFirstChar = lDOMClass.title.charAt(0); if (!Character.isUpperCase(lFirstChar)) { - DMDocument.registerMessage("2>error Class: " + " - The class " + lDOMClass.title + Utility.registerMessage("2>error Class: " + " - The class " + lDOMClass.title + " must begin with an upper case letter."); } @@ -1982,7 +1986,7 @@ private void validateReservedNames(SchemaFileDefn lSchemaFileDefn) { } if ((!hasAtLeastOneElementDefined) && numClasses > 0) { - DMDocument.registerMessage(lSchemaFileDefn.nameSpaceIdNCLC, "2>error NameSpaceId:" + Utility.registerMessage(lSchemaFileDefn.nameSpaceIdNCLC, "2>error NameSpaceId:" + lSchemaFileDefn.nameSpaceId + " - At least one class must be defined as an xs:Element. ( set to \"true\")"); } else { @@ -1994,13 +1998,13 @@ private void validateReservedNames(SchemaFileDefn lSchemaFileDefn) { DOMAttr lDOMAttr = i.next(); if (DMDocument.reservedAttrNames.contains(lDOMAttr.title)) { - DMDocument.registerMessage("2>error Attribute: " + Utility.registerMessage("2>error Attribute: " + " - No local dictionary may define an attribute called " + lDOMAttr.title + "."); } Character lFirstChar = lDOMAttr.title.charAt(0); if (!Character.isLowerCase(lFirstChar)) { - DMDocument.registerMessage("2>error Attribute: " + " - The attribute " + lDOMAttr.title + Utility.registerMessage("2>error Attribute: " + " - The attribute " + lDOMAttr.title + " must begin with a lower case letter."); } } @@ -2027,7 +2031,7 @@ private void validateReservedNames(SchemaFileDefn lSchemaFileDefn) { } } if (!foundReferenceTypeDef) { - DMDocument.registerMessage("2>error Class: " + Utility.registerMessage("2>error Class: " + " - At least one value for pds:local_reference_type or pds:reference_type must be defined for " + lRuleXPath + "."); } @@ -2074,7 +2078,7 @@ private void validateAttributeUsed() { // DMDocument.registerMessage ("2>warning Attribute: <" + // (attrMapLocal.get(lAttrLocalIdentifier)).title + "> - This local attribute was not used in // an Association."); - DMDocument.registerMessage("2>warning Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>warning Attribute: <" + lDOMAttr.title + "> - This local attribute was not used in an Association."); } return; @@ -2088,7 +2092,7 @@ private void validateNoDuplicateNames() { for (Iterator i = classArr.iterator(); i.hasNext();) { DOMClass lDOMClass = i.next(); if (lNameArr.contains(lDOMClass.title)) { - DMDocument.registerMessage("2>warning Class: <" + lDOMClass.title + Utility.registerMessage("2>warning Class: <" + lDOMClass.title + "> - The class name is duplicated in this local data dictionary."); } else { lNameArr.add(lDOMClass.title); @@ -2099,7 +2103,7 @@ private void validateNoDuplicateNames() { for (Iterator i = attrArr.iterator(); i.hasNext();) { DOMAttr lDOMAttr = i.next(); if (lNameArr.contains(lDOMAttr.title)) { - DMDocument.registerMessage("2>warning Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>warning Attribute: <" + lDOMAttr.title + "> - The attribute name is duplicated in this local data dictionary."); } else { lNameArr.add(lDOMAttr.title); @@ -2117,12 +2121,12 @@ private void validateTypeAttributes(boolean isMission) { || lDOMAttr.title.compareTo("type") == 0) { if (lDOMAttr.domPermValueArr.size() < 1) { if (isMission) { - DMDocument.registerMessage("2>warning Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>warning Attribute: <" + lDOMAttr.title + "> - The 'type' attribute must have at least one permissible value."); } else { // DMDocument.registerMessage ("2>error Attribute: <" + lDOMAttr.title + "> - The 'type' // attribute must have at least one permissible value."); - DMDocument.registerMessage("2>warning Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>warning Attribute: <" + lDOMAttr.title + "> - The 'type' attribute must have at least one permissible value."); } } @@ -2138,7 +2142,7 @@ private void validateEnumeratedFlags() { DOMAttr lDOMAttr = i.next(); if (lDOMAttr.isEnumerated) { if (lDOMAttr.domPermValueArr.isEmpty()) { - DMDocument.registerMessage("2>warning Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>warning Attribute: <" + lDOMAttr.title + "> - An attribute with the enumeration_flag = true must have at least one permissible value."); } else { // DMDocument.registerMessage ("2>warning Attribute: <" + lDOMAttr.title + "> - An @@ -2148,7 +2152,7 @@ private void validateEnumeratedFlags() { // DMDocument.registerMessage ("2>warning Attribute: <" + lDOMAttr.title + "> - An attribute // with the enumeration_flag = false - NO Problem"); } else { - DMDocument.registerMessage("2>warning Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>warning Attribute: <" + lDOMAttr.title + "> - An attribute with the enumeration_flag = false must not have any permissible values."); } } @@ -2172,7 +2176,7 @@ private void validateNoUnitsAttributes() { foundFlag = true; } if (foundFlag) { - DMDocument.registerMessage("2>warning Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>warning Attribute: <" + lDOMAttr.title + "> - The terms 'unit', 'units', 'unit_of_measure' should not be used as the rightmost part of an attribute's name."); } } @@ -2198,7 +2202,7 @@ private void validateNilRequiredAttributes() { } } if (!foundFlag) { - DMDocument.registerMessage("2>info Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>info Attribute: <" + lDOMAttr.title + "> - A 'nillable' attribute was found that is not a required attribute in at least one class."); } } @@ -2227,7 +2231,7 @@ private void checkAllSubclasses(DOMClass lClass) { if (lDOMProp.hasDOMObject != null && lDOMProp.hasDOMObject instanceof DOMClass) { DOMClass lCompClass = (DOMClass) lDOMProp.hasDOMObject; if (lCompClass.isExposed) { - DMDocument.registerMessage("2>warning Class: <" + lCompClass.title + Utility.registerMessage("2>warning Class: <" + lCompClass.title + "> - An exposed class was found nested within another exposed class. Nested exposed classes should only be present if there is a specific requirement to expose the additional class."); } checkAllSubclasses(lCompClass); @@ -2301,11 +2305,11 @@ private void addLDDtoMaster() { DOMClass lDOMClass = i.next(); if (DOMInfoModel.masterDOMClassIdMap.containsKey(lDOMClass.identifier)) { // an ldd class is a duplicate of a master class; replace the master with the LDD version - DMDocument.registerMessage( + Utility.registerMessage( "2>warning Found duplicate class - lClass.identifier:" + lDOMClass.identifier); if (DOMInfoModel.masterDOMClassMap.containsKey(lDOMClass.rdfIdentifier)) { DOMInfoModel.masterDOMClassMap.remove(lDOMClass.rdfIdentifier); - DMDocument + Utility .registerMessage("2>warning Found duplicate class - REPLACED - lClass.rdfIdentifier:" + lDOMClass.rdfIdentifier); } @@ -2338,14 +2342,14 @@ private void addLDDtoMaster() { if (DOMInfoModel.masterDOMAttrIdMap.containsKey(lDOMAttr.identifier)) { // an ldd attribute is a duplicate of a master attribute; replace the master with the LDD // version - DMDocument.registerMessage( + Utility.registerMessage( "2>warning Found duplicate attribute - lDOMAttr.identifier:" + lDOMAttr.identifier); if (DOMInfoModel.masterDOMAttrMap.containsKey(lDOMAttr.rdfIdentifier)) { DOMInfoModel.masterDOMAttrMap.remove(lDOMAttr.rdfIdentifier); - DMDocument.registerMessage( + Utility.registerMessage( "2>warning Found duplicate attribute - REPLACED - lDOMAttr.rdfIdentifier:" + lDOMAttr.rdfIdentifier); - DMDocument.registerMessage( + Utility.registerMessage( "2>error Found duplicate attribute - REPLACED Failed - lDOMAttr.rdfIdentifier:" + lDOMAttr.rdfIdentifier); } @@ -2372,11 +2376,11 @@ private void addLDDtoMaster() { if (DOMInfoModel.masterDOMPropIdMap.containsKey(lDOMProp.identifier)) { // an ldd association is a duplicate of a master association; replace the master with the // LDD version - DMDocument.registerMessage( + Utility.registerMessage( "2>warning Found duplicate attribute - lDOMProp.identifier:" + lDOMProp.identifier); if (DOMInfoModel.masterDOMPropMap.containsKey(lDOMProp.rdfIdentifier)) { DOMInfoModel.masterDOMPropMap.remove(lDOMProp.rdfIdentifier); - DMDocument.registerMessage( + Utility.registerMessage( "2>warning Found duplicate attribute - REPLACED - lDOMProp.rdfIdentifier:" + lDOMProp.rdfIdentifier); } @@ -2419,7 +2423,7 @@ private void addLDDtoMaster() { lRule.setRDFIdentifier(); DOMInfoModel.masterDOMRuleMap.put(lRule.rdfIdentifier, lRule); } else { - DMDocument.registerMessage( + Utility.registerMessage( "2>warning Found duplicate attribute - lAttr.identifier:" + lRule.identifier); } } @@ -2711,11 +2715,11 @@ public void printClass(DOMClass lDOMClass) { private void validateParsedHeader(SchemaFileDefn lSchemaFileDefn) { if (lRegAuthId.compareTo(DMDocument.registrationAuthorityIdentifierValue) != 0) { - DMDocument + Utility .registerMessage("2>error Header: " + " - Invalid Registration Authority: " + lRegAuthId); } if (lSchemaFileDefn.nameSpaceIdNC.compareTo("pds") == 0) { - DMDocument.registerMessage("2>error Header: " + Utility.registerMessage("2>error Header: " + " - Master namespace is not allowed as a local data dictionary namespace:" + lSchemaFileDefn.nameSpaceIdNC); } @@ -2744,26 +2748,26 @@ private void validateAttribute(DOMAttr lDOMAttr) { int numMatches = 0, maxMatches = 7; DOMDataType lDOMDataType = DOMInfoModel.masterDOMDataTypeTitleMap.get(lDOMAttr.valueType); if (lDOMDataType == null) { - DMDocument.registerMessage("2>error Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>error Attribute: <" + lDOMAttr.title + "> - Invalid Data Type. Data Type: " + lDOMAttr.valueType); } else { if (lDOMAttr.minimum_value.indexOf("TBD") != 0) { - DMDocument.registerMessage("2>info Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>info Attribute: <" + lDOMAttr.title + "> - The default minimum value provided by the attribute's data type is being overridden with " + lDOMAttr.minimum_value); } if (lDOMAttr.maximum_value.indexOf("TBD") != 0) { - DMDocument.registerMessage("2>info Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>info Attribute: <" + lDOMAttr.title + "> - The default maximum value provided by the attribute's data type is being overridden with " + lDOMAttr.maximum_value); } if (lDOMAttr.minimum_characters.indexOf("TBD") != 0) { - DMDocument.registerMessage("2>info Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>info Attribute: <" + lDOMAttr.title + "> - The default minimum characters provided by the attribute's data type is being overridden with " + lDOMAttr.minimum_characters); } if (lDOMAttr.maximum_characters.indexOf("TBD") != 0) { - DMDocument.registerMessage("2>info Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>info Attribute: <" + lDOMAttr.title + "> - The default maximum characters provided by the attribute's data type is being overridden with " + lDOMAttr.maximum_characters); } @@ -2797,7 +2801,7 @@ private void validateAttribute(DOMAttr lDOMAttr) { if (!(lDOMAttr.unit_of_measure_type.indexOf("TBD") == 0)) { DOMUnit lUnit = DOMInfoModel.masterDOMUnitMap.get(lDOMAttr.unit_of_measure_type); if (lUnit == null) { - DMDocument.registerMessage("2>warning Attribute2 <: " + lDOMAttr.title + Utility.registerMessage("2>warning Attribute2 <: " + lDOMAttr.title + " - Invalid Unit of Measure Type: " + lDOMAttr.unit_of_measure_type); } } @@ -2810,7 +2814,7 @@ private void validateAttribute(DOMAttr lDOMAttr) { DOMAttr lMAttr = i.next(); // if (lMAttr.title.compareTo(lAttr.title) == 0) { if ((!lMAttr.isFromLDD) && lMAttr.title.compareTo(lDOMAttr.title) == 0) { - DMDocument.registerMessage("2>info Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>info Attribute: <" + lDOMAttr.title + "> - This local attribute has a duplicate in the PDS4 data dictionary."); isExact = true; numMatches++; @@ -2830,7 +2834,7 @@ public void validateAssociationCardinalities(String lMinCard, String lMaxCard, } catch (NumberFormatException e) { lCardMinI = 0; lCardMin = "0"; - DMDocument.registerMessage("2>error Association: " + lLocalIdentifier + Utility.registerMessage("2>error Association: " + lLocalIdentifier + " - Minimum occurrences is invalid: " + lMinCard); } } @@ -2846,12 +2850,12 @@ public void validateAssociationCardinalities(String lMinCard, String lMaxCard, } catch (NumberFormatException e) { lCardMaxI = 0; lCardMax = "0"; - DMDocument.registerMessage("2>error Association: " + lLocalIdentifier + Utility.registerMessage("2>error Association: " + lLocalIdentifier + " - Maximum occurrences is invalid: " + lMaxCard); } } if (lCardMaxI < lCardMinI) { - DMDocument.registerMessage("2>error Association: " + lLocalIdentifier + Utility.registerMessage("2>error Association: " + lLocalIdentifier + " - Maximum occurrences is less than minimum occurrences"); } } @@ -2893,7 +2897,7 @@ private void getPartialMatches(DOMAttr lDOMAttr, int numMatches, int maxMatches) String lTitleUpper = lMAttr.title.toUpperCase(); if (lTitleUpper.indexOf(lClassWord) > -1) { if (lTitleUpper.indexOf(lDescriptor) > -1) { - DMDocument.registerMessage("2>info Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>info Attribute: <" + lDOMAttr.title + "> - PDS4 data dictionary attribute with similar name. - Matched attribute: <" + lMAttr.title + ">"); numMatches++; @@ -2912,7 +2916,7 @@ private void getPartialMatches(DOMAttr lDOMAttr, int numMatches, int maxMatches) } String lTitleUpper = lMAttr.title.toUpperCase(); if (lTitleUpper.indexOf(lDescriptor) > -1) { - DMDocument.registerMessage("2>info Attribute: <" + lDOMAttr.title + Utility.registerMessage("2>info Attribute: <" + lDOMAttr.title + "> - PDS4 data dictionary attribute with similar name. - Matched attribute: <" + lMAttr.title + ">"); numMatches++; diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/MasterDOMInfoModel.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/MasterDOMInfoModel.java index 11fee5ac..e0c3871e 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/MasterDOMInfoModel.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/MasterDOMInfoModel.java @@ -36,6 +36,7 @@ import java.util.Iterator; import java.util.Set; import java.util.TreeMap; +import gov.nasa.pds.model.plugin.util.Utility; class MasterDOMInfoModel extends DOMInfoModel { static String attrNameClassWord; @@ -99,11 +100,11 @@ public void setAttrParentClass(boolean forLDD) { if (classNotFound) { classNotFound = false; lAttr.attrParentClass = lParentClass; - DMDocument.registerMessage("1>warning " + Utility.registerMessage("1>warning " + "set attributes parent class - lAttr.identifier:" + lAttr.identifier + " - using first found - lClassMember.identifier:" + lParentClass.identifier); } else { - DMDocument.registerMessage("1>warning " + Utility.registerMessage("1>warning " + "set attributes parent class - lAttr.identifier:" + lAttr.identifier + " - also found - lClassMember.identifier:" + lParentClass.identifier); } @@ -111,7 +112,7 @@ public void setAttrParentClass(boolean forLDD) { } if (classNotFound) { lAttr.attrParentClass = DOMInfoModel.masterDOMUserClass; - DMDocument.registerMessage( + Utility.registerMessage( "1>warning " + "set attributes parent class - lAttr.identifier:" + lAttr.identifier + " - parent class not found, using USER - lClassMember.identifier:" + lParentClass.identifier); @@ -218,7 +219,7 @@ public void getSubClassOf() { lClass.subClassOfTitle = lSupClass.title; lClass.subClassOfIdentifier = lSupClass.identifier; } else { - DMDocument.registerMessage("1>error " + Utility.registerMessage("1>error " + "missing superClass in master while trying to set subClassOf - lClass.identifier:" + lClass.identifier + " - lClass.subClassOfTitle:" + lClass.subClassOfTitle); } @@ -241,7 +242,7 @@ public void getSuperClassHierArr() { // recurse up the subClassOf chain, getting the super class array while (lSuperClass != null && !lSuperClass.isUSERClass) { if (lSuperClassArr.contains(lSuperClass)) { - DMDocument.registerMessage("1>error " + Utility.registerMessage("1>error " + "Found cycle in superclass hierarchy - SuperClass.title:" + lSuperClass.title); break; } @@ -296,7 +297,7 @@ public void getSuperClassHierArr() { // init the class hierarchy levels array (classes higher in in the tree are first) lClassHierLevelsArr = new ArrayList<>(lClassHierLevelsMap.values()); - DMDocument.registerMessage("0>info " + "getAttrAssocArr Done"); + Utility.registerMessage("0>info " + "getAttrAssocArr Done"); } // 012 - remove URI Attribute @@ -806,78 +807,78 @@ private boolean isRestrictedAttribute(boolean isAttribute, DOMAttr lAttr, DOMAtt } if (lAttr.valueType.compareTo(lSuperAttr.valueType) != 0) { - DMDocument.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.valueType:" + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.valueType:" + lSuperAttr.valueType + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (lAttr.cardMin.compareTo(lSuperAttr.cardMin) != 0) { - DMDocument.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.cardMin:" + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.cardMin:" + lSuperAttr.cardMin + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (lAttr.cardMax.compareTo(lSuperAttr.cardMax) != 0) { - DMDocument.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.cardMax:" + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.cardMax:" + lSuperAttr.cardMax + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (lAttr.definition.compareTo(lSuperAttr.definition) != 0) { - DMDocument.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.description:" + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.description:" + lSuperAttr.definition + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (lAttr.minimum_characters.compareTo(lSuperAttr.minimum_characters) != 0) { - DMDocument.registerMessage("1>warning " + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.minimum_characters:" + lSuperAttr.minimum_characters + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (lAttr.maximum_characters.compareTo(lSuperAttr.maximum_characters) != 0) { - DMDocument.registerMessage("1>warning " + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.maximum_characters:" + lSuperAttr.maximum_characters + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (lAttr.minimum_value.compareTo(lSuperAttr.minimum_value) != 0) { - DMDocument.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.minimum_value:" + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.minimum_value:" + lSuperAttr.minimum_value + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (lAttr.maximum_value.compareTo(lSuperAttr.maximum_value) != 0) { - DMDocument.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.maximum_value:" + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.maximum_value:" + lSuperAttr.maximum_value + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (lAttr.nameSpaceIdNC.compareTo(lSuperAttr.nameSpaceIdNC) != 0) { - DMDocument.registerMessage("1>warning " + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.attrNameSpaceIdNC:" + lSuperAttr.nameSpaceIdNC + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (lAttr.pattern.compareTo(lSuperAttr.pattern) != 0) { - DMDocument.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.pattern:" + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.pattern:" + lSuperAttr.pattern + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (lAttr.default_unit_id.compareTo(lSuperAttr.default_unit_id) != 0) { - DMDocument.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.default_unit_id:" + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.default_unit_id:" + lSuperAttr.default_unit_id + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (lAttr.format.compareTo(lSuperAttr.format) != 0) { - DMDocument.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.format:" + Utility.registerMessage("1>warning " + "isRestrictedAttribute lSuperAttr.format:" + lSuperAttr.format + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } if (!isAttribute) { // if association we need to check the standard values. if (lAttr.valArr.size() != lSuperAttr.valArr.size()) { - DMDocument.registerMessage("1>warning " + "isRestrictedAttribute lAttr.valArr.size():" + Utility.registerMessage("1>warning " + "isRestrictedAttribute lAttr.valArr.size():" + lAttr.valArr.size() + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } for (Iterator i = lAttr.valArr.iterator(); i.hasNext();) { String lVal = i.next(); if (!lSuperAttr.valArr.contains(lVal)) { - DMDocument.registerMessage("1>warning " + "isRestrictedAttribute lAttr.lVal" + lVal + Utility.registerMessage("1>warning " + "isRestrictedAttribute lAttr.lVal" + lVal + " lSuperAttr.rdfIdentifier:" + lSuperAttr.rdfIdentifier); return true; } @@ -1333,11 +1334,11 @@ public void GetMasterDECMaps() { + "DD_Attribute_Full.pds.attribute_concept"); if (lAttr == null) { - DMDocument.registerMessage("1>error " + "system attribute - attribute_concept - MISSING"); + Utility.registerMessage("1>error " + "system attribute - attribute_concept - MISSING"); return; } if ((lAttr.valArr == null) || (lAttr.valArr.size() < 1)) { - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "system attribute - attribute_concept - NO PERMISSIBLE VALUES"); return; } @@ -1357,11 +1358,11 @@ public void GetMasterCDMaps() { + "DD_Value_Domain_Full.pds.conceptual_domain"); if (lAttr == null) { - DMDocument.registerMessage("1>error " + "system attribute - conceptual_domain - MISSING"); + Utility.registerMessage("1>error " + "system attribute - conceptual_domain - MISSING"); return; } if ((lAttr.valArr == null) || (lAttr.valArr.size() < 1)) { - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "system attribute - conceptual_domain - NO PERMISSIBLE VALUES"); return; } @@ -1385,10 +1386,10 @@ public void SetMasterAttrXMLBaseDataTypeFromDataType() { if (lDataType != null) { lAttr.xmlBaseDataType = lDataType.xml_schema_base_type; } else { - DMDocument.registerMessage("1>error " + Utility.registerMessage("1>error " + "SetMasterAttrXMLBaseDataTypeFromDataType - Data Type is missing - lAttr.identifier:" + lAttr.identifier); - DMDocument.registerMessage("1>error " + Utility.registerMessage("1>error " + "SetMasterAttrXMLBaseDataTypeFromDataType - Data Type is missing - lAttr.valueType:" + lAttr.valueType); } @@ -1404,7 +1405,7 @@ public void sethasAttributeOverride1(ArrayList lMasterDOMAttrArr) { if (lAttr.isAttribute) { DOMDataType lValueType = DOMInfoModel.masterDOMDataTypeTitleMap.get(lAttr.valueType); if (lValueType == null) { - DMDocument.registerMessage("1>error " + Utility.registerMessage("1>error " + "Could not find a value type for this attribute while checking for attribute overrides - Name:" + lAttr.identifier + " Value Type:" + lAttr.valueType); } else { @@ -1514,7 +1515,7 @@ public void sethasAttributeOverride2(ArrayList lMasterDOMAttrArr) { boolean isEquivalent = true; if (lAttr1.valueType.compareTo(lAttr2.valueType) != 0) { isEquivalent = false; - DMDocument.registerMessage("1>error " + Utility.registerMessage("1>error " + "hasAttributeOverride2 - valueType is not equivalent - attribute identifier:" + lAttr2.identifier); } @@ -1541,13 +1542,13 @@ public void sethasAttributeOverride2(ArrayList lMasterDOMAttrArr) { isEquivalentAll = true; break; } - DMDocument.registerMessage( + Utility.registerMessage( "1>warning " + "sethasAttributeOverride - attributes are not equivalent:" + lAttr1.identifier + " - " + lAttr2.identifier); isEquivalentAll = isEquivalentAll && isEquivalent; } if (!isEquivalentAll) { - DMDocument.registerMessage("1>error " + Utility.registerMessage("1>error " + "sethasAttributeOverride - attribute is not equivalent - Setting unique name - attribute identifier:" + lAttr1.identifier); lAttr1.XMLSchemaName = lAttr1.parentClassTitle + "_" + lAttr1.title; @@ -1580,11 +1581,11 @@ public void getValClassArr() { if (lClassMember.title.compareTo(lTitle) == 0) { if (firstClassFound == null) { firstClassFound = lClassMember; - DMDocument.registerMessage("1>warning " + Utility.registerMessage("1>warning " + "get class using attribute value array - lAttr.identifier:" + lProp.identifier + " - using first found - lClassMember.identifier:" + lClassMember.identifier); } else { - DMDocument.registerMessage("1>warning " + Utility.registerMessage("1>warning " + "get class using attribute value array - lAttr.identifier:" + lProp.identifier + " - also found - lClassMember.identifier:" + lClassMember.identifier); } @@ -1672,7 +1673,7 @@ public String getValueMeaning(DOMRule lRule, String lVal) { // CheckDataTypes public void CheckDataTypes() { - DMDocument.registerMessage("0>info " + "CheckDataTypes"); + Utility.registerMessage("0>info " + "CheckDataTypes"); TreeMap lTreeMap = new TreeMap<>(); for (Iterator i = DOMInfoModel.masterDOMAttrArr.iterator(); i.hasNext();) { DOMAttr lAttr = i.next(); @@ -1684,21 +1685,21 @@ public void CheckDataTypes() { String pTitle = "", pDataType = "", pRDFId = ""; for (Iterator j = lAttrArr.iterator(); j.hasNext();) { DOMAttr lAttr = j.next(); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + "CheckDataTypes data types not equal - lAttr.title:" + lAttr.title); if (lAttr.title.compareTo(pTitle) == 0) { if (lAttr.valueType.compareTo(pDataType) == 0) { continue; } - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + "CheckDataTypes data types not equal - lAttr.title:" + lAttr.title); - DMDocument + Utility .registerMessage("0>info " + "CheckDataTypes data types not equal - pRDFId:" + pRDFId); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + "CheckDataTypes data types not equal - pDataType:" + pDataType); - DMDocument.registerMessage("0>info " + Utility.registerMessage("0>info " + "CheckDataTypes data types not equal - lAttr.rdfIdentifier:" + lAttr.rdfIdentifier); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + "CheckDataTypes data types not equal - lAttr.valueType:" + lAttr.valueType); } else { pTitle = lAttr.title; @@ -1743,7 +1744,7 @@ public void fixNameSpaces() { * constraints would cause multiple simpleType definitions *** */ static public void checkSameNameOverRide() { - DMDocument + Utility .registerMessage("0>info " + "Checking for attribute consistency - checkSameNameOverRide"); // sort the attributes @@ -1813,73 +1814,73 @@ static public void checkForOverRideDetail(DOMAttr lAttr1, DOMAttr lAttr2) { if (lAttr1.valueType.compareTo(lAttr2.valueType) != 0) { isFound = true; - DMDocument.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.valueType:" + Utility.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.valueType:" + lAttr1.valueType + " lAttr2.valueType:" + lAttr2.valueType); } if (lAttr1.minimum_characters.compareTo(lAttr2.minimum_characters) != 0) { isFound = true; - DMDocument.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.minimum_characters:" + Utility.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.minimum_characters:" + lAttr1.minimum_characters + " lAttr2.minimum_characters:" + lAttr2.minimum_characters); } if (lAttr1.maximum_characters.compareTo(lAttr2.maximum_characters) != 0) { isFound = true; - DMDocument.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.maximum_characters:" + Utility.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.maximum_characters:" + lAttr1.maximum_characters + " lAttr2.maximum_characters:" + lAttr2.maximum_characters); } if (lAttr1.minimum_value.compareTo(lAttr2.minimum_value) != 0) { isFound = true; - DMDocument.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.minimum_value:" + Utility.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.minimum_value:" + lAttr1.minimum_value + " lAttr2.minimum_value:" + lAttr2.minimum_value); } if (lAttr1.maximum_value.compareTo(lAttr2.maximum_value) != 0) { isFound = true; - DMDocument.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.maximum_value:" + Utility.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.maximum_value:" + lAttr1.maximum_value + " lAttr2.maximum_value:" + lAttr2.maximum_value); } if (lAttr1.pattern.compareTo(lAttr2.pattern) != 0) { isFound = true; - DMDocument.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.pattern:" + Utility.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.pattern:" + lAttr1.pattern + " lAttr2.pattern:" + lAttr2.pattern); } if (lAttr1.default_unit_id.compareTo(lAttr2.default_unit_id) != 0) { isFound = true; - DMDocument.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.default_unit_id:" + Utility.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.default_unit_id:" + lAttr1.default_unit_id + " lAttr2.default_unit_id:" + lAttr2.default_unit_id); } if (lAttr1.format.compareTo(lAttr2.format) != 0) { isFound = true; - DMDocument.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.format:" + Utility.registerMessage("0>warning " + "checkForOverRideDetail lAttr1.format:" + lAttr1.format + " lAttr2.format:" + lAttr2.format); } if (isFound) { - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + "checkForOverRideDetail lAttr1.identifier:" + lAttr1.identifier); - DMDocument.registerMessage( + Utility.registerMessage( "0>info " + "checkForOverRideDetail lAttr2.identifier:" + lAttr2.identifier); - DMDocument.registerMessage("0>info "); + Utility.registerMessage("0>info "); } return; } static public void printOwnedAttrAssocArr(DOMClass lClass, String lTitle) { - DMDocument.registerMessage("0>info " + "ownedAttrAssocArr - " + lTitle + " - " + Utility.registerMessage("0>info " + "ownedAttrAssocArr - " + lTitle + " - " + "lClass.identifier:" + lClass.identifier); for (Iterator j = lClass.ownedAttrAssocArr.iterator(); j.hasNext();) { DOMProp lProp = j.next(); - DMDocument.registerMessage("0>info " + " - lProp.classOrder:" + lProp.classOrder); + Utility.registerMessage("0>info " + " - lProp.classOrder:" + lProp.classOrder); } } static public void printAllAttrAssocArr(DOMClass lClass, String lTitle) { - DMDocument.registerMessage("0>info "); - DMDocument.registerMessage("0>info " + "allAttrAssocArr - " + lTitle + " - " + Utility.registerMessage("0>info "); + Utility.registerMessage("0>info " + "allAttrAssocArr - " + lTitle + " - " + "lClass.identifier:" + lClass.identifier); for (Iterator j = lClass.allAttrAssocArr.iterator(); j.hasNext();) { DOMProp lProp = j.next(); - DMDocument.registerMessage("0>info " + " - lProp.identifier:" + lProp.identifier); - DMDocument.registerMessage("0>info " + " - lProp.classOrder:" + lProp.classOrder); + Utility.registerMessage("0>info " + " - lProp.identifier:" + lProp.identifier); + Utility.registerMessage("0>info " + " - lProp.classOrder:" + lProp.classOrder); } } } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ProtFramesParser.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ProtFramesParser.java index f0983294..e6c85476 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ProtFramesParser.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ProtFramesParser.java @@ -35,6 +35,7 @@ import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Iterator; +import gov.nasa.pds.model.plugin.util.Utility; /** * Parses a Protege Frames file (.pont or .pins) and creates an array of tokens. parse - open file, @@ -71,9 +72,9 @@ public boolean parse(String fname) throws Throwable { try { PBReader = new InputStreamReader(new FileInputStream(new File(fname)), "UTF-8"); - DMDocument.registerMessage("0>info " + "Found required file: " + fname); + Utility.registerMessage("0>info " + "Found required file: " + fname); } catch (Exception e) { - DMDocument.registerMessage("3>error " + "Could not find required file: " + fname); + Utility.registerMessage("3>error " + "Could not find required file: " + fname); return false; } if (!getTokens()) { diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ProtPinsDOMModel.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ProtPinsDOMModel.java index 942f4451..41b4daed 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ProtPinsDOMModel.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/ProtPinsDOMModel.java @@ -34,6 +34,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.TreeMap; +import gov.nasa.pds.model.plugin.util.Utility; /** * Creates the in memory protege Upper pins model (e.g. Discipline Facets) @@ -154,7 +155,7 @@ public void getProtPinsModel(String lRegAuthId, String fname) throws Throwable { "Discipline_Facets", DMDocument.masterNameSpaceIdNCLC, "discipline_name"); DOMAttr lDOMAttrDiscipline = DOMInfoModel.masterDOMAttrIdMap.get(lAttrId); if (lDOMAttrDiscipline == null) { - DMDocument.registerMessage("1>error " + "Missing discipline_name - lAttrId:" + lAttrId); + Utility.registerMessage("1>error " + "Missing discipline_name - lAttrId:" + lAttrId); return; } @@ -178,7 +179,7 @@ public void getProtPinsModel(String lRegAuthId, String fname) throws Throwable { DMDocument.masterNameSpaceIdNCLC, "facet1"); DOMAttr lDOMAttrFacet1 = DOMInfoModel.masterDOMAttrIdMap.get(lAttrId); if (lDOMAttrFacet1 == null) { - DMDocument.registerMessage("1>error " + "Missing facet2 - lAttrId:" + lAttrId); + Utility.registerMessage("1>error " + "Missing facet2 - lAttrId:" + lAttrId); continue; } lDOMAttrFacet1.isEnumerated = true; @@ -200,7 +201,7 @@ public void getProtPinsModel(String lRegAuthId, String fname) throws Throwable { DMDocument.masterNameSpaceIdNCLC, "facet2"); DOMAttr lDOMAttrFacet2 = DOMInfoModel.masterDOMAttrIdMap.get(lAttrId); if (lDOMAttrFacet2 == null) { - DMDocument.registerMessage("1>error " + "Missing facet2 - lAttrId:" + lAttrId); + Utility.registerMessage("1>error " + "Missing facet2 - lAttrId:" + lAttrId); continue; } lDOMAttrFacet2.isEnumerated = true; @@ -298,7 +299,7 @@ public void getRulesPins() { lAssertDefn.testValArr = lValArr; } } else { - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "getRulesPins - Assert Statement Not Found - lAssertId:" + lAssertId); } } @@ -339,7 +340,7 @@ private String getValueSingleton(String lKey, HashMap> return "TBD_" + lKey; } if (lValArr.size() > 1) { - DMDocument.registerMessage("1>error " + "getSingletonValue - ProtPinsModel - lKey:" + lKey); + Utility.registerMessage("1>error " + "getSingletonValue - ProtPinsModel - lKey:" + lKey); } return lValArr.get(0); } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/SchemaFileDefn.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/SchemaFileDefn.java index f6b2a045..6d908261 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/SchemaFileDefn.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/SchemaFileDefn.java @@ -32,7 +32,7 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.Iterator; +import gov.nasa.pds.model.plugin.util.Utility; public class SchemaFileDefn { // identifier is the namespace id, without colon, and in caps; it must be unique within the PDS @@ -281,11 +281,12 @@ public void setVersionIds() { // set the relative file spec now that we have a version id relativeFileSpecModelSpec_DOM = - DMDocument.outputDirPath + "index" + "_" + lab_version_id + ".html"; + DMDocument.getOutputDirPath() + "index" + "_" + lab_version_id + ".html"; if (!isLDD) { - relativeFileSpecXMLSchema = DMDocument.outputDirPath + "SchemaXML4/" + DMDocument.mastModelId + relativeFileSpecXMLSchema = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + lab_version_id + ".xsd"; - relativeFileSpecSchematron = DMDocument.outputDirPath + "SchemaXML4/" + DMDocument.mastModelId + relativeFileSpecSchematron = + DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + lab_version_id + ".sch"; relativeFileNameXMLSchema = DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + lab_version_id + ".xsd"; @@ -293,20 +294,20 @@ public void setVersionIds() { + lFileNameIMVersionId + "_" + lab_version_id + ".xsd"; relativeFileNameSchematron = DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + lab_version_id + ".sch"; - relativeFileSpecXMLLabel = DMDocument.outputDirPath + "SchemaXML4/" + DMDocument.mastModelId + relativeFileSpecXMLLabel = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + lab_version_id + ".xml"; - relativeFileSpecDOMModelJSON = DMDocument.outputDirPath + "export/JSON/" + relativeFileSpecDOMModelJSON = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + lab_version_id + ".JSON"; - relativeFileSpecDDCSV = DMDocument.outputDirPath + "export/csv/" + DMDocument.mastModelId + relativeFileSpecDDCSV = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + lab_version_id; - relativeFileSpecCCSDSCSV = DMDocument.outputDirPath + "export/csv/" + DMDocument.mastModelId + relativeFileSpecCCSDSCSV = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_CCSDS" + "_" + lab_version_id; } else { relativeFileSpecXMLSchema = - DMDocument.outputDirPath + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.getOutputDirPath() + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.masterPDSSchemaFileDefn.lab_version_id + "_" + lab_version_id + ".xsd"; relativeFileSpecSchematron = - DMDocument.outputDirPath + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.getOutputDirPath() + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.masterPDSSchemaFileDefn.lab_version_id + "_" + lab_version_id + ".sch"; relativeFileNameXMLSchema = DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.masterPDSSchemaFileDefn.lab_version_id + "_" + lab_version_id + ".xsd"; @@ -315,51 +316,54 @@ public void setVersionIds() { relativeFileNameSchematron = DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.masterPDSSchemaFileDefn.lab_version_id + "_" + lab_version_id + ".sch"; relativeFileSpecXMLLabel = - DMDocument.outputDirPath + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.getOutputDirPath() + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.masterPDSSchemaFileDefn.lab_version_id + "_" + lab_version_id + ".xml"; relativeFileSpecDOMModelJSON = - DMDocument.outputDirPath + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.getOutputDirPath() + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.masterPDSSchemaFileDefn.lab_version_id + "_" + lab_version_id + ".JSON"; relativeFileSpecLDDPontMerge = - DMDocument.outputDirPath + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.getOutputDirPath() + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.masterPDSSchemaFileDefn.lab_version_id + "_" + lab_version_id + ".pont"; relativeFileSpecReportTXT = - DMDocument.outputDirPath + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.getOutputDirPath() + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.masterPDSSchemaFileDefn.lab_version_id + "_" + lab_version_id + ".txt"; relativeFileSpecDDCSV = - DMDocument.outputDirPath + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.getOutputDirPath() + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.masterPDSSchemaFileDefn.lab_version_id + "_" + lab_version_id; relativeFileSpecCCSDSCSV = - DMDocument.outputDirPath + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.getOutputDirPath() + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + DMDocument.masterPDSSchemaFileDefn.lab_version_id + "_CCSDS" + "_" + lab_version_id; } - relativeFileSpecDDDocXML = DMDocument.outputDirPath + "export/DD/" + DMDocument.mastModelId + relativeFileSpecDDDocXML = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + "DD" + "_" + lab_version_id + ".xml"; - relativeFileSpecDDProtPins = DMDocument.outputDirPath + "Model_DataDictionary/" + "dd11179_Gen_" + relativeFileSpecDDProtPins = DMDocument.getOutputDirPath() + "export/" + "dd11179_Gen_" + DMDocument.masterTodaysDateyymmdd + ".pins"; relativeFileSpecDDProtPinsSN = - DMDocument.outputDirPath + "Model_DataDictionary/" + "dd11179_Gen" + ".pins"; - relativeFileSpecModelRDF = DMDocument.outputDirPath + "export/rdf/" + DMDocument.mastModelId + DMDocument.getOutputDirPath() + "export/" + "dd11179_Gen" + ".pins"; + relativeFileSpecModelRDF = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + "MODEL" + "_" + lab_version_id + ".rdf"; - relativeFileSpecOWLRDF_DOM = DMDocument.outputDirPath + "export/owl/" + DMDocument.mastModelId + relativeFileSpecOWLRDF_DOM = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + "OWL" + "_" + lab_version_id + ".rdf"; - relativeFileSpecSKOSTTL_DOM = DMDocument.outputDirPath + "export/skos/" + DMDocument.mastModelId + relativeFileSpecSKOSTTL_DOM = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + "SKOS" + "_" + lab_version_id + ".ttl"; - relativeFileSpecUMLXMI = DMDocument.outputDirPath + "export/xmi/" + DMDocument.mastModelId + "_" + relativeFileSpecUMLXMI = + DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + "XMI" + "_clean" + "_" + lab_version_id + ".xmi"; - relativeFileSpecUMLXMI2 = DMDocument.outputDirPath + "export/xmi/" + DMDocument.mastModelId + relativeFileSpecUMLXMI2 = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + "XMI" + "_wNames" + "_" + lab_version_id + ".xmi"; - relativeFileSpecModelPVL = DMDocument.outputDirPath + "export/pvl/" + DMDocument.mastModelId + relativeFileSpecModelPVL = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + "PVL" + "_" + lab_version_id + "_"; - relativeFileSpecModelRIM1 = DMDocument.outputDirPath + "export/rim/" + DMDocument.mastModelId + relativeFileSpecModelRIM1 = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + "RIM1" + "_" + lab_version_id + ".txt"; - relativeFileSpecModelRIM3 = DMDocument.outputDirPath + "export/rim/" + DMDocument.mastModelId + relativeFileSpecModelRIM3 = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + "RIM3" + "_" + lab_version_id + ".txt"; - relativeFileSpecModelRIM4 = DMDocument.outputDirPath + "export/rim/" + DMDocument.mastModelId + relativeFileSpecModelRIM4 = DMDocument.getOutputDirPath() + "export/" + DMDocument.mastModelId + "_" + nameSpaceIdNCUC + "_" + "RIM4" + "_" + lab_version_id + ".txt"; - relativeFileSpecAttrDefn = DMDocument.outputDirPath + "export/defnAttr/"; - relativeFileSpecClassDefn = DMDocument.outputDirPath + "export/defnClass/"; + relativeFileSpecAttrDefn = DMDocument.getOutputDirPath() + "export/defnAttr/"; + relativeFileSpecClassDefn = DMDocument.getOutputDirPath() + "export/defnClass/"; + Utility.checkCreateDirectory(relativeFileSpecAttrDefn); + Utility.checkCreateDirectory(relativeFileSpecClassDefn); return; } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDDJSONFile.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDDJSONFile.java index 4416efd4..160a678e 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDDJSONFile.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDDJSONFile.java @@ -38,6 +38,7 @@ import java.util.Iterator; import java.util.Set; import java.util.TreeMap; +import gov.nasa.pds.model.plugin.util.Utility; /** * Writes the PDS4 DOM DD content to a JSON file @@ -307,7 +308,7 @@ public void printAssoc(DOMClass lClass, PrintWriter prDDPins) { lDOMPropGroup.domObjectArr.add(lDOMObject); } } else { - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "WriteDOMDDJSONFile - Failed to find DOMObject - lDOMProp.identifier: " + lDOMProp.identifier); } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDocBook.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDocBook.java index 8b24fc52..e4ed5162 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDocBook.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDocBook.java @@ -37,6 +37,7 @@ import java.util.Iterator; import java.util.Set; import java.util.TreeMap; +import gov.nasa.pds.model.plugin.util.Utility; // Write the PDS4 Data Dictionary DocBook file. @@ -143,14 +144,14 @@ public WriteDOMDocBook() { } // print out the class and attribute counts - DMDocument.registerMessage("0>info " + "DD DocBook Class Counts"); + Utility.registerMessage("0>info " + "DD DocBook Class Counts"); Set set9 = classClassificationMap.keySet(); Iterator iter9 = set9.iterator(); while (iter9.hasNext()) { String lId = iter9.next(); ClassClassificationDefnDOM lClassClassificationDefnDOM = classClassificationMap.get(lId); if (lClassClassificationDefnDOM != null) { - DMDocument.registerMessage("0>info " + " - namespace: " + lId + " size: " + Utility.registerMessage("0>info " + " - namespace: " + lId + " size: " + lClassClassificationDefnDOM.classArr.size()); if (lClassClassificationDefnDOM.classArr.size() > 0) { if (!(lId.compareTo(DMDocument.masterNameSpaceIdNCLC) == 0 @@ -167,14 +168,14 @@ public WriteDOMDocBook() { } } - DMDocument.registerMessage("0>info " + "DD DocBook Attribute Counts"); + Utility.registerMessage("0>info " + "DD DocBook Attribute Counts"); Set set92 = classClassificationMap.keySet(); Iterator iter92 = set92.iterator(); while (iter92.hasNext()) { String lId = iter92.next(); AttrClassificationDefnDOM lAttrClassificationDefnDOM = attrClassificationMap.get(lId); if (lAttrClassificationDefnDOM != null) { - DMDocument.registerMessage("0>info " + " - namespace: " + lId + " size: " + Utility.registerMessage("0>info " + " - namespace: " + lId + " size: " + lAttrClassificationDefnDOM.attrArr.size()); } } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDocBookAnon.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDocBookAnon.java index 33c5e261..3b1e034e 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDocBookAnon.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMDocBookAnon.java @@ -31,6 +31,7 @@ import java.io.*; import java.util.*; +import gov.nasa.pds.model.plugin.util.Utility; // Write the Data Dictionary DocBook file with PDS mentioned removed // Writes a DocBook file for each namespace id @@ -147,14 +148,14 @@ public WriteDOMDocBookAnon () { } // print out the class and attribute counts - DMDocument.registerMessage ("0>info " + "DD DocBook Class Counts"); + Utility.registerMessage ("0>info " + "DD DocBook Class Counts"); Set set9 = classClassificationMap.keySet(); Iterator iter9 = set9.iterator(); while(iter9.hasNext()) { String lId = (String) iter9.next(); ClassClassificationDefnDOM lClassClassificationDefnDOM = classClassificationMap.get(lId); if (lClassClassificationDefnDOM != null ) { - DMDocument.registerMessage ("0>info " + " - namespace: " + lId + " size: " + lClassClassificationDefnDOM.classArr.size()); + Utility.registerMessage ("0>info " + " - namespace: " + lId + " size: " + lClassClassificationDefnDOM.classArr.size()); if (lClassClassificationDefnDOM.classArr.size() > 0) { if (! (lId.compareTo(DMDocument.masterNameSpaceIdNCLC) == 0 || lId.compareTo("pds.product") == 0 @@ -171,14 +172,14 @@ public WriteDOMDocBookAnon () { } } - DMDocument.registerMessage ("0>info " + "DD DocBook Attribute Counts"); + Utility.registerMessage ("0>info " + "DD DocBook Attribute Counts"); Set set92 = classClassificationMap.keySet(); Iterator iter92 = set92.iterator(); while(iter92.hasNext()) { String lId = (String) iter92.next(); AttrClassificationDefnDOM lAttrClassificationDefnDOM = attrClassificationMap.get(lId); if (lAttrClassificationDefnDOM != null ) - DMDocument.registerMessage ("0>info " + " - namespace: " + lId + " size: " + lAttrClassificationDefnDOM.attrArr.size()); + Utility.registerMessage ("0>info " + " - namespace: " + lId + " size: " + lAttrClassificationDefnDOM.attrArr.size()); } return; } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMSchematron.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMSchematron.java index b59d7296..b138e1d1 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMSchematron.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMSchematron.java @@ -37,6 +37,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.TreeMap; +import gov.nasa.pds.model.plugin.util.Utility; class WriteDOMSchematron extends Object { PrintWriter prSchematron; @@ -83,14 +84,14 @@ public void writeSchematronRule(SchemaFileDefn lSchemaFileDefn, || lSchemaFileDefn.nameSpaceIdNC.compareTo(lRule.attrNameSpaceNC) == 0))) continue; } else if (lSchemaFileDefn.isLDD) { // write an LDD schemtron - DMDocument.registerMessage( + Utility.registerMessage( "2>info " + "Found LDD - lSchemaFileDefn.isMission:" + lSchemaFileDefn.isMission); if (!(lRule.isMissionOnly && lSchemaFileDefn.isMission) || !((lSchemaFileDefn.nameSpaceIdNC.compareTo(lRule.classNameSpaceNC) == 0 && lSchemaFileDefn.stewardArr.contains(lRule.classSteward)) || (lRule.classTitle.compareTo(DMDocument.LDDToolSingletonClassTitle) == 0))) continue; } else { - DMDocument.registerMessage("1>warning " + Utility.registerMessage("1>warning " + "Write Schematron - Invalid governance in SchemaFileDefn - lSchemaFileDefn.identifier:" + lSchemaFileDefn.identifier); } @@ -270,7 +271,7 @@ public void printSchematronFileHdr(SchemaFileDefn lSchemaFileDefn, PrintWriter p lVersionNSId = DMDocument.masterPDSSchemaFileDefn.ns_version_id; lNameSpaceURL = DMDocument.masterPDSSchemaFileDefn.nameSpaceURL; lNameSpaceIdNCDIR = DMDocument.masterPDSSchemaFileDefn.nameSpaceIdNCDir; - DMDocument.registerMessage("1>warning " + Utility.registerMessage("1>warning " + "config.properties file entry is missing for namespace id:" + lNameSpaceIdNC); } } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMSpecification.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMSpecification.java index a9233857..e6453ca1 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMSpecification.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMSpecification.java @@ -42,6 +42,7 @@ import java.util.Iterator; import java.util.Set; import java.util.TreeMap; +import gov.nasa.pds.model.plugin.util.Utility; /** * Driver for getting document @@ -584,7 +585,7 @@ private void printTableRow2(ArrayList lPropArr, String relation) { lAnchorString = lClass.anchorString; } else { // error - DMDocument.registerMessage("1>error " + Utility.registerMessage("1>error " + "printTableRow2 - Component Class is missing - lClassId:" + lClassId); } } else { diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMStandardIdExtract.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMStandardIdExtract.java index 1abbcfdf..7bba2433 100755 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMStandardIdExtract.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteDOMStandardIdExtract.java @@ -59,7 +59,7 @@ public void writeExtractFile() throws java.io.IOException { public void writeExtractFileBegin() throws java.io.IOException { // Write the files consisting of individual classes - String lFileName = DMDocument.outputDirPath + "export/" + "StandardId" + "_" + String lFileName = DMDocument.getOutputDirPath() + "export/" + "StandardId" + "_" + DOMInfoModel.lab_version_id + ".txt"; prPVL = new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File(lFileName)), "UTF-8")); diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteMappingFile.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteMappingFile.java index be69bb88..4c75b1c5 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteMappingFile.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/WriteMappingFile.java @@ -42,6 +42,7 @@ import java.util.Collections; import java.util.Map; import java.util.StringTokenizer; +import gov.nasa.pds.model.plugin.util.Utility; /** * Writes terminological map to the ./map directory @@ -135,10 +136,10 @@ public void writeMappingFile(String registrationAuthority, ArrayList inp bReader.close(); } catch (FileNotFoundException ex) { // file does not exist - DMDocument.registerMessage("1>error " + "csv file does not exist."); + Utility.registerMessage("1>error " + "csv file does not exist."); } catch (IOException ex) { // I/O error - DMDocument.registerMessage("1>error " + "input file IO Exception."); + Utility.registerMessage("1>error " + "input file IO Exception."); } } // end while diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/XML4LabelSchemaDOM.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/XML4LabelSchemaDOM.java index 8ed11ec4..5bf44572 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/XML4LabelSchemaDOM.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/XML4LabelSchemaDOM.java @@ -40,7 +40,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; - +import gov.nasa.pds.model.plugin.util.Utility; import jdk.internal.org.jline.utils.Log; // This code writes the information model to XML schema, attempting to replicate the class @@ -70,7 +70,7 @@ public XML4LabelSchemaDOM() { public void writeXMLSchemaFiles(SchemaFileDefn lSchemaFileDefn, ArrayList lInputClassArr) throws java.io.IOException { - DMDocument.registerMessage("0>info " + "writeXMLSchemaFiles - lSchemaFileDefn.identifier:" + Utility.registerMessage("0>info " + "writeXMLSchemaFiles - lSchemaFileDefn.identifier:" + lSchemaFileDefn.identifier); // get the classes @@ -161,7 +161,7 @@ public void writeXMLSchemaFiles(SchemaFileDefn lSchemaFileDefn, } // Write the classes - DMDocument.registerMessage("0>info " + Utility.registerMessage("0>info " + "writeXMLSchemaFiles - Write Classes - classHierMap.size():" + classHierMap.size()); ArrayList lClassArr = new ArrayList<>(classHierMap.values()); for (Iterator i = lClassArr.iterator(); i.hasNext();) { @@ -320,10 +320,10 @@ public void writeXMLSchemaFileHeader(SchemaFileDefn lSchemaFileDefn, PrintWriter } prXML.println(" <" + pNS + "schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\""); - DMDocument + Utility .registerMessage("0>info " + "writeXMLSchemaFileHeader - lSchemaFileDefn.nameSpaceIdNC:" + lSchemaFileDefn.nameSpaceIdNC); - DMDocument + Utility .registerMessage("0>info " + "writeXMLSchemaFileHeader - DMDocument.masterNameSpaceIdNCLC:" + DMDocument.masterNameSpaceIdNCLC); @@ -385,7 +385,7 @@ public void writeXMLSchemaFileHeader(SchemaFileDefn lSchemaFileDefn, PrintWriter lVersionNSId = DMDocument.masterPDSSchemaFileDefn.ns_version_id; lNameSpaceURL = DMDocument.masterPDSSchemaFileDefn.nameSpaceURL; lNameSpaceIdNCDIR = DMDocument.masterPDSSchemaFileDefn.nameSpaceIdNCDir; - DMDocument.registerMessage("1>warning " + Utility.registerMessage("1>warning " + "config.properties file entry is missing for namespace id:" + lNameSpaceIdNC); } } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/XMLDocParserDomMDPTNConfig.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/XMLDocParserDomMDPTNConfig.java index b151f09b..170c2021 100644 --- a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/XMLDocParserDomMDPTNConfig.java +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/XMLDocParserDomMDPTNConfig.java @@ -40,6 +40,7 @@ import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; +import gov.nasa.pds.model.plugin.util.Utility; /** @@ -95,11 +96,11 @@ private void getTable() { // get the root element Element lRootElem = dom.getDocumentElement(); if (lRootElem != null) { - DMDocument.registerMessage("0>info " + "Found required file: " + DMDocument.dataDirPath + Utility.registerMessage("0>info " + "Found required file: " + DMDocument.dataDirPath + "MDPTNConfigClassDisp.xml"); getRecord(lRootElem); } else { - DMDocument.registerMessage("3>error " + "Did not find required file: " + Utility.registerMessage("3>error " + "Did not find required file: " + DMDocument.dataDirPath + "MDPTNConfigClassDisp.xml"); } } @@ -217,7 +218,7 @@ private void getField(Element lElem) { classDisposition.intSteward = lSteward; classDispositionMap.put(lNameValue, classDisposition); } else if (!DMDocument.LDDToolFlag) { - DMDocument.registerMessage( + Utility.registerMessage( "1>error " + "Duplicate class exists - Class Identifier:" + lNameValue); } } diff --git a/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/util/Utility.java b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/util/Utility.java new file mode 100644 index 00000000..3fda334a --- /dev/null +++ b/model-dmdocument/src/main/java/gov/nasa/pds/model/plugin/util/Utility.java @@ -0,0 +1,80 @@ +package gov.nasa.pds.model.plugin.util; + +import java.io.File; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.filefilter.TrueFileFilter; +import org.apache.commons.io.filefilter.WildcardFileFilter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import gov.nasa.pds.model.plugin.DMDocument; +import gov.nasa.pds.model.plugin.DOMMsgDefn; + +public class Utility { + private static final Logger LOG = LoggerFactory.getLogger(Utility.class); + + public static boolean checkCreateDirectory(String lDirectoryPathName) { + File file = new File(lDirectoryPathName); + if (file.exists() && file.isDirectory()) { + Utility.registerMessage("0>info Found directory: " + lDirectoryPathName); + return true; + } + // Create the directory + boolean bool = file.mkdirs(); + if (bool) { + Utility.registerMessage("0>info Created directory: " + lDirectoryPathName); + return true; + } else { + Utility.registerMessage("1>error Directory create failed: " + lDirectoryPathName); + } + return false; + } + + public static boolean checkFileName(String inputFileName) { + File file = new File(inputFileName); + if (file.exists() && (file.isFile())) { + Utility.registerMessage("0>info Found input file: " + inputFileName); + return true; + } + Utility.registerMessage("1>error " + "Input file not found: " + inputFileName); + return false; + } + + public static void registerMessage(String lMessage) { + DOMMsgDefn lMessageDefn = new DOMMsgDefn(lMessage); + DMDocument.mainMsgArr.add(lMessageDefn); + return; + } + + public static void registerMessage(String lNameSpaceIdNCLC, String lMessage) { + DOMMsgDefn lMessageDefn = new DOMMsgDefn(lMessage); + lMessageDefn.setNameSpaceIdNCLC(lNameSpaceIdNCLC); + DMDocument.mainMsgArr.add(lMessageDefn); + return; + } + + public static String[] getFilepaths(String basePath, String extension) throws URISyntaxException { + if (!extension.startsWith(".")) { + extension = "." + extension; + } + + Path path = Paths.get(basePath); + Iterator fileIter = FileUtils.iterateFiles(path.toFile(), + WildcardFileFilter.builder().setWildcards("*" + extension).get(), TrueFileFilter.INSTANCE); + + List fileList = new ArrayList<>(); + while (fileIter.hasNext()) { + fileList.add(fileIter.next().getAbsolutePath()); + } + + String[] filepaths = new String[fileList.size()]; + return fileList.toArray(filepaths); + } + + +} diff --git a/model-lddtool/pom.xml b/model-lddtool/pom.xml index bec1f537..277f027d 100644 --- a/model-lddtool/pom.xml +++ b/model-lddtool/pom.xml @@ -194,6 +194,12 @@ 7.15.0 test + + gov.nasa.pds + validate + 3.6.0-SNAPSHOT + test + diff --git a/model-lddtool/src/test/java/cucumber/LddToolRunner.java b/model-lddtool/src/test/java/cucumber/LddToolRunner.java index cb26339b..3a08189b 100644 --- a/model-lddtool/src/test/java/cucumber/LddToolRunner.java +++ b/model-lddtool/src/test/java/cucumber/LddToolRunner.java @@ -1,12 +1,10 @@ package cucumber; import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.PrintStream; -import java.security.Permission; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import gov.nasa.pds.model.plugin.DMDocument; /** @@ -29,15 +27,18 @@ public class LddToolRunner { * @return the output of lddtool * @throws Throwable if an error occurs while running lddtool */ - public static String runLddTool(String[] args) throws Throwable { + public static String runLddTool(String[] args, String outDirectory) throws Throwable { String output = null; // output of lddtool try { - LOG.info("Run LDDTool"); setupStreams(); // Redirect System.out and System.err to capture them + File f = new File(outDirectory); + f.mkdirs(); + DMDocument.setOutputDirPath(outDirectory + File.separatorChar); DMDocument.run(args); output = outContent.toString(); } catch (Exception e) { // Throw an exception if an error occurs while setting the SecurityManager + e.printStackTrace(); throw new Exception("An error occurred while setting the SecurityManager in runLddTool", e); } finally { restoreStreams(); // Restore the original System.out and System.err diff --git a/model-lddtool/src/test/java/cucumber/StepDefs.java b/model-lddtool/src/test/java/cucumber/StepDefs.java index bfea3b25..5ee2771a 100644 --- a/model-lddtool/src/test/java/cucumber/StepDefs.java +++ b/model-lddtool/src/test/java/cucumber/StepDefs.java @@ -1,16 +1,11 @@ package cucumber; -import static org.junit.jupiter.api.Assertions.*; - -import io.cucumber.java.After; -import io.cucumber.java.Before; -import io.cucumber.java.en.Given; -import io.cucumber.java.en.Then; -import io.cucumber.java.en.When; - +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; -import java.io.FilenameFilter; import java.io.FileNotFoundException; +import java.io.FilenameFilter; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -20,9 +15,13 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.cucumber.java.After; +import io.cucumber.java.Before; +import io.cucumber.java.en.Given; +import io.cucumber.java.en.Then; +import io.cucumber.java.en.When; /** * This class connects the feature files with the Cucumber test code @@ -32,8 +31,8 @@ public class StepDefs { // The values of these variables should come from a row in the table in the // feature file. - private String inputDirectory; - private String outputDirectory; + private static String inputDirectory; + private static String outputDirectory; private String commandArgs; /** @@ -41,17 +40,25 @@ public class StepDefs { * @param args the command arguments * @return a String array containing the resolved command arguments */ - private String[] resolveArgumentStrings(String[] args) { + private static String[] resolveArgumentStrings(String[] args) { String[] resolvedArgs = new String[args.length]; int argIndex = 0; - // Replace the placeholders with actual values - for (String temp : args) { - String resolvedToken = temp.replace("{inputDirectory}", this.inputDirectory) - .replace("{outputDirectory}", this.outputDirectory) - .replace("%20", " "); - resolvedArgs[argIndex++] = resolvedToken; + + LOG.info("inputDirectory: " + inputDirectory); + LOG.info("outputDirectory: " + outputDirectory); + if (inputDirectory != null && outputDirectory != null) { + // Replace the placeholders with actual values + for (String temp : args) { + + String resolvedToken = temp.replace("{inputDirectory}", inputDirectory) + .replace("{outputDirectory}", outputDirectory) + .replace("%20", " "); + resolvedArgs[argIndex++] = resolvedToken; + } + return resolvedArgs; + } else { + return args; } - return resolvedArgs; } /** @@ -62,6 +69,7 @@ private String[] resolveArgumentStrings(String[] args) { * @throws IOException if an I/O error occurs */ private static void moveGeneratedFiles(String sourceDir, String targetDir, String pattern) throws IOException { + LOG.info("moveGeneratedFiles"); File source = new File(sourceDir); File target = new File(targetDir); @@ -203,8 +211,8 @@ private static List filterLines(List lines, List exclude */ @Before public void setUp() { - this.inputDirectory = null; - this.outputDirectory = null; + inputDirectory = null; + outputDirectory = null; this.commandArgs = null; System.setProperty(org.slf4j.simple.SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "DEBUG"); } @@ -216,9 +224,11 @@ public void setUp() { * @param commandArgs the command arguments */ @Given("the directories {string}, {string}, and command arguments {string}") - public void test_directories_and_command_arguments(String inputDirectory, String outputDirectory, String commandArgs) { - this.inputDirectory = inputDirectory; - this.outputDirectory = outputDirectory; + public void test_directories_and_command_arguments(String inDir, String outDir, String commandArgs) { + inputDirectory = inDir; + outputDirectory = outDir; + LOG.debug("inputDirectory: " + inputDirectory); + LOG.debug("outputDirectory: " + outputDirectory); this.commandArgs = commandArgs; } @@ -227,24 +237,7 @@ public void test_directories_and_command_arguments(String inputDirectory, String */ @When("lddtool is run") public void run_lddtool() { - String[] args = resolveArgumentStrings(this.commandArgs.split("\\s+")); // resolve the commandArgs into a String array - String actualResponse; - try { - // run lddtool with the commandArgs and capture the output - actualResponse = LddToolRunner.runLddTool(args); - - // create an output file from the lddtool output and save it to target/generated-files directory - createOutputFile(actualResponse, this.outputDirectory + "/lddtool-output.txt"); - - // move lddtool-generated files to target/generated-files directory - moveGeneratedFiles(".", this.outputDirectory + "/", "PDS4_"); - } catch (RuntimeException ex) { - throw ex; - } catch (Throwable ex) { - throw new RuntimeException("DMDocument error", ex); - } - args = null; - actualResponse = null; + exec_lddtool(this.commandArgs, this.outputDirectory); } /** @@ -316,8 +309,8 @@ public void output_should_match_expected_file(String actualOutputFile, String ex // Read the content of the actual and expected output files by line try { - actualLines = Files.readAllLines(Paths.get(this.outputDirectory, actualOutputFile)); - expectedLines = Files.readAllLines(Paths.get(this.inputDirectory, expectedOutputFile)); + actualLines = Files.readAllLines(Paths.get(outputDirectory, actualOutputFile)); + expectedLines = Files.readAllLines(Paths.get(inputDirectory, expectedOutputFile)); } catch (IOException ex) { throw new RuntimeException("Failed to read file", ex); } @@ -333,14 +326,35 @@ public void output_should_match_expected_file(String actualOutputFile, String ex expectedLines = null; excludeList = null; } + + public static void exec_lddtool(String commandArgs, String outputDir) { + String[] args = resolveArgumentStrings(commandArgs.split("\\s+")); // resolve the commandArgs into a String array + String actualResponse; + try { + // run lddtool with the commandArgs and capture the output + actualResponse = LddToolRunner.runLddTool(args, outputDir); + + // create an output file from the lddtool output and save it to target/generated-files directory + createOutputFile(actualResponse, outputDir + "/lddtool-output.txt"); + + // move lddtool-generated files to target/generated-files directory + // moveGeneratedFiles(".", outputDir + "/", "PDS4_"); + } catch (RuntimeException ex) { + throw ex; + } catch (Throwable ex) { + throw new RuntimeException("DMDocument error", ex); + } + args = null; + actualResponse = null; + } /* * This method is called after each test case to clean up the test environment */ @After public void tearDown() { - this.inputDirectory = null; - this.outputDirectory = null; + inputDirectory = null; + outputDirectory = null; this.commandArgs = null; } } diff --git a/model-lddtool/src/test/java/cucumber/TestConstants.java b/model-lddtool/src/test/java/cucumber/TestConstants.java new file mode 100644 index 00000000..bfcc1d2e --- /dev/null +++ b/model-lddtool/src/test/java/cucumber/TestConstants.java @@ -0,0 +1,15 @@ +package cucumber; + +import java.io.File; + +public final class TestConstants { + + public static final String TEST_DATA_DIR = + System.getProperty("user.dir") + File.separator + "src/test/resources"; + public static final String TEST_OUT_DIR = + System.getProperty("user.dir") + File.separator + "target/test"; + public static final String EXAMPLE_DIR = + System.getProperty("user.dir") + File.separator + "src/main/resources/examples"; + public static final String RESOURCES_DIR = + System.getProperty("user.dir") + File.separator + "src/main/resources/util"; +} \ No newline at end of file diff --git a/model-lddtool/src/test/java/cucumber/ValidateStepDefs.java b/model-lddtool/src/test/java/cucumber/ValidateStepDefs.java new file mode 100644 index 00000000..d147b16a --- /dev/null +++ b/model-lddtool/src/test/java/cucumber/ValidateStepDefs.java @@ -0,0 +1,375 @@ +package cucumber; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.apache.commons.io.FileUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import gov.nasa.pds.model.plugin.util.Utility; +import gov.nasa.pds.tools.validate.CrossLabelFileAreaReferenceChecker; +import gov.nasa.pds.tools.validate.ProblemType; +import gov.nasa.pds.validate.ValidateLauncher; +import io.cucumber.java.en.Given; +import io.cucumber.java.en.Then; +import io.cucumber.java.en.When; + +public class ValidateStepDefs { + // Class used as a glue to connect a feature file to cucumber test code. + + private static final Logger LOG = LoggerFactory.getLogger(ValidateStepDefs.class); + private static final String DEFAULT_REPORT_FILENAME = "report_{testDir}.json"; + private static final String DEFAULT_VALIDATE_ARGS = + "--update-context-products --report-style json --skip-content-validation --report-file {reportDir}/" + + DEFAULT_REPORT_FILENAME + " "; + private static final String DEFAULT_CORE_ARGS = "-p"; + private static final String DEFAULT_LDDTOOL_ARGS = "-lp"; + + + // For some strange reason, cucumber suppresses the printing of log output + // unless the following parameters are added at command line: + // Assuming slf4j-simple-1.7.28.jar exist in target/validate-1.25.0-SNAPSHOT/lib + // directory. + // -Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG + + // "-cp + // "target/validate-1.25.0-SNAPSHOT/lib/slf4j-simple-1.7.28.jar:target/test-classes:target/validate-1.25.0-SNAPSHOT/lib/* + // For example: + // + // java -Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG -cp + // "target/validate-1.25.0-SNAPSHOT/lib/slf4j-simple-1.7.28.jar:target/test-classes:target/validate-1.25.0-SNAPSHOT/lib/*" + // io.cucumber.core.cli.Main target/test-classes/features + // + // Note that the slf4j-simple-1.7.28.jar has to be explicitly called out first. + + private File outputData = null; + // A class to run each test. It must be instantiated for each test in the + // setUp() function. + private ValidateLauncher launcher = null; + + // The values of these variables should come from a row in the table in the + // feature file. + private String testName; + private String testDir; + private int messageCount; + private String messageText; + private String problemEnum; + private String resourceDir; + private String reportDir; + private String commandArgs; + private String refOutputValue; + + private boolean createManifestFileFlag = false; + + /** + * @throws java.lang.Exception + */ + void setUp() throws Exception { + this.outputData = new File(TestConstants.TEST_OUT_DIR); + FileUtils.forceMkdir(this.outputData); // Create directory if one does not already exist. + System.setProperty("resources.home", TestConstants.TEST_OUT_DIR); + this.launcher = new ValidateLauncher(); + this.refOutputValue = DEFAULT_REPORT_FILENAME; + this.reportDir = TestConstants.TEST_OUT_DIR; + this.resourceDir = TestConstants.TEST_DATA_DIR; + + + } + + /** + * @throws java.lang.Exception + */ + void tearDown() throws Exception { + // FileUtils.forceDelete(this.outputData); + this.launcher.flushValidators(); + // It seems the launcher does not completely flush any references to schematron + // which causes problem for subsequent tests. + // get rid of the cross references + CrossLabelFileAreaReferenceChecker.reset(); + } + + private void createManifestFileDo(String testPath) { + // Function create a manifest file if the flag createManifestFileFlag it true. + // The file is normally used when --target-manifest is used in the command line. + // As of 10/13/2020, there is only one test github50 uses the manifest file. + + if (this.createManifestFileFlag) { + try { + String outFilePath = TestConstants.TEST_OUT_DIR; + String manifestFile = outFilePath + File.separator + "target-manifest.xml"; + String manifestText = testPath + File.separator + "ele_evt_12hr_orbit_2011-2012.xml\n" + + testPath + File.separator + "ele_evt_8hr_orbit_2012-2013.xml"; + BufferedWriter writerManifest = new BufferedWriter(new FileWriter(manifestFile)); + writerManifest.write(manifestText); + writerManifest.close(); + } catch (Exception e) { + e.printStackTrace(); + fail("Test Failed Due To Exception: " + e.getMessage()); + } + } + } + + private void createCatalogFileDo(String catFile, String testPath, boolean forceFlag) { + // Function create a catalog file if the flag createManifestFileFlag it true. + // The file is normally used when --target-manifest is used in the command line. + // As of 10/13/2020, there is only one test github50 uses the manifest file. + if ((this.createManifestFileFlag) || (forceFlag)) { + try { + // Create catalog file + String catText = "\n" + "\n" + "\n" + + " \n" + + " \n" + ""; + + BufferedWriter writer = new BufferedWriter(new FileWriter(catFile)); + writer.write(catText); + writer.close(); + } catch (Exception e) { + e.printStackTrace(); + fail("Test Failed Due To Exception: " + e.getMessage()); + } + } + } + + private int getMessageCountBasedOnProblemType(String problemEnum, JsonObject reportJson) { + // Given an output report, retrieve the 'count' field based on the problemEnum + // value. + int totalCount = 0; + int count = 0; // Individual enum + // It is possible that the value is more than one: e.g + // CONTEXT_REFERENCE_NOT_FOUND,CONTEXT_REFERENCE_FOUND_MISMATCH + // Split using command and loop through each enum to fetch the count. + String[] problemTokens = problemEnum.split(","); + + for (String strTemp : problemTokens) { + if (strTemp.contains("total")) { + count = reportJson.getAsJsonObject("summary").get(strTemp).getAsInt(); + } else { + count = this.getMessageCount(reportJson, + ProblemType.valueOf(ProblemType.class, strTemp).getKey()); + } + LOG.debug("getMessageCountBasedOnProblemType: strTemp, count " + strTemp + " " + + Integer.toString(count)); + totalCount += count; + } + + LOG.debug("getMessageCountBasedOnProblemType: problemEnum, totalCount " + problemEnum + + " " + Integer.toString(totalCount)); + + return (totalCount); + } + + private String[] resolveArgumentStrings(String commandArgs) throws URISyntaxException { + // Given the value of this.commandArgs (just one long string), split using + // spaces and replace all {reportDir} and {resourceDir} with actual value. + // and return an array of tokens. This returned value can then be used to send + // to processMain() function. + // Example: + // + // "-r {reportDir}/report_github50_1.json -s json --no-data-check + // --target-manifest {reportDir}/target-manifest.xml + // becomes: + // "-r target/test/report_github50_1.json -s, json, --no-data-check + // --target-manifest target/test/target-manifest.xml + + + String array1[] = getDefaultValidateArguments(commandArgs); + String[] args = new String[array1.length]; + int argIndex = 0; + String resolvedToken = ""; + for (String temp : array1) { + resolvedToken = temp.replace("{reportDir}", this.reportDir); + resolvedToken = resolvedToken.replace("{testDir}", this.testDir); + resolvedToken = resolvedToken.replace("{outDir}", TestConstants.TEST_OUT_DIR + File.separator + this.testDir); + resolvedToken = resolvedToken.replace("{resourceDir}", this.resourceDir); + resolvedToken = resolvedToken.replace("%20", " "); + args[argIndex++] = resolvedToken; + } + + LOG.debug("resolveArgumentStrings() commandArgs = [" + commandArgs + "]"); + LOG + .info("args = [" + Arrays.toString(args) + "]"); + LOG.debug("resolveArgumentStrings() this.reportDir = [" + this.reportDir + "]"); + LOG.debug("resolveArgumentStrings() this.resourceDir = [" + this.resourceDir + "]"); + LOG.debug("resolveArgumentStrings() this.testName = [" + this.testName + "]"); + + return (args); + } + + @Given("the test {string} at directory {string}") + public void a_test_string_with_string(String testName, String testDir) { + // throw new io.cucumber.java.PendingException(); + this.testName = testName; + this.testDir = testDir; + this.reportDir = this.reportDir + File.separatorChar + testDir; + } + + @Given("expected error\\/warning count {int} with expected error\\/warning text of {string} with expected error from ValidateProblems enumeration {string}") + public void with_test_property(int messageCount, String messageText, String problemEnum) { + this.messageCount = messageCount; + this.messageText = messageText; + this.problemEnum = problemEnum; + LOG.debug("with_test_property:messageCount [" + Integer.toString(messageCount) + + "], messageText [" + messageText + "]"); + } + + @Given("the latest PDS4 schema\\/schematron is generated") + public void generate_pds4_schema() throws Exception { + StepDefs.exec_lddtool(DEFAULT_CORE_ARGS, + TestConstants.TEST_OUT_DIR + File.separator + this.testDir); + } + + @Given("a new LDD is generated using the IngestLDDs {string}") + public void generate_ldd(String ingestLDDFilename) throws Exception { + String ingestLDDPath = TestConstants.TEST_DATA_DIR + File.separator + this.testDir + + File.separator + ingestLDDFilename; + StepDefs.exec_lddtool(DEFAULT_LDDTOOL_ARGS + " " + ingestLDDPath, + TestConstants.TEST_OUT_DIR + File.separator + this.testDir); + } + + @When("execute validate command with {string} as arguments") + public void execute_a_validate_command(String commandArgs) { + // Write code here that turns the phrase above into concrete actions + // throw new io.cucumber.java.PendingException(); + LOG.debug("execute_a_validate_command:testDir " + this.testDir); + LOG.debug("execute_a_validate_command:testName " + this.testName); + + this.commandArgs = commandArgs; + + try { + this.setUp(); + + // Because this.commandArgs is a String but processMain() is expecing a String + // [], we have to + // convert this.commandArgs into an array of strings. + String[] args = this.resolveArgumentStrings(commandArgs); + + this.launcher.processMain(args); + + this.tearDown(); + + // Will do the compare of the report in another function. + } catch (ExitException e) { + assertEquals(0, e.status, "Exit status"); + } catch (Exception e) { + e.printStackTrace(); + fail("Test Failed Due To Exception: " + e.getMessage()); + } + } + + @Then("produced output from validate command should be similar to reported {string} JSON report or no error reported.") + public void produced_output_from_validate_command_should_be_similar_to_reference_ref_output_value_or_no_error_reported( + String testDir) { + + try { + Gson gson = new Gson(); + this.refOutputValue = this.refOutputValue.replace("{testDir}", this.testDir); + File report = new File(this.reportDir + File.separator + this.refOutputValue); + LOG.debug( + "produced_output_from_validate_command_should_be_similar_to_reference_ref_output_value_or_no_error_reported:report = [" + + report.getName() + "]"); + JsonObject reportJson = gson.fromJson(new FileReader(report), JsonObject.class); + + // Get the count for errors based on the value of problemEnum, e.g. + // MISSING_REFERENCED_FILE + int count = this.getMessageCountBasedOnProblemType(this.problemEnum, reportJson); + + LOG.debug( + "produced_output_from_validate_command_should_be_similar_to_reference_ref_output_value_or_no_error_reported:testName,problemEnum,count,refOutputValue: " + + this.testName + " " + problemEnum + " " + Integer.toString(count) + " " + + this.refOutputValue); + + // Compare the count from this test with the this.messageCount from test table. + assertEquals(count, this.messageCount, this.messageText + " " + reportJson.toString()); + + } catch (ExitException e) { + assertEquals(0, e.status, "Exit status"); + } catch (Exception e) { + e.printStackTrace(); + fail("Test Failed Due To Exception: " + e.getMessage()); + } + } + + protected static class ExitException extends SecurityException { + private static final long serialVersionUID = -1535371619727142623L; + + public final int status; + + public ExitException(int status) { + super("Program exited"); + this.status = status; + } + } + + int getMessageCount(JsonObject reportJson, String messageTypeName) { + int i = 0; + JsonObject message = null; + int count = 0; + if (messageTypeName.equals("totalErrors")) { + return reportJson.getAsJsonObject("summary").get("totalErrors").getAsInt(); + } + while (true) { + try { + message = reportJson.getAsJsonObject("summary").get("messageTypes").getAsJsonArray().get(i) + .getAsJsonObject(); + if (message.get("messageType").getAsString().equals(messageTypeName)) { + count = message.get("total").getAsInt(); + return count; + } + } catch (IndexOutOfBoundsException e) { + return count; + } + i++; + } + } + + private String getAbsolutePath(String path) throws Exception { + String finalPath = ""; + File testFile = new File(path); + if (!testFile.isAbsolute()) { + finalPath = System.getProperty("user.dir") + "/" + path; + } else { + finalPath = path; + } + + if (!(new File(finalPath)).exists()) { + throw new Exception("Path does not exist: " + finalPath); + } + + return finalPath; + } + + private String[] getDefaultValidateArguments(String commandArgs) throws URISyntaxException { + List argsList = new ArrayList(); + String[] args = DEFAULT_VALIDATE_ARGS.concat(this.commandArgs).split("\\s+"); + + // Get schema + String[] schemas = Utility + .getFilepaths(TestConstants.TEST_OUT_DIR + File.separatorChar + this.testDir, ".xsd"); + + // Get schematron + String[] schematrons = Utility + .getFilepaths(TestConstants.TEST_OUT_DIR + File.separatorChar + this.testDir, ".sch"); + + + Collections.addAll(argsList, args); + Collections.addAll(argsList, new String[] {"--schema"}); + Collections.addAll(argsList, schemas); + Collections.addAll(argsList, new String[] {"--schematron"}); + Collections.addAll(argsList, schematrons); + return Arrays.copyOf(argsList.toArray(), argsList.size(), String[].class); + } +} diff --git a/model-lddtool/src/test/resources/features/integration.feature b/model-lddtool/src/test/resources/features/integration.feature index c75720cd..138a7652 100644 --- a/model-lddtool/src/test/resources/features/integration.feature +++ b/model-lddtool/src/test/resources/features/integration.feature @@ -8,12 +8,25 @@ Feature: Running integration tests for lddtool When lddtool is run Then the produced output from lddtool command should in file + @NASA-PDS/pds4-information-model#738 @B15.0 Examples: | testName | inputDirectory | outputDirectory | commandArgs | assertType | output | actualOutputFile | | "NASA-PDS/pds4-information-model#733 LDDTool is throwing ERROR SetMasterAttrXMLBaseDataTypeFromDataType - Data Type is missing" | "src/test/resources/github733" | "target/generated-files/github733" | "-V 1N00 -lpJ {inputDirectory}/PDS4_KPLO_IngestLDD.xml" | "not contain" | "ERROR SetMasterAttrXMLBaseDataTypeFromDataType" | "lddtool-output.txt" | + + @NASA-PDS/pds4-information-model#738 @B15.0 + Examples: + | testName | inputDirectory | outputDirectory | commandArgs | assertType | output | actualOutputFile | | "NASA-PDS/pds4-information-model#738 LDDTool is not creating valid URL for KPLO" | "src/test/resources/github738" | "target/generated-files/github738_1" | "-V 1N00 -lpJ {inputDirectory}/PDS4_KPLO_IngestLDD.xml" | "contain" | "http://www.kari.re.kr/kpds/mission/kplo/v1" | ".xsd" | | "NASA-PDS/pds4-information-model#738 LDDTool is not creating valid URL for KPLO" | "src/test/resources/github738" | "target/generated-files/github738_2" | "-V 1N00 -lpJ {inputDirectory}/PDS4_KPLO_IngestLDD.xml" | "not contain" | "http://www.kari.re.kr/kpdsmission/kplo/v1 " | ".xsd" | + + @NASA-PDS/pds4-information-model#716 @B15.0 + Examples: + | testName | inputDirectory | outputDirectory | commandArgs | assertType | output | actualOutputFile | | "NASA-PDS/pds4-information-model#716 [namespace-registry]update namespace URL for KPDS" | "src/test/resources/github716" | "target/generated-files/github716" | "-V 1N00 -lpJ {inputDirectory}/PDS4_KPLO_IngestLDD.xml" | "contain" | "http://www.kari.re.kr/kpds/mission/kplo/v1" | ".sch" | + + @NASA-PDS/pds4-information-model#744 @B15.0 + Examples: + | testName | inputDirectory | outputDirectory | commandArgs | assertType | output | actualOutputFile | | "NASA-PDS/pds4-information-model#744 LDDTool producing invalid XSD for Voyager LDD" | "src/test/resources/github744" | "target/generated-files/github744" | "-lpJ {inputDirectory}/PDS4_VGR_IngestLDD.xml" | "not contain" | "The element type \"xs:documentation\" must be terminated by the matching end-tag \"\"" | ".xsd" | @@ -22,6 +35,7 @@ Feature: Running integration tests for lddtool When lddtool is run Then the contents of file should match except for lines containing comma-separated strings in + @NASA-PDS/pds4-information-model#738 @B15.0 Examples: | testName | inputDirectory | outputDirectory | commandArgs | expectedOutputFile | actualOutputFile | excludeStrings | | "NASA-PDS/pds4-information-model#738 LDDTool is not creating valid URL for KPLO" | "src/test/resources/github738" | "target/generated-files/github738_3" | "-V 1N00 -lpJ {inputDirectory}/PDS4_KPLO_IngestLDD.xml" | "PDS4_KPLO_1N00_1000.xsd" | ".xsd" | "PDS4 XML/Schema,Generated from the PDS4" | diff --git a/model-lddtool/src/test/resources/features/validate.feature b/model-lddtool/src/test/resources/features/validate.feature new file mode 100644 index 00000000..25c2817a --- /dev/null +++ b/model-lddtool/src/test/resources/features/validate.feature @@ -0,0 +1,16 @@ +Feature: Running integration tests for validate module + + Scenario Outline: Execute validate command for tests below. + Given the test at directory + Given the latest PDS4 schema/schematron is generated + Given a new LDD is generated using the IngestLDDs + Given expected error/warning count with expected error/warning text of with expected error from ValidateProblems enumeration + When execute validate command with as arguments + Then produced output from validate command should be similar to reported JSON report or no error reported. + + # The scenario about will automatically build the latest PDS4 Information Model as part of the validation. + + @NASA-PDS/pds4-information-model#797 @B15.0 + Examples: + | testName | testDir | messageCount | messageText | problemEnum | commandArgs | ingestLDDFileName | + | "Test1" | "github797" | 2 | "2 errors expected" | "SCHEMATRON_ERROR" | "--target {resourceDir}/github797/test_label1_FAIL.xml" | "PDS4_GEOM_IngestLDD.xml" | diff --git a/model-lddtool/src/test/resources/github797/No.Data b/model-lddtool/src/test/resources/github797/No.Data new file mode 100644 index 00000000..e69de29b diff --git a/model-lddtool/src/test/resources/github797/PDS4_GEOM_1N00_1970.sch b/model-lddtool/src/test/resources/github797/PDS4_GEOM_1N00_1970.sch deleted file mode 100644 index c0094204..00000000 --- a/model-lddtool/src/test/resources/github797/PDS4_GEOM_1N00_1970.sch +++ /dev/null @@ -1,2056 +0,0 @@ - - - - - - - Schematron using XPath 2.0 - - - - - - - - - - - - - - - - - //geom:Body_Identification_Base/pds:Internal_Reference/Rule - For Internal_Reference in Body_Identification_Base, reference_type must equal 'geometry_to_body' - - - - - - - //geom:Central_Body_Identification/Rule - At least one of the following must be present: geom:body_spice_name, geom:name, pds:Internal_Reference. - - - - - - //geom:Central_Body_Identification/pds:Internal_Reference/Rule - For Internal_Reference in Central_Body_Identification, reference_type must equal 'geometry_to_body' - - - - - - - //geom:Coordinate_Space_Reference/pds:Local_Internal_Reference/Rule - For Local_Internal_Reference in geom:Coordinate_Space_Reference, local_reference_type must equal 'to_reference_coordinate_space' - - - - - - - //geom:Coordinate_System_Origin_Identification/Rule - At least one of the following must be present: geom:body_spice_name, geom:name, pds:Internal_Reference. - - - - - - //geom:Coordinate_System_Origin_Identification/pds:Internal_Reference/Rule - For Internal_Reference in Coordinate_System_Origin_Identification, reference_type must equal 'geometry_to_body' - - - - - - - //geom:Frame_Identification_Base/pds:Internal_Reference/Rule - For Internal_Reference in geom:Frame_Identification_Base, reference_type must equal 'geometry_to_reference_frame' - - - - - - - //geom:Geometry_Target_Identification/Rule - At least one of the following must be present: geom:body_spice_name, geom:name, pds:Internal_Reference. - - - - - - //geom:Geometry_Target_Identification/pds:Internal_Reference/Rule - For Internal_Reference in geom:Geometry_Target_Identification, reference_type must equal 'geometry_to_body' - - - - - - - //geom:Illumination_Geometry/geom:Illumination_Specific/Rule - At least one of the following must be present: geom:reference_location, geom:reference_pixel_location, geom:Reference_Pixel. - - - - - - //geom:Observer_Identification/Rule - At least one of the following must be present: geom:body_spice_name, geom:name, pds:Internal_Reference. - - - - - - //geom:Observer_Identification/pds:Internal_Reference/Rule - For Internal_Reference in geom:Observer_Identification, reference_type must equal 'geometry_to_body' - - - - - - - //geom:Reference_Frame_Identification/Rule - At least one of the following must be present: geom:frame_spice_name, geom:name, pds:Internal_Reference. - - - - - - //geom:Reference_Frame_Identification/pds:Internal_Reference/Rule - For Internal_Reference in geom:Reference_Frame_Identification, reference_type must equal 'geometry_to_reference_frame' - - - - - - - //geom:Rotate_From/Rule - At least one of the following must be present: geom:frame_spice_name, geom:name, pds:Internal_Reference. - - - - - - //geom:Rotate_From/pds:Internal_Reference/Rule - For Internal_Reference in geom:Rotate_From, reference_type must equal 'geometry_to_reference_frame' - - - - - - - //geom:Rotate_To/Rule - At least one of the following must be present: geom:frame_spice_name, geom:name, pds:Internal_Reference. - - - - - - //geom:Rotate_To/pds:Internal_Reference/Rule - For Internal_Reference in geom:Rotate_To, reference_type must equal 'geometry_to_reference_frame' - - - - - - - geom:CAHVORE_Model/geom:cahvore_model_type/geom:cahvore_model_type - The attribute geom:CAHVORE_Model/geom:cahvore_model_type must be equal to one of the following values '1', '2', '3'. - - - - - - geom:Camera_Model_Parameters/geom:model_type/geom:model_type - The attribute geom:Camera_Model_Parameters/geom:model_type must be equal to one of the following values 'CAHV', 'CAHVOR', 'CAHVORE', 'PSPH'. - - - - - - geom:Camera_Model_Parameters/pds:Internal_Reference/Rule - For Internal_Reference in Camera_Model_Parameters, reference_type must equal 'geometry_to_camera_model'. - - - - - - - geom:Commanded_Geometry/geom:command_type/geom:command_type - The attribute geom:Commanded_Geometry/geom:command_type must be equal to one of the following values 'Angle_Absolute', 'Angle_Relative', 'Joint_Absolute', 'Joint_Relative', 'No_Motion', 'No_Motion_No_Arb', 'None', 'XYZ'. - - - - - - geom:Coordinate_Space_Definition/geom:positive_azimuth_direction/geom:positive_azimuth_direction - The attribute geom:Coordinate_Space_Definition/geom:positive_azimuth_direction must be equal to one of the following values 'CCW', 'CW', 'Clockwise', 'Counterclockwise'. - - - - - - geom:Coordinate_Space_Definition/geom:positive_elevation_direction/geom:positive_elevation_direction - The attribute geom:Coordinate_Space_Definition/geom:positive_elevation_direction must be equal to one of the following values 'Down', 'Nadir', 'Up', 'Zenith'. - - - - - - geom:Coordinate_Space_Definition/geom:quaternion_measurement_method/geom:quaternion_measurement_method - The attribute geom:Coordinate_Space_Definition/geom:quaternion_measurement_method must be equal to one of the following values 'Bundle_Adjustment', 'Coarse', 'Fine', 'Sun_Find', 'Tilt_Only', 'Unknown'. - - - - - - geom:Coordinate_Space_Indexed/geom:coordinate_space_frame_type/geom:coordinate_space_frame_type - The attribute geom:Coordinate_Space_Indexed/geom:coordinate_space_frame_type must be nulled or equal to one of the following values 'AEGIS_1', 'AEGIS_2', 'AEGIS_3', 'AEGIS_4', 'AEGIS_5', 'APXS_Frame', 'APXS_Frame', 'ARM_CUSTOM_TCP_FRAME', 'ARM_DOCKING_POST_FRAME', 'ARM_DRILL_FRAME', 'ARM_DRT_FRAME', 'ARM_FCS_FRAME', 'ARM_FRAME', 'ARM_GDRT_FRAME', 'ARM_MAHLI_FRAME', 'ARM_PIXL_FRAME', 'ARM_PORTION_FRAME', 'ARM_SCOOP_TCP_FRAME', 'ARM_SCOOP_TIP_FRAME', 'ARM_SHERLOC_FRAME', 'ARM_TURRET_FRAME', 'ARM_WATSON_FRAME', 'Arm_Custom_TCP_Frame', 'Arm_DRT_Frame', 'Arm_Docking_Post_Frame', 'Arm_Drill_Frame', 'Arm_FCS_Frame', 'Arm_Frame', 'Arm_GDRT_Frame', 'Arm_MAHLI_Frame', 'Arm_PIXL_Frame', 'Arm_Portion_Frame', 'Arm_SHERLOC_Frame', 'Arm_Scoop_TCP_Frame', 'Arm_Scoop_TIP_Frame', 'Arm_Turret_Frame', 'Arm_WATSON_Frame', 'CINT_FRAME', 'CINT_Frame', 'DRILL_BIT_TIP', 'HELI_G_FRAME', 'HELI_M_FRAME', 'HELI_S1_FRAME', 'HELI_S2_FRAME', 'Heli_G_Frame', 'Heli_M_Frame', 'Heli_S1_Frame', 'Heli_S2_Frame', 'LANDER_FRAME', 'LOCAL_LEVEL_FRAME', 'Lander_Frame', 'Local_Level_Frame', 'MB_Frame', 'MCMF_FRAME', 'MCMF_Frame', 'MCZ_CAL_PRIMARY', 'MEDA_RDS', 'MI_Frame', 'Mast_Frame', 'ORBITAL', 'Orbital', 'PIXL_BASE_FRAME', 'PIXL_Base_Frame', 'PIXL_SENSOR_FRAME', 'PIXL_Sensor_Frame', 'PIXL_TOOL', 'PIXL_Tool', 'ROVER_FRAME', 'ROVER_MECH_FRAME', 'ROVER_NAV_FRAME', 'RSM_FRAME', 'RSM_Frame', 'RSM_HEAD_FRAME', 'RSM_Head_Frame', 'Rat_Frame', 'Rover_Frame', 'Rover_Mech_Frame', 'Rover_Nav_Frame', 'SITE_FRAME', 'SUN', 'Site_Frame', 'TOOL_FRAME', 'TURRET_FRAME', 'Tool_Frame', 'Turret_Frame', 'WHEEL_LF', 'WHEEL_LM', 'WHEEL_LR', 'WHEEL_RF', 'WHEEL_RM', 'WHEEL_RR', 'Wheel_LF', 'Wheel_LM', 'Wheel_LR', 'Wheel_RF', 'Wheel_RM', 'Wheel_RR'. - - - - - - geom:Coordinate_Space_Quality/geom:attitude_propagation_duration/geom:attitude_propagation_duration - The attribute @unit must be equal to one of the following values 'day', 'hr', 'julian day', 'microseconds', 'min', 'ms', 'ns', 's', 'yr'. - - - - - - geom:Coordinate_Space_Quality/geom:quaternion_measurement_method/geom:quaternion_measurement_method - The attribute geom:Coordinate_Space_Quality/geom:quaternion_measurement_method must be equal to one of the following values 'Bundle_Adjustment', 'Coarse', 'Fine', 'Sun_Find', 'Tilt_Only', 'Unknown'. - - - - - - geom:Coordinate_System_Identification/geom:coordinate_system_type/geom:coordinate_system_type - The attribute geom:Coordinate_System_Identification/geom:coordinate_system_type must be nulled or equal to one of the following values 'Azimuth-Elevation', 'Cartesian', 'Planetocentric', 'Planetodetic', 'Planetographic', 'Spherical'. - - - - - - geom:Derived_Geometry/geom:emission_angle/geom:emission_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Derived_Geometry/geom:incidence_angle/geom:incidence_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Derived_Geometry/geom:instrument_azimuth/geom:instrument_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Derived_Geometry/geom:instrument_elevation/geom:instrument_elevation - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Derived_Geometry/geom:phase_angle/geom:phase_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Derived_Geometry/geom:solar_azimuth/geom:solar_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Derived_Geometry/geom:solar_elevation/geom:solar_elevation - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Derived_Geometry/geom:solar_image_clock_angle/geom:solar_image_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Derived_Geometry/geom:start_azimuth/geom:start_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Derived_Geometry/geom:stop_azimuth/geom:stop_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Derived_Geometry/geom:target_heliocentric_distance/geom:target_heliocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Display_Direction/geom:horizontal_display_direction/geom:horizontal_display_direction - The attribute geom:Display_Direction/geom:horizontal_display_direction must be equal to one of the following values 'Left to Right', 'Right to Left'. - - - - - - geom:Display_Direction/geom:vertical_display_direction/geom:vertical_display_direction - The attribute geom:Display_Direction/geom:vertical_display_direction must be equal to one of the following values 'Bottom to Top', 'Top to Bottom'. - - - - - - geom:Distance_Generic/geom:distance/geom:distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_geocentric_distance and geom:maximum_spacecraft_geocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_geocentric_distance and geom:maximum_spacecraft_geocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_heliocentric_distance and geom:maximum_spacecraft_heliocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_heliocentric_distance and geom:maximum_spacecraft_heliocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_central_body_distance and geom:maximum_spacecraft_central_body_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_central_body_distance and geom:maximum_spacecraft_central_body_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_target_center_distance and geom:maximum_spacecraft_target_center_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_target_center_distance and geom:maximum_spacecraft_target_center_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_target_boresight_intercept_distance and geom:maximum_spacecraft_target_boresight_intercept_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_target_boresight_intercept_distance and geom:maximum_spacecraft_target_boresight_intercept_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_target_subspacecraft_distance and geom:maximum_spacecraft_target_subspacecraft_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_spacecraft_target_subspacecraft_distance and geom:maximum_spacecraft_target_subspacecraft_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_target_geocentric_distance and geom:maximum_target_geocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_target_geocentric_distance and geom:maximum_target_geocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_target_heliocentric_distance and geom:maximum_target_heliocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_target_heliocentric_distance and geom:maximum_target_heliocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_target_ssb_distance and geom:maximum_target_ssb_distance, are a pair; if you use one, you must use both. - - geom:Distances_Min_Max/Rule - geom:minimum_target_ssb_distance and geom:maximum_target_ssb_distance, are a pair; if you use one, you must use both. - - - - - - geom:Distances_Min_Max/geom:maximum_spacecraft_central_body_distance/geom:maximum_spacecraft_central_body_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:maximum_spacecraft_geocentric_distance/geom:maximum_spacecraft_geocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:maximum_spacecraft_heliocentric_distance/geom:maximum_spacecraft_heliocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:maximum_spacecraft_target_boresight_intercept_distance/geom:maximum_spacecraft_target_boresight_intercept_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:maximum_spacecraft_target_center_distance/geom:maximum_spacecraft_target_center_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:maximum_spacecraft_target_subspacecraft_distance/geom:maximum_spacecraft_target_subspacecraft_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:maximum_target_geocentric_distance/geom:maximum_target_geocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:maximum_target_heliocentric_distance/geom:maximum_target_heliocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:maximum_target_ssb_distance/geom:maximum_target_ssb_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:minimum_spacecraft_central_body_distance/geom:minimum_spacecraft_central_body_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:minimum_spacecraft_geocentric_distance/geom:minimum_spacecraft_geocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:minimum_spacecraft_heliocentric_distance/geom:minimum_spacecraft_heliocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:minimum_spacecraft_target_boresight_intercept_distance/geom:minimum_spacecraft_target_boresight_intercept_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:minimum_spacecraft_target_center_distance/geom:minimum_spacecraft_target_center_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:minimum_spacecraft_target_subspacecraft_distance/geom:minimum_spacecraft_target_subspacecraft_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:minimum_target_geocentric_distance/geom:minimum_target_geocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:minimum_target_heliocentric_distance/geom:minimum_target_heliocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Min_Max/geom:minimum_target_ssb_distance/geom:minimum_target_ssb_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Specific/geom:spacecraft_central_body_distance/geom:spacecraft_central_body_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Specific/geom:spacecraft_geocentric_distance/geom:spacecraft_geocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Specific/geom:spacecraft_heliocentric_distance/geom:spacecraft_heliocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Specific/geom:spacecraft_target_boresight_intercept_distance/geom:spacecraft_target_boresight_intercept_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Specific/geom:spacecraft_target_center_distance/geom:spacecraft_target_center_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Specific/geom:spacecraft_target_subspacecraft_distance/geom:spacecraft_target_subspacecraft_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Specific/geom:target_geocentric_distance/geom:target_geocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Specific/geom:target_heliocentric_distance/geom:target_heliocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Specific/geom:target_ssb_distance/geom:target_ssb_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/Rule - geom:If you use the Distances_Start_Stop class, you must give values for Geometry_Orbiter/geometry_start_time_utc and Geometry_Orbiter/geometry_stop_time_utc. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_geocentric_distance and geom:stop_spacecraft_geocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_geocentric_distance and geom:stop_spacecraft_geocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_heliocentric_distance and geom:stop_spacecraft_heliocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_heliocentric_distance and geom:stop_spacecraft_heliocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_central_body_distance and geom:stop_spacecraft_central_body_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_central_body_distance and geom:stop_spacecraft_central_body_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_target_center_distance and geom:stop_spacecraft_target_center_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_target_center_distance and geom:stop_spacecraft_target_center_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_target_boresight_intercept_distance and geom:stop_spacecraft_target_boresight_intercept_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_target_boresight_intercept_distance and geom:stop_spacecraft_target_boresight_intercept_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_target_subspacecraft_distance and geom:stop_spacecraft_target_subspacecraft_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_spacecraft_target_subspacecraft_distance and geom:stop_spacecraft_target_subspacecraft_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_target_geocentric_distance and geom:stop_target_geocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_target_geocentric_distance and geom:stop_target_geocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_target_heliocentric_distance and geom:stop_target_heliocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_target_heliocentric_distance and geom:stop_target_heliocentric_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_target_ssb_distance and geom:stop_target_ssb_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_target_ssb_distance and geom:stop_target_ssb_distance, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_time and geom:stop_time, are a pair; if you use one, you must use both. - - geom:Distances_Start_Stop/Rule - geom:start_time and geom:stop_time, are a pair; if you use one, you must use both. - - - - - - geom:Distances_Start_Stop/geom:start_spacecraft_central_body_distance/geom:start_spacecraft_central_body_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:start_spacecraft_geocentric_distance/geom:start_spacecraft_geocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:start_spacecraft_heliocentric_distance/geom:start_spacecraft_heliocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:start_spacecraft_target_boresight_intercept_distance/geom:start_spacecraft_target_boresight_intercept_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:start_spacecraft_target_center_distance/geom:start_spacecraft_target_center_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:start_spacecraft_target_subspacecraft_distance/geom:start_spacecraft_target_subspacecraft_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:start_target_geocentric_distance/geom:start_target_geocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:start_target_heliocentric_distance/geom:start_target_heliocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:start_target_ssb_distance/geom:start_target_ssb_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:stop_spacecraft_central_body_distance/geom:stop_spacecraft_central_body_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:stop_spacecraft_geocentric_distance/geom:stop_spacecraft_geocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:stop_spacecraft_heliocentric_distance/geom:stop_spacecraft_heliocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:stop_spacecraft_target_boresight_intercept_distance/geom:stop_spacecraft_target_boresight_intercept_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:stop_spacecraft_target_center_distance/geom:stop_spacecraft_target_center_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:stop_spacecraft_target_subspacecraft_distance/geom:stop_spacecraft_target_subspacecraft_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:stop_target_geocentric_distance/geom:stop_target_geocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:stop_target_heliocentric_distance/geom:stop_target_heliocentric_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Distances_Start_Stop/geom:stop_target_ssb_distance/geom:stop_target_ssb_distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Expanded_Geometry/pds:Internal_Reference/Rule - For Internal_Reference in Expanded_Geometry, reference_type must equal 'geometry_to_expanded_geometry' - - - - - - - geom:Expanded_Geometry/pds:Local_Internal_Reference/Rule - For Local_Internal_Reference in geom:Expanded_Geometry, local_reference_type must equal 'to_expanded_geometry' - - - - - - - geom:Geometry_Orbiter/Rule - geom:geometry_start_time_utc and geom:geometry_stop_time_utc, are a pair; if you use one, you must use both. - - geom:Geometry_Orbiter/Rule - geom:geometry_start_time_utc and geom:geometry_stop_time_utc, are a pair; if you use one, you must use both. - - - - - - geom:Geometry_Orbiter/geom:geometry_reference_time_tdb/geom:geometry_reference_time_tdb - The attribute @unit must be equal to one of the following values 'day', 'hr', 'julian day', 'microseconds', 'min', 'ms', 'ns', 's', 'yr'. - - - - - - geom:Illumination_Min_Max/Rule - geom:minimum_emission_angle and geom:maximum_emission_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Min_Max/Rule - geom:minimum_emission_angle and geom:maximum_emission_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Min_Max/Rule - geom:minimum_incidence_angle and geom:maximum_incidence_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Min_Max/Rule - geom:minimum_incidence_angle and geom:maximum_incidence_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Min_Max/Rule - geom:minimum_phase_angle and geom:maximum_phase_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Min_Max/Rule - geom:minimum_phase_angle and geom:maximum_phase_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Min_Max/Rule - geom:minimum_solar_elongation and geom:maximum_solar_elongation, are a pair; if you use one, you must use both. - - geom:Illumination_Min_Max/Rule - geom:minimum_solar_elongation and geom:maximum_solar_elongation, are a pair; if you use one, you must use both. - - - - - - geom:Illumination_Min_Max/geom:maximum_emission_angle/geom:maximum_emission_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Min_Max/geom:maximum_incidence_angle/geom:maximum_incidence_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Min_Max/geom:maximum_phase_angle/geom:maximum_phase_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Min_Max/geom:maximum_solar_elongation/geom:maximum_solar_elongation - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Min_Max/geom:minimum_emission_angle/geom:minimum_emission_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Min_Max/geom:minimum_incidence_angle/geom:minimum_incidence_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Min_Max/geom:minimum_phase_angle/geom:minimum_phase_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Min_Max/geom:minimum_solar_elongation/geom:minimum_solar_elongation - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Specific/geom:emission_angle/geom:emission_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Specific/geom:incidence_angle/geom:incidence_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Specific/geom:phase_angle/geom:phase_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Specific/geom:reference_location/geom:reference_location - The attribute geom:Illumination_Specific/geom:reference_location must be equal to one of the following values 'Boresight Intercept Point', 'Constant', 'Subspacecraft Point', 'Target Center'. - - - - - - geom:Illumination_Specific/geom:reference_pixel_location/geom:reference_pixel_location - The attribute geom:Illumination_Specific/geom:reference_pixel_location must be equal to one of the following values 'Center', 'Lower Left Corner', 'Lower Right Corner', 'Upper Left Corner', 'Upper Right Corner'. - - - - - - geom:Illumination_Specific/geom:solar_elongation/geom:solar_elongation - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Start_Stop/Rule - geom:If you use the Illumination_Start_Stop class, you must give values for Geometry_Orbiter/geometry_start_time_utc and Geometry_Orbiter/geometry_stop_time_utc. - - geom:Illumination_Start_Stop/Rule - geom:start_emission_angle and geom:stop_emission_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Start_Stop/Rule - geom:start_emission_angle and geom:stop_emission_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Start_Stop/Rule - geom:start_incidence_angle and geom:stop_incidence_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Start_Stop/Rule - geom:start_incidence_angle and geom:stop_incidence_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Start_Stop/Rule - geom:start_phase_angle and geom:stop_phase_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Start_Stop/Rule - geom:start_phase_angle and geom:stop_phase_angle, are a pair; if you use one, you must use both. - - geom:Illumination_Start_Stop/Rule - geom:start_solar_elongation and geom:stop_solar_elongation, are a pair; if you use one, you must use both. - - geom:Illumination_Start_Stop/Rule - geom:start_solar_elongation and geom:stop_solar_elongation, are a pair; if you use one, you must use both. - - - - - - geom:Illumination_Start_Stop/geom:start_emission_angle/geom:start_emission_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Start_Stop/geom:start_incidence_angle/geom:start_incidence_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Start_Stop/geom:start_phase_angle/geom:start_phase_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Start_Stop/geom:start_solar_elongation/geom:start_solar_elongation - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Start_Stop/geom:stop_emission_angle/geom:stop_emission_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Start_Stop/geom:stop_incidence_angle/geom:stop_incidence_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Start_Stop/geom:stop_phase_angle/geom:stop_phase_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Illumination_Start_Stop/geom:stop_solar_elongation/geom:stop_solar_elongation - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Image_Display_Geometry/pds:Local_Internal_Reference/Rule - For Local_Internal_Reference in geom:Image_Display_Geometry, local_reference_type must equal 'display_to_data_object'. - - - - - - - geom:List_Index_Angle/geom:index_value_angle/geom:index_value_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:List_Index_Length/geom:index_value_length/geom:index_value_length - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:List_Index_Temperature/geom:index_value_temperature/geom:index_value_temperature - The attribute @unit must be equal to one of the following values 'K', 'degC'. - - - - - - geom:Object_Orientation_Clock_Angles/geom:celestial_east_clock_angle/geom:celestial_east_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_Clock_Angles/geom:celestial_north_clock_angle/geom:celestial_north_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_Clock_Angles/geom:central_body_north_pole_clock_angle/geom:central_body_north_pole_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_Clock_Angles/geom:central_body_positive_pole_clock_angle/geom:central_body_positive_pole_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_Clock_Angles/geom:ecliptic_east_clock_angle/geom:ecliptic_east_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_Clock_Angles/geom:ecliptic_north_clock_angle/geom:ecliptic_north_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_Clock_Angles/geom:sun_direction_clock_angle/geom:sun_direction_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_Clock_Angles/geom:target_north_pole_clock_angle/geom:target_north_pole_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_Clock_Angles/geom:target_positive_pole_clock_angle/geom:target_positive_pole_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_North_East/geom:east_azimuth/geom:east_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_North_East/geom:north_azimuth/geom:north_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_RA_Dec/geom:celestial_north_clock_angle/geom:celestial_north_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_RA_Dec/geom:declination_angle/geom:declination_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_RA_Dec/geom:ecliptic_north_clock_angle/geom:ecliptic_north_clock_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_RA_Dec/geom:reference_pixel_location/geom:reference_pixel_location - The attribute geom:Object_Orientation_RA_Dec/geom:reference_pixel_location must be equal to one of the following values 'Center', 'Lower Left Corner', 'Lower Right Corner', 'Upper Left Corner', 'Upper Right Corner'. - - - - - - geom:Object_Orientation_RA_Dec/geom:right_ascension_angle/geom:right_ascension_angle - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Object_Orientation_RA_Dec/geom:right_ascension_hour_angle/geom:right_ascension_hour_angle - The attribute @unit must be equal to one of the following values 'day', 'hr', 'julian day', 'microseconds', 'min', 'ms', 'ns', 's', 'yr'. - - - - - - geom:Pixel_Dimensions/geom:horizontal_pixel_field_of_view/geom:horizontal_pixel_field_of_view - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Pixel_Dimensions/geom:pixel_field_of_view_method/geom:pixel_field_of_view_method - The attribute geom:Pixel_Dimensions/geom:pixel_field_of_view_method must be equal to one of the following values 'Average', 'Central Pixel', 'Constant'. - - - - - - geom:Pixel_Dimensions/geom:vertical_pixel_field_of_view/geom:vertical_pixel_field_of_view - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Pixel_Intercept/Rule - At least one of the following must be present: geom:reference_pixel_location, geom:Reference_Pixel. - - - - - - geom:Pixel_Intercept/geom:pixel_latitude/geom:pixel_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Pixel_Intercept/geom:pixel_longitude/geom:pixel_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Pixel_Intercept/geom:reference_pixel_location/geom:reference_pixel_location - The attribute geom:Pixel_Intercept/geom:reference_pixel_location must be equal to one of the following values 'Center', 'Lower Left Corner', 'Lower Right Corner', 'Upper Left Corner', 'Upper Right Corner'. - - - - - - geom:Pixel_Size_Projected/geom:distance/geom:distance - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Pixel_Size_Projected/geom:horizontal_pixel_footprint/geom:horizontal_pixel_footprint - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Pixel_Size_Projected/geom:reference_location/geom:reference_location - The attribute geom:Pixel_Size_Projected/geom:reference_location must be equal to one of the following values 'Boresight Intercept Point', 'Constant', 'Subspacecraft Point', 'Target Center'. - - - - - - geom:Pixel_Size_Projected/geom:vertical_pixel_footprint/geom:vertical_pixel_footprint - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Quaternion_Plus_Direction/geom:rotation_direction/geom:rotation_direction - The attribute geom:Quaternion_Plus_Direction/geom:rotation_direction must be equal to one of the following values 'Forward', 'From Base', 'Present to Reference', 'Reference to Present', 'Reverse', 'Toward Base'. - - - - - - geom:Reference_Pixel/geom:horizontal_coordinate_pixel/geom:horizontal_coordinate_pixel - The attribute @unit must be equal to one of the following values 'DN', 'W/m**2/sr/nm/(DN/s)', 'electron/DN', 'electrons', 'nm/mm', 'pixel'. - - - - - - geom:Reference_Pixel/geom:vertical_coordinate_pixel/geom:vertical_coordinate_pixel - The attribute @unit must be equal to one of the following values 'DN', 'W/m**2/sr/nm/(DN/s)', 'electron/DN', 'electrons', 'nm/mm', 'pixel'. - - - - - - geom:SPICE_Kernel_Identification/geom:kernel_provenance/geom:kernel_provenance - The attribute geom:SPICE_Kernel_Identification/geom:kernel_provenance must be equal to one of the following values 'Mixed', 'Predicted', 'Provenance Not Applicable', 'Reconstructed'. - - - - - - geom:SPICE_Kernel_Identification/pds:Internal_Reference/Rule - For Internal_Reference in SPICE_Kernel_Identification, reference_type must equal 'geometry_to_SPICE_kernel' - - - - - - - geom:SPICE_Kernel_Identification/pds:kernel_type/pds:kernel_type - The attribute geom:SPICE_Kernel_Identification/pds:kernel_type must be equal to one of the following values 'CK', 'DBK', 'DSK', 'EK', 'FK', 'IK', 'LSK', 'MK', 'PCK', 'SCLK', 'SPK'. - - - - - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_latitude and geom:maximum_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_latitude and geom:maximum_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_longitude and geom:maximum_longitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_longitude and geom:maximum_longitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subsolar_azimuth and geom:maximum_subsolar_azimuth, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subsolar_azimuth and geom:maximum_subsolar_azimuth, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subsolar_latitude and geom:maximum_subsolar_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subsolar_latitude and geom:maximum_subsolar_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subsolar_longitude and geom:maximum_subsolar_longitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subsolar_longitude and geom:maximum_subsolar_longitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subspacecraft_azimuth and geom:maximum_subspacecraft_azimuth, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subspacecraft_azimuth and geom:maximum_subspacecraft_azimuth, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subspacecraft_latitude and geom:maximum_subspacecraft_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subspacecraft_latitude and geom:maximum_subspacecraft_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subspacecraft_longitude and geom:maximum_subspacecraft_longitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Min_Max/Rule - geom:minimum_subspacecraft_longitude and geom:maximum_subspacecraft_longitude, are a pair; if you use one, you must use both. - - - - - - geom:Surface_Geometry_Min_Max/geom:maximum_latitude/geom:maximum_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:maximum_longitude/geom:maximum_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:maximum_subsolar_azimuth/geom:maximum_subsolar_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:maximum_subsolar_latitude/geom:maximum_subsolar_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:maximum_subsolar_longitude/geom:maximum_subsolar_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:maximum_subspacecraft_azimuth/geom:maximum_subspacecraft_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:maximum_subspacecraft_latitude/geom:maximum_subspacecraft_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:maximum_subspacecraft_longitude/geom:maximum_subspacecraft_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:minimum_latitude/geom:minimum_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:minimum_longitude/geom:minimum_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:minimum_subsolar_azimuth/geom:minimum_subsolar_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:minimum_subsolar_latitude/geom:minimum_subsolar_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:minimum_subsolar_longitude/geom:minimum_subsolar_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:minimum_subspacecraft_azimuth/geom:minimum_subspacecraft_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:minimum_subspacecraft_latitude/geom:minimum_subspacecraft_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Min_Max/geom:minimum_subspacecraft_longitude/geom:minimum_subspacecraft_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Specific/geom:subsolar_azimuth/geom:subsolar_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Specific/geom:subsolar_latitude/geom:subsolar_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Specific/geom:subsolar_longitude/geom:subsolar_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Specific/geom:subspacecraft_azimuth/geom:subspacecraft_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Specific/geom:subspacecraft_latitude/geom:subspacecraft_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Specific/geom:subspacecraft_longitude/geom:subspacecraft_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/Rule - If you give geom:start_latitude and geom:stop_latitude, then a value for lat_long_method must be given. - - geom:Surface_Geometry_Start_Stop/Rule - geom:If you use the Surface_Geometry_Start_Stop class, you must give values for Geometry_Orbiter/geometry_start_time_utc and Geometry_Orbiter/geometry_stop_time_utc. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_latitude and geom:stop_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_latitude and geom:stop_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_longitude and geom:stop_longitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_longitude and geom:stop_longitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subsolar_azimuth and geom:stop_subsolar_azimuth, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subsolar_azimuth and geom:stop_subsolar_azimuth, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subsolar_latitude and geom:stop_subsolar_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subsolar_latitude and geom:stop_subsolar_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subsolar_longitude and geom:stop_subsolar_longitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subsolar_longitude and geom:stop_subsolar_longitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subspacecraft_azimuth and geom:stop_subspacecraft_azimuth, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subspacecraft_azimuth and geom:stop_subspacecraft_azimuth, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subspacecraft_latitude and geom:stop_subspacecraft_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subspacecraft_latitude and geom:stop_subspacecraft_latitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subspacecraft_longitude and geom:stop_subspacecraft_longitude, are a pair; if you use one, you must use both. - - geom:Surface_Geometry_Start_Stop/Rule - geom:start_subspacecraft_longitude and geom:stop_subspacecraft_longitude, are a pair; if you use one, you must use both. - - - - - - geom:Surface_Geometry_Start_Stop/geom:lat_long_method/geom:lat_long_method - The attribute geom:Surface_Geometry_Start_Stop/geom:lat_long_method must be equal to one of the following values 'Center', 'Mean', 'Median'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:start_latitude/geom:start_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:start_longitude/geom:start_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:start_subsolar_azimuth/geom:start_subsolar_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:start_subsolar_latitude/geom:start_subsolar_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:start_subsolar_longitude/geom:start_subsolar_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:start_subspacecraft_azimuth/geom:start_subspacecraft_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:start_subspacecraft_latitude/geom:start_subspacecraft_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:start_subspacecraft_longitude/geom:start_subspacecraft_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:stop_latitude/geom:stop_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:stop_longitude/geom:stop_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:stop_subsolar_azimuth/geom:stop_subsolar_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:stop_subsolar_latitude/geom:stop_subsolar_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:stop_subsolar_longitude/geom:stop_subsolar_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:stop_subspacecraft_azimuth/geom:stop_subspacecraft_azimuth - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:stop_subspacecraft_latitude/geom:stop_subspacecraft_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Surface_Geometry_Start_Stop/geom:stop_subspacecraft_longitude/geom:stop_subspacecraft_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Vector_Cartesian_Acceleration_Base/geom:x_acceleration/geom:x_acceleration - The attribute @unit must be equal to one of the following values 'cm/s**2', 'km/s**2', 'm/s**2'. - - - - - - geom:Vector_Cartesian_Acceleration_Base/geom:y_acceleration/geom:y_acceleration - The attribute @unit must be equal to one of the following values 'cm/s**2', 'km/s**2', 'm/s**2'. - - - - - - geom:Vector_Cartesian_Acceleration_Base/geom:z_acceleration/geom:z_acceleration - The attribute @unit must be equal to one of the following values 'cm/s**2', 'km/s**2', 'm/s**2'. - - - - - - geom:Vector_Cartesian_Acceleration_Extended_Base/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Acceleration_Extended_Base/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Acceleration_Generic/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Acceleration_Generic/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_Base/geom:x_position/geom:x_position - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Vector_Cartesian_Position_Base/geom:y_position/geom:y_position - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Vector_Cartesian_Position_Base/geom:z_position/geom:z_position - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Vector_Cartesian_Position_Central_Body_To_Spacecraft/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_Central_Body_To_Spacecraft/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_Central_Body_To_Target/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_Central_Body_To_Target/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_Earth_To_Central_Body/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_Earth_To_Central_Body/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_Earth_To_Spacecraft/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_Earth_To_Spacecraft/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_Earth_To_Target/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_Earth_To_Target/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_Extended_Base/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_Extended_Base/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_Generic/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_Generic/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_SSB_To_Central_Body/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_SSB_To_Central_Body/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_SSB_To_Spacecraft/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_SSB_To_Spacecraft/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_SSB_To_Target/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_SSB_To_Target/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_Spacecraft_To_Target/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_Spacecraft_To_Target/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_Sun_To_Central_Body/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_Sun_To_Central_Body/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_Sun_To_Spacecraft/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_Sun_To_Spacecraft/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Position_Sun_To_Target/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Position_Sun_To_Target/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Base/geom:x_velocity/geom:x_velocity - The attribute @unit must be equal to one of the following values 'cm/s', 'km/s', 'm/s'. - - - - - - geom:Vector_Cartesian_Velocity_Base/geom:y_velocity/geom:y_velocity - The attribute @unit must be equal to one of the following values 'cm/s', 'km/s', 'm/s'. - - - - - - geom:Vector_Cartesian_Velocity_Base/geom:z_velocity/geom:z_velocity - The attribute @unit must be equal to one of the following values 'cm/s', 'km/s', 'm/s'. - - - - - - geom:Vector_Cartesian_Velocity_Extended_Base/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Extended_Base/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Generic/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Generic/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Central_Body/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Central_Body/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Earth/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Earth/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_SSB/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_SSB/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Sun/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Sun/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Target/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Spacecraft_Relative_To_Target/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Target_Relative_To_Central_Body/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Target_Relative_To_Central_Body/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Target_Relative_To_Earth/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Target_Relative_To_Earth/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Target_Relative_To_SSB/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Target_Relative_To_SSB/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Target_Relative_To_Spacecraft/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Target_Relative_To_Spacecraft/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Cartesian_Velocity_Target_Relative_To_Sun/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Cartesian_Velocity_Target_Relative_To_Sun/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Planetocentric_Position_Base/geom:latitude_position/geom:latitude_position - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Vector_Planetocentric_Position_Base/geom:longitude_position/geom:longitude_position - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - geom:Vector_Planetocentric_Position_Base/geom:radius_position/geom:radius_position - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - geom:Vector_Planetocentric_Position_Central_Body_To_Spacecraft/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Planetocentric_Position_Central_Body_To_Spacecraft/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Planetocentric_Position_Central_Body_To_Target/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Planetocentric_Position_Central_Body_To_Target/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Planetocentric_Position_Extended_Base/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Planetocentric_Position_Extended_Base/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Planetocentric_Position_Generic/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Planetocentric_Position_Generic/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Planetocentric_Position_Spacecraft_To_Target/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Planetocentric_Position_Spacecraft_To_Target/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Planetocentric_Velocity_Base/geom:latitude_velocity/geom:latitude_velocity - The attribute @unit must be equal to one of the following values 'deg/day', 'deg/s', 'rad/s'. - - - - - - geom:Vector_Planetocentric_Velocity_Base/geom:longitude_velocity/geom:longitude_velocity - The attribute @unit must be equal to one of the following values 'deg/day', 'deg/s', 'rad/s'. - - - - - - geom:Vector_Planetocentric_Velocity_Base/geom:radial_velocity/geom:radial_velocity - The attribute @unit must be equal to one of the following values 'cm/s', 'km/s', 'm/s'. - - - - - - geom:Vector_Planetocentric_Velocity_Extended_Base/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Planetocentric_Velocity_Extended_Base/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Planetocentric_Velocity_Generic/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Planetocentric_Velocity_Generic/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Planetocentric_Velocity_Spacecraft_Relative_To_Target/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Planetocentric_Velocity_Spacecraft_Relative_To_Target/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Planetocentric_Velocity_Target_Relative_To_Central_Body/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Planetocentric_Velocity_Target_Relative_To_Central_Body/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - - - - geom:Vector_Planetocentric_Velocity_Target_Relative_To_Spacecraft/geom:light_time_correction_applied/geom:light_time_correction_applied - The attribute geom:Vector_Planetocentric_Velocity_Target_Relative_To_Spacecraft/geom:light_time_correction_applied must be nulled or equal to one of the following values 'None', 'Received_Light_Time', 'Received_Light_Time_Stellar_Abb', 'Transmitted_Light_Time', 'Transmitted_Light_Time_Stellar_Abb'. - - - diff --git a/model-lddtool/src/test/resources/github797/PDS4_GEOM_1N00_1970.xsd b/model-lddtool/src/test/resources/github797/PDS4_GEOM_1N00_1970.xsd deleted file mode 100644 index 6830595e..00000000 --- a/model-lddtool/src/test/resources/github797/PDS4_GEOM_1N00_1970.xsd +++ /dev/null @@ -1,7634 +0,0 @@ - - - - - - - - - - - - - - - - - Build with: lddtool -pl ingest_file >log_file - add J switch if a JSON file is needed. - - Classes used from the PDS namespace - - Local_Internal_Reference - - Internal_Reference - Attributes used from the PDS namespace - - local_identifier - - name - - description - - comment - - kernel_type - - local_reference_type - - reference_type - - version 1.0.0 2015-04-30 - - Initial release. - version 1.1.0 2015-08-17 - - Updated to IM version 1.4.1.0 - - Removed attributes body_spice_id and frame_spice_id. body_spice_name and frame_spice_name are the supported attributes. - - Geometry_Identification_Base was replaced by Body_Identification_Base and Frame_Identification_Base. - -- The preceding two changes affect these classes: Central_Body_Identification, - Coordinate_System_Origin_Identification, Observer_Identification, Target_Identification. - - Added the class Coordinate_Space_SPICE. - - SPICE_Kernel_Identification was replaced with the new class Coordinate_Space_SPICE in Coordinate_Space_Identification. - - Replaced local_spice_kernel_name with spice_kernel_file_name. - - Changed kernel_type to pds:kernel_type. - -- The preceding four changes affect Coordinate_Space_Present and Coordinate_Space_Reference. - - horizontal/vertical_pixel_scale_factor now have unit of measure type Units_of_Map_scale (these are all of the - form "[length]/pixel"). - - In Geometry_Orbiter class, expanded description to include class use. - - Quaternion_non_SPICE_Style contained a double underscore in the class name. That typo has been corrected. - - Updated a number of the attribute and class definitions/descriptions - - In the Geometry_Orbiter class, Reference_Frame_Identification was removed. - - Added class Coordinate_Space_Indexed - - Moved solution_id attribute from Coordinate_Space_Index to Coordinate_Space_Indexed - - Removed model_desc_file_name from Camera_Model_Parameters - - Replaced Coordinate_Space_Index with Coordinate_Space_Indexed in Coordinate_Space_Identification - - Added Local_Internal_Reference to Coordinate_Space_Index - - Added attribute coordinate_space_frame_type - - Renamed Device_Motor_Clicks* to Device_Motor_Counts* - - Renamed Device_Position_Vector to Vector_Device_Gravity - - Renamed index_value_no_units to index_value_number. - - Completely revised quaternions, removed all four existing quaternion classes, - Quaternion_SPICE, Quaternion_non_SPICE, Rotation_Quaternion, and Device_Orientation_Quaternion. - Introduced three new quaternion classes, Quaternion_Base, Quaternion_1, and Quaternion_2. The latter - two are extensions of Quaternion_Base. - - Revised the definitions of the four components of quaternions. - - Added the classes Rotate_From, Rotate_To, and the attribute rotation_direction to - support the new quaternion classes. - - Added Coordinate_Space_Present to the Articulation_Device_Parameters class. - - Renamed Coordinate_System to Coordinate_System_Identification. - - In Coordinate_Space_Indexed changed Coordinate_Space_Index from parent_of to component_of - - Removed pds:Local_Internal_Reference from Coordinate_Space_Index, Body_Identification_Base, Frame_Identification_Base. - - Removed the quaternions from the Articulation_Device_Parameters class. - - Cleaned up some more definitions. - version 1.2.0 2015-10-15 - - Updated to IM version 1.5.0.0 - - Redefined the Display_Direction class and removed the import of the - Display dictionary. - - Designated Body_Identification_Base as 'abstract' - - Renamed Target_Identification to Geometry_Target_Identification - - Renamed horizontal/vertical_pixel_size_angular to horizontal/vertical_pixel_field_of_view - - Renamed horizontal/vertical_pixel_size_projected to horizontal/vertical_pixel_footprint - - Removed Body_Identification_Base from Image_Display - - removed body_positive_pole_clock_angle - - added central_body_positive_pole_clock_angle - - Removed Local_Internal_Reference from several classes - - Removed horizontal/vertical_pixel_scale_factor - - Updated horizontal/vertical_pixel_field_of_view descriptions - - Added new, required attribute pixel_field_of_view_method attribute to Pixel_Dimensions - - Allow for multiple Pixel_Size_Projected classes to be specified in the Pixel_Dimensions class. - - Revised the definition of Footprint_Vertices and set the minimum number of vertices to two. - - Added choice between reference_location and new distance attribute in Pixel_Size_Projected class. - - Added 'Constant' (or some other applicable term per rationale) as a permissible value to Pixel_Size_Projected and reference_location. - - Require horizontal_pixel_footprint and vertical_pixel_footprint to be specified in Pixel_Size_Projected class. - - added cahvore_model_type and cahvore_model_parameter attributes to CAHVORE_Model - - added new positive_azimuth_direction and positive_elevation_direction attributes to Coordinate_Space_Definition class - - added new instrument_azimuth, instrument_elevation attributes to Derived_Geometry - - added new selected_instrument_id attribute to Articulation_Device_Parameters for currently selected instrument - - added new device_phase attribute to Articulation_Device_Parameters - - added new Quaternion_Model_Transform and Vector_Model_Transform classes to the Camera_Model_Parameters class - - fixed bug with Vector_Cartesian_No_Units class - local identifier was Vector_Cartesian_Unit and overwriting that class - - changed parent_of Vector_Axis class to Vector_Cartesian_No_Units - - changed parent_of Vector_Device_Gravity class to Vector_Cartesian_Unit instead of Position_Cartesion_Vector_Base since it is a unit vector - - added pds:Local_Internal_Reference to Coordinate_Space_Identification class, specifically for properly defining a Coordinate_Space_Reference. - - updated the definition for coordinate_space_frame_type - - changed ordering of Coordinate_Space_Indexed to make more logical sense - - changed local_identifier attribute in Coordinate_Space_Definition class to allow for mutliple identifiers for a Coordinate Space - - removed units from x_pixel, y_pixel, z_pixel - - changed x_no_units, y_no_units, z_no_units to x,y,z - - removed Coordinate_Space_Reference from CAHV_Model class. It only needs to be in the Camera_Model_Parameters class - - north/east_azimuth - expanded definition to clarify direction of measurement. - - renamed the Distances class to Specific_Distances, removed the Distance_Generic class - from that class and added it to Geometry_Orbiter. - - removed the Specific_Position_Vectors and Specific_Velocity_Vectors classes. The remaining Vector aggragating classss - are Specific_Cartesian_Vectors and Specific_Planetocentric_Vectors. - - Renamed 59 classes for clarity or to make the order of the class name segments consistent with SR requirements. See - the separate class-rename-20151016.txt document for the complete list. - version 1.2.1 2015-11-12 (this version not released for review) - - Inserted a missing ")" in Schematron file to correct a typo. - - changed several instances of a double underscore to a single underscore. - - Removed Local_Reference_Type from geom:Display_Direction. - - Added Schematron rule for Image_Display_Geometry/Local_Internal_Reference/Reference_Type to verify - use of the enumerated value "display_to_data_object". - - In Geometry_Orbiter, moved the class Geometry_Target_Identification ahead of the class Coordinate_System Identification. - This results in placing at the beginning of the class, the items most likely to have multiple - values and hence result in multiple instances of the Geometry_Orbiter class. - version 1.3.0.0 2016-07-15 - - Updated to IM version 1.6.0.0 - - Changed to four place version number. - - Added geometry_start_time and geometry_stop_time, and expanded the definitions for the three variations - of geometry_*_time. - - Made geom:Display_Direction required even if the disp:Display_Direction is in the label. - - Removed the option to use Quaternion_1 from the Image_Display_Geometry class since there is no way to identify - the relevant end points in the enclosing class. - - Revised the definition of right_ascension_angle. - - Changed the description and units of right_ascension_hour_angle to decimal hours. - - Revised the definition of declination_angle. - - In Object_Orientation_Clock_Angles, made Reference_Frame_Identification optional instead of required. - - Added or modified attributes minimum_*, maximum_*, start_*, stop_*; where * is any of target_geocentric_distance, - target_heliocentric_distance, target_ssb_distance, spacecraft_geocentric_distance, spacecraft_heliocentric_distance, - spacecraft_to_central_body_distance, spacecraft_to_target_center_distance, spacecraft_to_target_boresight_intercept_distance, - spacecraft_to_target_subspacecraft_distance, emission_angle, incidence_angle, phase_angle, solar_elongation, latitude, - longitude, subspacecraft_azimuth, subspacecraft_latitude, subspacecraft_longitude, subsolar_azimuth, subsolar_latitude, - or subsolar_longitude. - - Added the attribute lat_long_description to support start_ and stop_ latitude and longitude. - - Added the classes *_Specific, *_Min_Max, *_Start_Stop; where * is any of Distances, Illumination, or Surface_Geometry. - - Removed the classes Illumination_FOV_Range_Values (replaced with the class Illumination_Min_Max), and - Illumination_Single_Values (replaced with the class Illumination_Specific). - - Removed the attribute illumination_range_designation. - - Changed the names of several specific distance classes from spacecraft_to_*_distance to spacecraft_*_distance. - - Renamed Specific_Distances to Distances_Specific. - - Renamed Surface_Geometry to Surface_Geometry_Specific. - - Renamed Illumination_Single_Values to Illumination_Specific. - - Renamed Specific_Cartesian_Vectors to Vectors_Cartesian_Specific. - - Renamed Specific_Planetocentric_Vectors to Vectors_Planetocentric_Specific. - - Added or redefined several classes for grouping: Orbiter_Identification, Distances, Surface_Geometry, - Illumination_Geometry, Vectors. - - Reorganized the contents of Geometry_Orbiter. - - Provided Schematron rules to ensure if one member of a min-max or start-stop pair is used, both are used. - - Renamed lat_long_description to lat_long_method - - Renamed Quaternion_1 to Quaternion_Plus_Direction - - Renamed Quaternion_2 to Quaternion_Plus_To_From - - In List_Index_Base removed Local_Internal_Reference and made the cardinality of the choice to require at - least one of the options. - - Updated the definitions of several attributes supporting the Lander portion of the dictionary. - - Changed pds:Internal_Reference to geom:Internal_Reference - - Changed pds:Local_Internal_Reference to geom:Local_Internal_Reference - - In the Geometry class, removed the choice statement which made one of Geometry_Orbiter and Geometry_Lander required. Now both are optional. - version 1.3.1.0 2016-07-29 - - Added the optional attribute kernel_provenance to the SPICE_Kernel_Identification class. - - Renamed geometry_reference_time, geometry_start/stop_time, and coordinate_system_time, by appending _utc to the attribute name. - - Added the optional attribute geometry_reference_time_tdb - - Changed the cardinality of Quaternion_Plus_To_From in the Image_Display_Geometry to allow multiple instances. - - Added the optional Expanded_Geometry class to the Geometry class - version 1.4.0.0 2016-09-26 - - Verified that Internal_Reference and Local_Internal_Reference refer to the PDS namespace in class definitions - - Edited Schematron rules to change geom:Internal_Reference to pds:Internal_Reference - - Edited Schematron rules to match Internal_Reference contexts with reference_type rule_test - - Edited Schematron messages to be more user-friendly - - Remove reference_type and local_reference_type from Schematron rule contexts - - Edited Schematron rules to change geom:Local_Internal_Reference to pds:Local_Internal_Reference - - Edited Schematron rules to match Local_Internal_Reference contexts with local_reference_type rule_text - version 1.4.0.1 2016-11-10 - - Changed pds:name to geom:name in the schematron rules - version 1.5.0.0 2017-06-19 - - Regenerated the schema and other files because of a bug in the LDDTool - This changed the classes: - Coordinate_Space_Identification, Coordinate_Space_Present, Coordinate_Space_Reference - - Changed the maxoccurs to unbounded for Coordinate_Space_Index in Coordinate_Space_Indexed - - Changed the choice in Derived_Geometry to include all optional attributes. This was done to ensure that the class contained at least one - attribute when included in a label. - version 1.5.1.0 2017-09-20 - - Added index_value_number to List_Index_Temperature to specify DN temperature counts in addition to the EU temperature - - Updated the definition for List_Index_Temperature to include that - - Fixed bug with Vector_Entrance to use Vector_Cartesian_Unit instead of Vector_Cartesian_Position_Base - - Updated for PDS model 1.9.0.0 - version 1.5.2.0 2018-07-25 - - Updated for PDS information model 1.10.0.0 - - In Image_Display_Geometry, moved Object_Orientation_Clock_Angles into the choice statement. - version 1.5.3.0 2018-07-25 - - Updated for PDS information model 1.10.1.0 - version 1.6.0.0 2018-07-27 - - Changed Optical_Terms to Vector_Optical, reparented it to Vector_Cartesian_Unit, and fixed the definition. - - Changed Vector_Entrance to Entrance_Terms, reparented it to Polynomial_Coefficients_3, and fixed the definition. - - Rewrote definitions for CAHV_Model, CAHVOR_Model, CAHVORE_Model, Vector_Center, Vector_Horizontal, Vector_Vertical, and Radial_Terms. - - Minor revisions to definitions for Camera_Model_Parameters, Coordinate_Space_Present, Coordinate_Space_Reference, instrument_azimuth, - instrument_elevation, Quaternion_Plus_Direction, solar_azimuth, geometry_start_time_utc, and geometry_stop_time_utc. - - Minor changes to definitions of incidence_angle and phase_angle. - version 1.6.1.0 2018-12-05 - - Changed the cardinality (maxoccurs) of Object_Orientation_RA_Dec in Image_Display_Geometry from 3 to unlimited to support - request for MESSENGER MDIS migration to PDS4. - version 1.7.0.0 2019-04-19 - - Set the element_flag to "true" for the Coordinate_Space_Reference class so that the class is exposed for others to use. - version 1.7.1.0 2019-05-06 - - Added attribute quaternion_measurement_method and included it in the Coordinate_Space_Definition class. - - Added local_identifier to the Articulation_Device_Parameters - version 1.7.2.0 2020-05-04; 2020-07-10 - - Modified definitions for quaternion_measurment_method. - - Added the Interpolation class to support documentation of camera model interpolation. Included in the - Camera_Model_Parameters class. - - Added PSPH camera model (5 classes and 2 attributes); added enumerated list for model_type relative - to camera models. - version 1.8.0.0 2020-07-31 - - Added Vector_Solar_Direction class to Derived_Geometry; made Vector_Axis_X/Y classes a restriction of the - Vector_Cartesian_Unit class. - - Added Coordinate_Space_Quality to Coordinate_Space_Definition. - - Added Commanded_Geometry to Articulation_Device_Parameters - - have to edit schema to fix the "choice bug" - version 1.8.1.0 2020-08-14 thru 2020-08-28 - - Added target_name, target_heliocentric_distance, and solar_image_clock_angle to the - Derived_Geometry class in the Geometry_Lander section. - - Changed attitude_propagation_counter data type from integer to real for M2020. - - Added new attribute geometry_state, pds:description, pds:local_identifier to the start - of the Geometry_Lander class - - Added a Vector_Device_Gravity_Magnitude class to Articulation_Device_Parameters to support M2020. - version 1.9.0.0 2020-10-16 thru 2020-12-09 - - Made celestial_north_clock_angle and ecliptic_north_clock_angle nillable. - Added enumerated values for reference_type in Body_Identification_Base and Frame_Identification_Base. - Added enumerated values for coordinate_space_frame_type. - Changed enumerated flag to true for coordinate_space_frame_type - Version 1.9.1.0?? 2020-12-16 - - Added enumerated value to coordinate_space_frame_type to support Mars2020. - - Added class Device_Pose to Articulation_Device_Parameters to support Mars 2020. - Version 1.9.2.0 2021-03-30 - - Added enumerated value to coordinate_space_frame_type to support Mars2020. - Version 1.9.x.0 2021-04-22 - - Added three enumerated values (ROVER_FRAME, TOOL_FRAME, and Tool_Frame) - to coordinate_space_frame_type to support Mars2020. - Version 1.9.3.0 2021-07-13 - - Added yet another enumerated value (TURRET_FRAME and title case version) - to coordinate_space_frame_type to support Mars2020. - Version 1.9.3.0 2021-04-27 - - Added seven enumerated values in upper/lower case (PIXL_TOOL, WHEEL_RF, WHEEL_LF, WHEEL_RR, - WHEEL_LR, WHEEL_RM, WHEEL_LM) to coordinate_space_frame_type for Mars2020. - - fixed typo traget -> target - Version 1.9.5.0 2022-01-06 - - Added ORBITAL (upper and title case) to coordinate_space_frame_type for Mars2020. - Version 1.9.6.0 2022-05-20 - - Added AEGIS_* (1 to 5) to coordinate_space_frame_type for Mars2020. - Version 1.9.7.0 2023-10-12 - - Made the Display_Direction class optional and updated the definition. Added the - Quaternion_Plus_To_From class to the main Geometry_Orbiter class to support - migration of NEAR data. - - - - - - - - - - The Articulation_Device_Parameters class - contains those attributes and sub-classes that describe an - articulation device. An articulation device is anything that can - move independently of the spacecraft to which it is attached. - Examples include mast heads, wheel bogies, arms, filter wheel, - scan platforms. - - - - - - - - - - - - - - - - - - - - - - - - - - The Body_Identification_Base class provides - multiple attributes that can be used to identify a physical - object (spacecraft, planet instrument, transmitter, system - barycenter, etc.). At least one must be used. - - - - - - - - - - - The CAHVORE model is built upon CAHVOR (see - CAHVOR_Model), adding support for fisheye lenses. It adds one - more 3-vector and two scalars to CAHVOR. E (Entrance_Terms) - contains the coefficients of a polynomial function used to model - movement of the entrance pupil. The two scalars, - cahvore_model_type and cahvore_model_parameter, together specify - the type of lens being modeled. - - - - - - - - - - - - - - - - - - The CAHVOR model is built upon CAHV (see - CAHV_Model), adding radial (barrel or pincushion) distortion to - the linear model. It adds two more 3-vectors to CAHV. O - (Vector_Optical) is a unit vector representing the axis of - symmetry for the radial distortion. R (Radial_Terms) contains - the coefficients of a polynomial function that describes the - radial distortion. - - - - - - - - - - - - - - The CAHV model is a linear, - perspective-projection camera model (equivalent to a pinhole - camera). It consists of four 3-vectors (C,A,H,V) that describe - the internal and external camera model parameters needed to - translate between 2D image coordinates and 3D world coordinates. - C (Vector_Center) is the 3D position of the pinhole (center of - the entrance pupil). A (Vector_Axis) is a unit vector normal to - the image plane pointing outward. H (Vector_Horizontal) is a - composite vector encoding three quantities: H' (a vector in the - image plane perpendicular to the vertical columns), Hs (the - distance between the lens center and image plane, measured in - horizontal pixels), and Hc (the horizontal image coordinate - directly under C when moving parallel to A). V (Vector_Vertical) - similarly composites the analogous V', Vs, and Vc in the - vertical direction. - - - - - - - - - - - - A camera model describes the mathematical - relationship between the coordinates of a point in 3-dimensional - space and its projection onto a 2-dimensional image plane. There - are numerous types of camera models. - - - - - - - - - - - - - - - - - - - - - - - - - - - - The Central_Body_Identification class uniquely - identifies the body that is the central body associated with an - observation (e.g., Saturn for Saturn system observations). - - - - - - - - - - - - - - - - Specifies how the device was commanded in order - to achieve the state represented in the enclosing - Articulation_Device_Parameters. Commands are often at a higher - level, e.g. point at this location or move to this XYZ, which is - translated by flight software to the actual pose of the device. - Certain forms of command are measured in a coordinate frame; - this is specified by the Coordinate_Space_Reference in this - class (if not present, the Coordinate_Space_Reference in the - Articulation_Device_Parameters parent should be assumed). - - - - - - - - - - - - - - - - Specifies a Cartesian position used in - commanding the device. - - - - - - - - - - - - - - - The Coordinate_Space classes are typically used - for lander/rover geometry while the Coordinate_System - construction is used for orbiter/flyby geometry. - - - - - - - - - - - - - - - - - - - - - - - The Coordinate_Space_Identification class - uniquely identifies a coordinate space (i.e., reference frame + - position) with respect to which the values of the attributes in - the containing class are defined. - - - - - - - - - - - - - Identifies a coordinate space using an index - value given in an identified list. - - - - - - - - - - - - - - - - - - The Coordinate_Space_Indexed class contains the - attributes and classes identifying the indexed coordinate space. - - - - - - - - - - - - - - - The Coordinate_Space_Present class includes the - attributes that identifies the coordinate space presently being - defined. - - - - - - - - - - - - - - - - - Parameters that indicate the quality of the - coordinate space knowledge. - - - - - - - - - - - - - - The Coordinate_Space_Reference class includes - the attributes that identify the coordinate space being used to - express coordinates in the class in which it appears. - - - - - - - - - - - - - - - - - - Identifies a coordinate space using SPICE names - for the frame and origin. - - - - - - - - - - The Coordinate_System_Identification class fully - describes a coordinate system. This class is typically used for - orbiter/flyby geometry while the Coordinate_Space construction - is used for lander/rover geometry. - Coordinate_System_Identification provides the reference frame, - coordinate system type (cartesian, planetocentric, etc.), - origin, and the instantiation time of the system when - appropriate. The instantiation time (coordinate_system_time_utc) - is used when a rotating frame has been 'frozen' at a particular - epoch. Instantiation time is not needed for inertial or rotating - frames. - - - - - - - - - - - - - - - - The Coordinate_System_Origin_Identification - class uniquely identifies the "body" that is the origin of a - coordinate system. Typically body centered coordinate systems - place the origin at the center of mass of the body. In addition - to physical bodies, the origin may be defined at a point in - space such as a system barycenter. Note that the origin of - coordinate system does not necessarily correspond to either end - point of a vector. - - - - - - - - - - - - - - - The Derived_Geometry class is a container for - surface based observations (lander or rover). It is used to - provide some geometric quantities relative to a specific - Reference Coordinate Space. - - - - - - - - - - - - - - - - - - - - - - - - The Device_Angle class is a container for the - set of angles between the various components or devices of the - spacecraft. - - - - - - - - - - The Device_Angle class is a container for the - set of angles the spacecraft device specified in the parent - Articulation_Device_Parameters class. - - - - - - - - - - - - - - - - - - The Device_Component_State class is a container - for the states of the various components of the articulation - device. - - - - - - - - - - The Device_Component_State_Index class is a - container for one state of a component of the articulation - device. - - - - - - - - - - - - - - - - - - The Device_Motor_Counts class is a container for - the classes that describe the motor step count information for - device components. - - - - - - - - - - The Device_Motor_Counts_Index class is a - container for the attributes that describe the motor step count - information for a single motor on a device. - - - - - - - - - - - - - - - - - - Defines the pose of this articulation device. - The name indicates what exactly is being measured and how, and - disambiguates if there is more than one Device_Pose. For - example, Mars 2020 has "arm_attitude_reference", which indicates - the pose of the rover that was used to calculate gravity droop - of the arm. The interpretation of the pose is mission-specific; - see the mission documentation. - - - - - - - - - - - The Device_Temperature class is a container for - all available device temperatures of an articulated device - and/or part(s) of a device. - - - - - - - - - - The Device_Temperature_Index class specifies the - attributes describing the temperature of one device or some part - of a device. - - - - - - - - - - - - - - - - - - - Note: For all image objects, the expectation is - that the image orientation will be given using the - disp:Display_Direction class. In the unusual case where an image - object does not have an associated disp:Display_Direction class, - then, and only then, Display_Direction class defined here should - be present. The Display_Direction class specifies which two of - the dimensions of an Array object should be displayed and how - they should be displayed in the vertical (line) and horizontal - (sample) dimensions of a display device. This class is - essentially the same as the class of the same name in the - Display Dictionary, and is redefined here for convenience. - - - - - - - - - - - - - - - - - - The distance between the two objects, both of - which must be specified. - - - - - - - - - - - The Distances class is a container of distance - classes. - - - - - - - - - - - - - The Distances_Min_Max class is a container class - for named distances given as minimum-maximum pairs. For - distance, if either the minimum or maximum parameter is given, - both must be provided. - - - - - - - - - - - - - - - - - - - - - - - - - - The Distances_Specific class is a container - class for specific distances defined in this dictionary. - - - - - - - - - - - - - - - - - - - - The Distances_Start_Stop class is a container - class for named distances given as pairs corresponding to the - beginning and end of the observation. For a distance, if either - the start or stop parameter is given, both must be provided. If - any values from this class are included in the label, the - parameters geometry_start_time_utc and geometry_stop_time_utc - must be given in the enclosing Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - - - - - - - - - The Entrance_Terms contains the coefficients of - a polynomial function used to model movement of the entrance - pupil. - - - - - - - - - - - - - - - The Expanded_Geometry class provides a mechanism - to reference additional geometric metadata contained in a - separate object or product (e.g., a table of metadata). - - - - - - - - - - - The Footprint_Vertices class provides a set of - latitude and longitude pairs which are the vertices of a polygon - representing the projected footprint of the field of view on the - target surface (or on a map). Note this is intended for products - such as maps, or where the target fills the field of view. The - vertices should be listed either in clockwise or - counterclockwise order. - - - - - - - - - The Frame_Identification_Base class provides - multiple attributes that can be used to identify a reference - frame. At least one must be used. - - - - - - - - - - - - The Generic_Vectors class is a container class - for all of the build your own vector templates. - - - - - - - - - - - - - - - - - The Geometry class is a container for all - geometric information in the label. The Image_Display_Geometry - class should have one instance if the primary data object is an - Array object for which two of the dimensions are suitable for - display in the vertical (line) and horizontal (sample) - dimensions of a display device. Multiple instances of the - Image_Display_Geometry class are only appropriate if the data - product contains multiple Array objects and the orientations of - the various objects are not the same. - - - - - - - - - - - - - The Geometry_Lander class is a container for all - geometric information in the label relating to a landed - spacecraft, including rovers. - - - - - - - - - - - - - - - - The Geometry_Orbiter class is a container for - geometric information (positions, velocities, orientations, - etc.) relevant to orbiter or flyby spacecraft observations. If - any of the contained classes or attributes have central body, - and or target in the class or attribute name (e.g., - spacecraft_to_central_body_distance, - Vector_Planetocentric_Position_Spacecraft_To_Target), then the - central body and or target must be identified in this class. If - more than one geometry_reference_time_utc, target or central - body need to be identified to fully describe the data, use - multiple instances of the Geometry_Orbiter class. Do not use - Coordinate_System at this level if more than one coordinate - system is used in the contained classes. If more than one - coordinate system is used, specify Coordinate_System in each of - the subordinate classes where it is appropriate. - - - - - - - - - - - - - - - - - - - - - - The object to which the associated set of - geometric parameters are given. Within the Geometry dictionary - context, a "Target" is the body on the "to" end of a vector, or - other translation through space. - - - - - - - - - - - - - - - The Illumination_Geometry class is a container - for illumination geometry classes. - - - - - - - - - - - - The Illumination_Min_Max class contains - attributes providing illumination parameters as minimum/maximum - pairs. For any given illumination parameter if one of minimum or - maximum is given, both must be given. If a target is specified - using the Geometry_Target_Identification class in the - Orbiter_Identification class under the same parent - Geometry_Orbiter class, the min-max pairs for each illumination - parameter provide the range of that parameter in the observation - on that target. Otherwise the pair provides the range for the - entire field of view. - - - - - - - - - - - - - - - - The Illumination_Specific class contains - attributes providing illumination parameters at a single - location in the field of view. That location is specified by - using one, and only one of reference_location, - reference_pixel_location, or Reference_Pixel, If - reference_location is used, and indicates a point on a target, - the target must be the one specified using - Geometry_Target_Identification in the parent Geometry_Orbiter - class. The provided value for each illumination attribute must - correspond to the time given by geometry_reference_time_utc. - - - - - - - - - - - - - - - - - - - - - - The Illumination_Start_Stop class contains - attributes providing illumination parameters as pairs - corresponding to the beginning and end of the observation. If - either the start or stop parameter is given, both must be - provided. If any values from this class are included in the - label, the parameters geometry_start_time_utc and - geometry_stop_time_utc must be given in the enclosing - Geometry_Orbiter class. If a target is specified using the - Geometry_Target_Identification class in the - Orbiter_Identification class under the parent Geometry_Orbiter - class, the start-stop pairs for each illumination parameter - provide the range of that parameter in the observation on that - target. Otherwise the pair provides the range for the entire - field of view. - - - - - - - - - - - - - - - - Image_Display_Geometry class provides an - unambiguous description of the orientation of the image - contents. This class assumes an image is displayed as described - by a disp:Display_Direction class elsewhere in the label. In the - unusual case where an image object does not have an associated - disp:Display_Direction class, then, and only then, the - optionalgeom:Display_Direction class in this class should be - present. Coupled with the information in the associated - Display_Direction class, any one of the Object_Orientation_* - classes should allow unambiguous orientation of the contents of - the image. The Local_Internal_Reference class is used to - identify the object to which this instance of the - Image_Display_Geometry class applies, and must be used if there - is more than one instance of Image_Display_Geometry in the - label. The appropriate value for local_reference_type is - image_display_to_object. The Object_Orientation_North_East class - is typically used for instruments for which the entire field of - view is a portion of the target surface (e.g., instruments on - Mars orbital spacecraft); otherwise use - Object_Orientation_RA_Dec (e.g., flyby missions, missions with - orbit radii much larger than the target radius such as Voyager - or Cassini). At least one of these must be used. The two - *_Identification classes used here are Central_Body (e.g., - Saturn if you are using Planetocentric or planetographic - coordinates in the Saturn system) and Target when the described - object in the FoV is not the Central_Body. For example giving - the orientation of the pole of Enceladus in Saturn - Planetocentric coordinates, Central_Body = Saturn, Target = - Enceladus. Bottom line: put in enough information so someone - else can figure out the orientation of the field of view. We - also offer an option to provide the pointing information as a - quaternion. - - - - - - - - - - - - - - - - - - The Interpolation class defines how the camera - model was interpolated from the calibration models. - Interpolation is used to create models in a variable space - (e.g., focus, zoom) between points at which calibration was - performed. If more than one dimension of variables were - interpolated, multiple Interpolation objects can exist, with - interpolation_sequence defining the order. - - - - - - - - - - - - Used when the list values are angles. - - - - - - - - - - - - - - The List_Index class is an abstract class - designed to enable the use of indexed lists. The minimum - requirement is at least one of sequence number, name or "id", - plus the set of values themselves. - - - - - - - - - - - - - Used when the list values are - lengths. - - - - - - - - - - - - - Used when the list values have no - units. - - - - - - - - - - - - - Used when the list values are temperatures. They - may also have accompanying temperature counts using - index_value_number. - - - - - - - - - - - - - - Used when the list values are - strings. - - - - - - - - - - - - - The Motion_Counter class provides a set of - integers that describe a (potentially) unique location (position - / orientation) for a rover or other movable object. Each time an - event occurs that results in a movement, a new motion counter - value is created. This includes intentional motion due to drive - commands, as well as potential motion due to other articulating - devices, such as arms or antennae. This motion counter (or part - of it) is used as a reference to define instances of coordinate - systems that can move such as SITE or ROVER frames. The motion - counter is defined in a mission-specific manner. Although the - original intent was to have incrementing indices (e.g., MER), - the motion counter could also contain any integer values that - conform to the above definition, such as time or spacecraft - clock values. - - - - - - - - - - - The Motion_Counter_Index class identifies and - populates one element of a Motion_Counter list. The class should - be repeated for each element of the list. - - - - - - - - - - - - - - - - - - The Object_Orientation_Clock_Angles class - provides several clock angles which can be used to describe the - orientation of the field of view with respect to various - external references such as Celestial or Equatorial North. - - - - - - - - - - - - - - - - - - - - The Object_Orientation_North_East class provides - the parameters needed to describe the orientation of an external - coordinate system relative to the image coordinate frame as - described by the Display_Direction class. - - - - - - - - - - - The Object_Orientation_RA_Dec class provides the - parameters needed to describe the orientation of the celestial - reference frame relative to the image coordinate frame as - described by the Display_Direction class. - - - - - - - - - - - - - - - - - - - - - - - Within the Geometry dictionary context, an - "Observer" is the body on the "from" end of a vector, or other - translation through space. - - - - - - - - - - - - - - - The Orbiter_Identification class is a container - of classes used to establish global identifications for the - Geometry_Orbiter class. - - - - - - - - - - - A new camera model designed to perform better - fisheye-image rectification prior to 1D stereo correlation. The - primary innovation is the use of a unit projection sphere rather - than an image plane. For epipolar alignment between stereo - cameras the rows (for a left/right pair) or the columns (for an - up/down pair) of both must lie along the same plane. Thus we use - a pair of planes to define the rows and columns. Each plane will - rotate around a static dedicated axis passing through the sphere - center. Pixels will be located where the planes intersect with - each other and the unit sphere. - - - - - - - - - - - - - - - The Pixel_Dimensions class contains information - regarding pixel size. - - - - - - - - - - - - - - - The Pixel_Intercept class provides the latitude - and longitude on the surface of the target for the projection of - the specified pixel. The pixel is specified using either - reference_pixel_location or Reference_Pixel. Although each of - these is optional, one must be used. - - - - - - - - - - - - - - - The Pixel_Size_Projected class gives the size, - in units of length (e.g., kilometers) of the projection of a - pixel onto the surface of the target which is specified in the - parent Geometry_Orbiter class. The reference_location attribute - is used to identify the specific point on the target. - - - - - - - - - - - - - - - - - - The Polynomial_Coefficients_1 class provides a - one polynomial coefficient. - - - - - - - - - The Polynomial_Coefficients_2 class provides two - polynomial coefficients. - - - - - - - - - - The Polynomial_Coefficients_3 class provides - three polynomial coefficients. - - - - - - - - - - - The Quaternion_Base class defines a quaternion - that represents rotation between two right-handed reference - frames. In this dictionary, quaternions are always constructed - so that the application of the quaternion describes the rotation - of one frame to a second frame. The two frames and the direction - of rotation must be identified unambiguously in the enclosing - classes. Quaternions are expressed as a set of four numbers in - the order (qcos, qsin1, qsin2, qsin3), where qcos = cos(theta/2) - and qsin(n) = sin(theta/2)*a(n). Theta is the angle of rotation - and a is the unit vector (x,y,z) around which the rotation - occurs. A document providing the full mathematical basis for - this construction, along with examples, and a summary of common - pitfalls, is in preparation. The current version can be obtained - by contacting the PDS Engineering Node. In application you need - to know the four elements of the quaternion, the two end point - frames, and the direction of the rotation. This dictionary - provides two extensions to this Base class. In the - Quaternion_Plus_Direction class we require the direction of - rotation. This class can only be used if the two end point - frames are identified in the enclosing class. This is generally - the case in the Lander section. The Quaternion_Plus_To_From - class requires the two frames be identified explicitly with one - designated as the "from frame" and the other as the "to frame". - - - - - - - - - - - - - The Quaternion_Model_Transform class specifies, - along with Vector_Model_Transform class, the transform used for - the camera model in an image. Camera models created by the - calibration process have associated with them a pose, comprised - of the position (offset) and orientation (quaternion) of the - camera at the time it was calibrated. The model is transformed - ("pointed") for a specific image by computing, generally using - articulation device kinematics, a final pose for the image. The - camera model is then translated and rotated from the calibration - to final pose. This class specifies the quaternion portion of - the final pose. - - - - - - - - - - - - - - - - Quaternion_Plus_Direction provides the four - elements of a quaternion and its direction of rotation. The two - end point frames must be identified in the enclosing class. See - the definition of Quaternion_Base for more details on the - quaternion classes in this dictionary. - - - - - - - - - - - - - - - - Quaternion_Plus_To_From provides the four - elements of a quaternion, plus attributes which identify the - initial (Rotate_From) and final (Rotate_To) frames of the - rotation. See the defintion of Quaternion_Base for more details - on the quaternion classes in this dictionary. - - - - - - - - - - - - - - Radial_Terms contains the coefficients of a - polynomial function used to describe the radial distortion of - the camera. - - - - - - - - - - - - - - - The Reference_Frame_Identification class is a - base class for identifying reference frames. These are frames in - the NAIF sense, i.e., three orthogonal axes with a specified - orientation, but without a fixed origin. - - - - - - - - - - - - - - - - The Reference_Pixel class provides the pixel - coordinates, line and sample, to which values in the containing - class apply. Integer values indicate the center of the pixel. - Sub-pixel values are permitted. For pixel_sample, the leading - edge (left edge for sample increasing to the right) has a value - 0.5 less than the integer value at the center, and the value for - the trailing edge is the center integer value + 0.5. For - pixel_line, the leading and trailing edges (top and bottom - respectively for line increasing downward) again are -0.5 and - +0.5 with respect to the center integer value. - - - - - - - - - - - A quaternion rotates one reference frame to - another reference frame. The Rotate_From class identifies the - initial frame. - - - - - - - - - - - - - - - - A quaternion rotates a one reference frame to - another reference frame. The Rotate_To class identifies the - destination frame. - - - - - - - - - - - - - - - - The SPICE_Kernel_Files class provides references - to the SPICE files used when calculating geometric values. - - - - - - - - - - - The SPICE_Kernel_Identification class optionally - includes the SPICE kernel type and provides two alternatives for - identifying the product: LIDVID using Internal_Reference, and - the file name of the kernel file. Although optional, LIDVID - should be given if one is available. The optional - kernel_provenance attribute indicates whether the kernel is a - predict or reconstructed kernel, or some combination of the two, - or if it is a kernel type for which such distinctions do not - apply. - - - - - - - - - - - - - - - - The Surface_Geometry class is a container for - surface geometry classes. - - - - - - - - - - - - The Surface_Geometry_Min_Max class contains - attributes providing surface geometry parameters as - minimum/maximum pairs. For any given parameter if one of minimum - or maximum is given, both must be given. The min-max pairs for - each parameter provide the range of that parameter in the - observation for the target specified using the - Geometry_Target_Identification class in the - Orbiter_Identification class under the parent Geometry_Orbiter - class. - - - - - - - - - - - - - - - - - - - - - - - - The Surface_Geometry_Specific class contains - classes and attributes for various points on the surface of the - target designated in the enclosing Geometry_Orbiter. - - - - - - - - - - - - - - - - - The Surface_Geometry_Start_Stop class contains - attributes providing surface geometry parameters given as pairs - corresponding to the beginning and end of the observation. For a - parameter, if either the start or stop parameter is given, both - must be provided. If any values from this class are included in - the label, the parameters geometry_start_time_utc and - geometry_stop_time_utc must be given in the enclosing - Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - - - - - - - - - - The Vector_Axis is a unit vector that describes - the axis of the camera, defined as the normal to the image - plane. - - - - - - - - - - - - - - - Unit column-plane rotation axis, passing - through the sphere center, typically vertical and pointing down - so that positive rotations (by the right-hand rule) will rotate - the forward half of the plane in the (rightward) direction of - increasing column (as projected on the forward hemisphere). - - - - - - - - - - - - - - - - Unit row-plane rotation axis, passing through - the sphere center, typically horizontal and pointing left so - that positive rotations (by the right-hand rule) will rotate the - forward half of the plane in the (downward) direction of - increasing row (as projected on the forward hemisphere). - - - - - - - - - - - - - - - - The Vector_Cartesian_Acceleration_Base is a - three dimensional, rectangular coordinates vector. Uses units of - linear acceleration. The included attributes are not sufficient - to identify the endpoints of the vector. - - - - - - - - - - - The Vector_Cartesian_Acceleration_Extended_Base - is a three dimensional, rectangular coordinates vector. Uses - units of linear acceleration. The included attributes are not - sufficient to identify the endpoints of the vector. While the - class Coordinate_System_Identification is optional, it must be - used here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - Vector_Cartesian_Acceleration_Generic is a three - dimensional, rectangular coordinates vector. Uses units of - linear acceleration. Includes attributes to identify the - endpoints of the vector. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - This is a generic vector in Cartesian space. The - "x", "y", and "z" component have no units. - - - - - - - - - - - This a Cartesian pixel vector generally used in - camera models. - - - - - - - - - - - The Vector_Cartesian_Position_Base is a three - dimensional, rectangular coordinates vector. Uses units of - length. The included attributes are not sufficient to identify - the endpoints of the vector. - - - - - - - - - - - The - Vector_Cartesian_Position_Central_Body_To_Spacecraft is a - linear, rectangular coordinates vector from the center of mass - of the central body (e.g., planet) to the spacecraft. While the - class Coordinate_System_Identification is optional, it must be - used here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Position_Central_Body_To_Target is a linear, - rectangular coordinates vector from the center of mass of the - central body (e.g., planet) to the target specified in the - parent Geometry_Orbiter class. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Position_Earth_To_Central_Body is a linear, - rectangular coordinates vector from the Earth to the central - body (e.g., planet). While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Position_Earth_To_Spacecraft is a linear, - rectangular coordinates vector from the Earth to the spacecraft. - While the class Coordinate_System_Identification is optional, it - must be used here if the coordinate system has not been - specified in the enclosing class. - - - - - - - - - - - - - - - - - - - - The Vector_Cartesian_Position_Earth_To_Target is - a linear, rectangular coordinates vector from the Earth to the - target specified in the parent Geometry_Orbiter class. While the - class Coordinate_System_Identification is optional, it must be - used here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The Vector_Cartesian_Position_Extended_Base is a - three dimensional, rectangular coordinates vector. Uses units of - length. The included attributes are not sufficient to identify - the endpoints of the vector. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - Vector_Cartesian_Position_Generic is a three - dimensional, rectangular coordinates vector. Uses units of - length. Includes attributes to identify the endpoints of the - vector. While the class Coordinate_System_Identification is - optional, it must be used here if the coordinate system has not - been specified in the enclosing class. - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Position_SSB_To_Central_Body is a linear, - rectangular coordinates vector from the Solar System Barycenter - to the central body (e.g., planet). While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The Vector_Cartesian_Position_SSB_To_Spacecraft - is a linear, rectangular coordinates vector from the Solar - System Barycenter to the spacecraft. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The Vector_Cartesian_Position_SSB_To_Target is a - linear, rectangular coordinates vector from the Solar System - Barycenter to the target specified in the parent - Geometry_Orbiter class. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Position_Spacecraft_To_Target is a linear, - rectangular coordinates vector from the spacecraft to the target - specified in the parent Geometry_Orbiter class. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Position_Sun_To_Central_Body is a linear, - rectangular coordinates vector from the Sun to the central body - (e.g., planet). While the class Coordinate_System_Identification - is optional, it must be used here if the coordinate system has - not been specified in the enclosing class. - - - - - - - - - - - - - - - - - - - - The Vector_Cartesian_Position_Sun_To_Spacecraft - is a linear, rectangular coordinates vector from the Sun to the - spacecraft. While the class Coordinate_System_Identification is - optional, it must be used here if the coordinate system has not - been specified in the enclosing class. - - - - - - - - - - - - - - - - - - - - The Vector_Cartesian_Position_Sun_To_Target is a - linear, rectangular coordinates vector from the Sun to the - target specified in the parent Geometry_Orbiter class. While the - class Coordinate_System_Identification is optional, it must be - used here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - This is a generic unit vector in Cartesian - space. The "x", "y", and "z" component have no units and are - restricted to values between -1.0 and 1.0 inclusive. Further the - length of the vector square root of the (sum of the squares of - the components) must be 1.0. - - - - - - - - - - - The Vector_Cartesian_Velocity_Base is a three - dimensional, rectangular coordinates vector. Uses units of - linear velocity. The included attributes are not sufficient to - identify the endpoints of the vector. - - - - - - - - - - - The Vector_Cartesian_Velocity_Extended_Base is a - three dimensional, rectangular coordinates vector. Uses units of - linear velocity. The included attributes are not sufficient to - identify the endpoints of the vector. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - Vector_Cartesian_Velocity_Generic is a three - dimensional, rectangular coordinates vector. Uses units of - linear velocity. Includes attributes to identify the endpoints - of the vector. While the class Coordinate_System_Identification - is optional, it must be used here if the coordinate system has - not been specified in the enclosing class. - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Velocity_Spacecraft_Relative_To_Central_Body is - a velocity vector in rectangular coordinates that gives the - velocity of the spacecraft with respect to the central body - (e.g., planet). While the class Coordinate_System_Identification - is optional, it must be used here if the coordinate system has - not been specified in the enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Velocity_Spacecraft_Relative_To_Earth is a - velocity vector in rectangular coordinates that gives the - velocity of the spacecraft with respect to Earth. While the - class Coordinate_System_Identification is optional, it must be - used here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Velocity_Spacecraft_Relative_To_SSB is a - velocity vector in rectangular coordinates that gives the - velocity of the spacecraft with respect to the Solar System - Barycenter. While the class Coordinate_System_Identification is - optional, it must be used here if the coordinate system has not - been specified in the enclosing class. - - - - - - - - - - - - - - - - - - - - - Vector_Cartesian_Velocity_Spacecraft_Relative_To_Sun is a - velocity vector in rectangular coordinates that gives the - velocity of the spacecraft with respect to the center of the - Sun. While the class Coordinate_System_Identification is - optional, it must be used here if the coordinate system has not - been specified in the enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Velocity_Spacecraft_Relative_To_Target is a - velocity vector in rectangular coordinates that gives the - velocity of the spacecraft with respect to the target specified - in the parent Geometry_Orbiter class. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Velocity_Target_Relative_To_Central_Body is a - velocity vector in rectangular coordinates that gives the - velocity of the designated target with respect to the central - body (e.g., planet). While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Velocity_Target_Relative_To_Earth is a velocity - vector in rectangular coordinates that gives the velocity of the - designated target with respect to Earth. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Velocity_Target_Relative_To_SSB is a velocity - vector in rectangular coordinates that gives the velocity of the - designated target with respect to the Solar System Barycenter. - While the class Coordinate_System_Identification is optional, it - must be used here if the coordinate system has not been - specified in the enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Cartesian_Velocity_Target_Relative_To_Spacecraft is a - velocity vector in rectangular coordinates that gives the - velocity of the designated target with respect to the - spacecraft. While the class Coordinate_System_Identification is - optional, it must be used here if the coordinate system has not - been specified in the enclosing class. - - - - - - - - - - - - - - - - - - - - - Vector_Cartesian_Velocity_Target_Relative_To_Sun is a velocity - vector in rectangular coordinates that gives the velocity of the - designated target with respect to the center of the sun. While - the class Coordinate_System_Identification is optional, it must - be used here if the coordinate system has not been specified in - the enclosing class. - - - - - - - - - - - - - - - - - - - - The Vector_Center describes the location of the - entrance pupil of a camera. - - - - - - - - - - - - - - - The Vector_Device_Gravity class is a unit vector - that specifies the direction of an external force acting on the - articulation device, in the spacecraft's coordinate system, at - the time the pose was computed. - - - - - - - - - - - - - - - The Vector_Device_Gravity_Magnitude class is a - vector (with magnitude) that specifies the direction of an - external force acting on the articulation device, in the - spacecraft's coordinate system, at the time the pose was - computed. - - - - - - - - - - - - - - - The Vector_Horizonal is a composite vector - encoding three quantities: H' (a vector in the image plane - perpendicular to the vertical columns), Hs (the distance between - the lens center and image plane, measured in horizontal pixels), - and Hc (the horizontal image coordinate directly under C when - moving parallel to A). H' is often thought of as describing the - orientation of rows in space, but is actually perpendicular to - the columns. - - - - - - - - - - - - - - - The Vector_Model_Transform class specifies, - along with the Quaternion_Model_Transform class, the transform - used for the camera model in this image. Camera models created - by the calibration process have associated with them a pose, - comprised of the position (offset) and orientation (quaternion) - of the camera at the time it was calibrated. The model is - transformed ("pointed") for a specific image by computing, - generally using articulation device kinematics, a final pose for - the image. The camera model is then translated and rotated from - the calibration to final pose. This class specifies the offset - portion of the final pose. - - - - - - - - - - - - - - - Unit normal vector to the column plane when x - equals zero, pointing in the same direction as the cross product - of axis x with an outward-pointing vector that also lies in the - plane. - - - - - - - - - - - - - - - Unit normal vector to the row plane when y - equals zero, pointing in the same direction as the cross product - of axis x with an outward-pointing vector that also lies in the - plane. - - - - - - - - - - - - - - - The Vector_Optical is a unit vector that - describes the axis of symmetry for radial distortion in the - camera. - - - - - - - - - - - - - - - The Vector_Origin_Offset class contains - attributes that specify the offset from the reference coordinate - system's origin to the origin of the coordinate system. It is - the location of the current system's origin as measured in the - reference system. - - - - - - - - - - - - - - - The Vector_Planetocentric_Position_Base is a - three dimensional spherical vector (radius, longitude, latitude) - with the angular coordinates defined to be consistent with the - Planetocentric coordinate system. Uses linear units for the - radius dimension, and angular units for the other two - dimensions. The included attributes are not sufficient to - identify the endpoints of the vector. - - - - - - - - - - - The - Vector_Planetocentric_Position_Central_Body_To_Spacecraft is a - spherical position vector in Planetocentric coordinates. It - extends from the center of mass of the central body (e.g., - planet) to the spacecraft. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Planetocentric_Position_Central_Body_To_Target is a - spherical position vector in Planetocentric coordinates. It - extends from the center of mass of the central body (e.g., - planet) to the target specified in the parent Geometry_Orbiter - class. While the class Coordinate_System_Identification is - optional, it must be used here if the coordinate system has not - been specified in the enclosing class. - - - - - - - - - - - - - - - - - - - - The Vector_Planetocentric_Position_Extended_Base - is a three dimensional spherical vector (radius, longitude, - latitude) with the angular coordinates defined to be consistent - with the Planetocentric coordinate system. Uses linear units for - the radius dimension, and angular units for the other two - dimensions. The included attributes are not sufficient to - identify the endpoints of the vector. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - The Vector_Planetocentric_Position_Generic is a - three dimensional spherical vector (radius, longitude, latitude) - with the angular coordinates defined to be consistent with the - Planetocentric coordinate system. Uses linear units for the - radius dimension, and angular units for the other two - dimensions. Includes attributes to identify the endpoints of the - vector. While the class Coordinate_System_Identification is - optional, it must be used here if the coordinate system has not - been specified in the enclosing class. - - - - - - - - - - - - - - - - - The - Vector_Planetocentric_Position_Spacecraft_To_Target is a - spherical position vector in Planetocentric coordinates. It - extends from the spacecraft to the target specified in the - parent Geometry_Orbiter class. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The Vector_Planetocentric_Velocity_Base is a - three dimensional spherical vector (radius, longitude, latitude) - with the angular coordinates defined to be consistent with the - Planetocentric coordinate system. Uses linear velocity units for - the radius dimension, and angular velocity units for the other - two dimensions. The included attributes are not sufficient to - identify the endpoints of the vector. - - - - - - - - - - - The Vector_Planetocentric_Velocity_Extended_Base - is a three dimensional spherical vector (radius, longitude, - latitude) with the angular coordinates defined to be consistent - with the Planetocentric coordinate system. Uses linear velocity - units for the radius dimension, and angular velocity units for - the other two dimensions. The included attributes are not - sufficient to identify the endpoints of the vector. While the - class Coordinate_System_Identification is optional, it must be - used here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - The Vector_Planetocentric_Velocity_Generic is a - three dimensional spherical vector (radius, longitude, latitude) - with the angular coordinates defined to be consistent with the - Planetocentric coordinate system. Uses linear velocity units for - the radius dimension, and angular velocity units for the other - two dimensions. Includes attributes to identify the endpoints of - the vector. While the class Coordinate_System_Identification is - optional, it must be used here if the coordinate system has not - been specified in the enclosing class. - - - - - - - - - - - - - - - - - The - Vector_Planetocentric_Velocity_Spacecraft_Relative_To_Target is - a spherical velocity vector in Planetocentric coordinates that - gives the velocity of the spacecraft with respect to the - designated target. While the class - Coordinate_System_Identification is optional, it must be used - here if the coordinate system has not been specified in the - enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Planetocentric_Velocity_Target_Relative_To_Central_Body - is a spherical velocity vector in Planetocentric coordinates - that gives the velocity of the target with respect to the - central body. While the class Coordinate_System_Identification - is optional, it must be used here if the coordinate system has - not been specified in the enclosing class. - - - - - - - - - - - - - - - - - - - - The - Vector_Planetocentric_Velocity_Target_Relative_To_Spacecraft is - a spherical velocity vector in Planetocentric coordinates that - gives the velocity of the target with respect to the spacecraft. - While the class Coordinate_System_Identification is optional, it - must be used here if the coordinate system has not been - specified in the enclosing class. - - - - - - - - - - - - - - - - - - - - Unit vector pointing in the direction of the - Sun at the time of the observation. - - - - - - - - - - - - - - - The Vector_Vertical is a composite vector - encoding three quantities: V' (a vector in the image plane - perpendicular to the horizontal rows), Vs (the distance between - the lens center and image plane, measured in vertical pixels), - and Vc (the vertical image coordinate directly under C when - moving parallel to A). V' is often thought of as describing the - orientation of columns in space, but is actually perpendicular - to the rows. - - - - - - - - - - - - - - - The Vectors class is a container of vector - classes. - - - - - - - - - - - - The Vectors_Cartesian_Specific class is a - container class for all cartesian vectors with pre-identified - endpoints. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The Vectors_Planetocentric_Specific class is a - container class for all planetocentric vectors with - pre-identified endpoints. - - - - - - - - - - - - - - - This section contains the simpleTypes that provide more constraints - than those at the base data type level. The simpleTypes defined here build on the base data - types. This is another component of the common dictionary and therefore falls within the - common namespace. - - - - - - Count in clock units of how long it has been - since the last IMU reset, which relates to how good the attitude - measurement is due to IMU drift. - - - - - - - - - - - - - - - - - The number of seconds for how long it has been - since the last IMU reset, which relates to how good the attitude - measurement is due to IMU drift. - - - - - - - - - - - The body_spice_name attribute is a - NAIF-recognized string identifier for a physical object - (spacecraft, planet, instrument transmitter, system barycenter, - etc.), associated with the data. - - - - - - - - - - The first coefficient of a polynomial. - - - - - - - - - - - The second coefficient of a polynomial. - - - - - - - - - - - The third coefficient of a polynomial. - - - - - - - - - - - The cahvore_parameter_type attribute is a scalar - floating-point number used for CAHVORE Type 3 models (see - cahvore_model_type). If the parameter is 1.0, the model is - identical to type 1; if 0.0, it is identical to type 2. Most - fish-eye lenses use a value in between. - - - - - - - - - - The cahvore_model_type attribute indicates which - variant of the CAHVORE model to use. Type 1 is a - perspective-projection model, similar to CAHV and CAHVOR except - for the moving entrance pupil. Type 2 is a fish-eye lens model - reflecting fundamentally different geometry. Type 3 is a - generalization that includes the first two, and is used for most - fisheye-type lenses (see cahvore_model_parameter). - - - - - - - - - - - The calibration_source_id is used to identify - the source used in calibrating the instrument. - - - - - - - - - - - - - - - - - - The celestial_east_clock_angle attribute - specifies the direction of celestial east at the center of an - image. It is measured from the 'upward' direction, clockwise to - the direction toward celestial east, assuming the image is - displayed as defined by the Display_Direction class. - - - - - - - - - - - - - - - - - - - The celestial_north_clock_angle attribute - specifies the direction of celestial north at the center of an - image. It is measured from the 'upward' direction, clockwise to - the direction toward celestial north, assuming the image is - displayed as defined by the Display_Direction class. - - - - - - - - - - - - - - - - - - - - The central_body_north_pole_clock_angle element - specifies the direction of the central body's (e.g., - planet's)rotation axis in an image. It is measured from the - 'upward' direction in the image, clockwise to the direction of - the northern rotational pole as projected into the image plane, - assuming the image is displayed as defined by the - Display_Direction class. The north pole of a planet or any of - its satellites in the solar system is the pole of the rotation - axis that is in the same celestial hemisphere relative to the - invariable plane of the solar system as Earth's North pole. - - - - - - - - - - - - - - - - - - - The central_body_positive_pole_clock_angle - element specifies the direction of the central body's rotation - axis in an image. It is measured from the 'upward' direction in - the image, clockwise to the direction of the positive rotational - pole as projected into the image plane, assuming the image is - displayed as defined by the Display_Direction class. The - positive pole is defined as the pole toward which the thumb - points when the fingers of the right hand are curled in the - body's direction of rotation. - - - - - - - - - - - Specifies how the device was commanded. - - - - - - - - - - - The coordinate_space_frame_type attribute - identifies the type of frame being described, such as SITE, - LOCAL_LEVEL, LANDER, ROVER, ARM, etc. When combined with - Coordinate_Space_Index and the optional solution_id in the - Coordinate_Space_Indexed class, this serves to fully name an - instance of a coordinate space. - - - - - - - - - - - The coordinate_system_time_utc provides the - instantiation time for the coordinate system. - - - - - - - - - The coordinate_system_type distinguishes between - options such as rectangular, spherical, planetocentric, etc. - - - - - - - - - - - - - - - - - - - The declination_angle (Dec) attribute provides - the value of an angle on the celestial sphere, measured north - from the celestial equator to the point in question. (For points - south of the celestial equator, negative values are used.) - Declination is used in conjunction with right ascension - (right_ascension_angle or right_ascension_hour_angle) to specify - a point on the sky. - - - - - - - - - - - The device_id attribute specifies the - abbreviated identification of an articulation device. - - - - - - - - - - - The device_mode attribute specifies the - deployment state (i.e., physical configuration) of an - articulation device at the time of data acquisition. Examples - include 'Arm Vibe', 'Deployed', 'Free Space', 'Stowed'. Note: - the value set for this attribute is mission-specific and should - be declared in a mission-specific dictionary. - - - - - - - - - - The device_name attribute specifies the common - name of an articulation device. - - - - - - - - - - The device_phase attribute specifies the current - phase of the mission, from an articulation-device-centric point - of view. - - - - - - - - - - - - - - - - - The distance attribute provides the scalar - distance between to objects or points. - - - - - - - - - - - - - - - - - - Assuming the image is displayed as defined by - the Display_Direction class, the east_azimuth attribute provides - the value of the angle between a line from the image center to - the east and a reference line in the image plane. The reference - line is a horizontal line from the image center to the middle - right edge of the image. This angle is measured from the - reference line and increases in a clockwise direction. - - - - - - - - - - - - - - - - - - - The ecliptic_east_clock_angle attribute - specifies the direction of ecliptic east at the center of an - image. It is measured from the 'upward' direction, clockwise to - the direction toward ecliptic east, assuming the image is - displayed as defined by the Display_Direction class. - - - - - - - - - - - - - - - - - - - The ecliptic_north_clock_angle attribute - specifies the direction of ecliptic north at the center of an - image. It is measured from the 'upward' direction, clockwise to - the direction toward ecliptic north, assuming the image is - displayed as defined by the Display_Direction class. - - - - - - - - - - - - - - - - - - - - The emission_angle element provides the value of - the angle between the surface normal vector at the intercept - point and a vector from the intercept point to the spacecraft. - The emission_angle varies from 0 degrees when the spacecraft is - viewing the subspacecraft point (nadir viewing) to 90 degrees - when the intercept is tangent to the surface of the target body. - Thus, higher values of emission_angle indicate more oblique - viewing of the target. Values in the range of 90 to 180 degrees - are possible for ring data. - - - - - - - - - - - The frame_spice_name attribute is a - NAIF-recognized string identifier for a reference frame - associated with the data. - - - - - - - - - - - - - - - - - The geometry reference time given in the - 'Barycentric Dynamical Time' system, as a number of elapsed - seconds since the J2000 epoch. This is consistent with the - definition of 'ephemeris time' as used in the SPICE toolkit. The - value must correspond to the time specified in the - geometry_reference_time_utc attribute. - - - - - - - - - - - For some observations, geometric parameters are - given as instantaneous values at a specific time. Another set of - instantaneous parameters are the parameters which give the - minimum and maximum values in the product. In some cases, these - range values are all calculated for the same time. If the label - includes single valued geometric parameters or min/max range - parameters determined for a specific time, - geometry_reference_time_utc gives the time for which these - values were calculated and must be given in the label. For some - instruments, particularly those with relatively large exposure - durations, (e.g., push broom cameras, many imaging - spectrometers), many geometric quantities are given as ranges. - If those range parameters are associated with the beginning and - end of the observation (start_parameter/stop_parameter), - geometry_start_time_utc/stop_time must be given. Comments within - the label should be used to ensure the parameter vs. time - association is unambiguous. - - - - - - - - - The pair of - geometry_start_time_utc/geometry_stop_time_utc may be given in - the label for any observation. The pair is generally used for - fairly long duration observations (a substantial portion of an - hour to several hours). geometry_start_time_utc gives the time - at the beginning of the observation. When either - geometry_start_time_utc or geometry_stop_time_utc is given, both - must be provided. Within the Geometry discipline, there are two - options for providing geometric parameters as a range of values. - A parameter may be given as a pair where the parameter values - are those at the beginning and end of the observation - (start_parameter, stop_parameter). If a (start_parameter, - stop_parameter) pair is used for any geometric parameter, the - pair (geometry_start_time_utc/geometry_stop_time_utc) must be - given. Another option to provide geometric parameters as a pair - is (minimum_parameter, maximum_parameter) defining a range of - values where the values are the minimum and maximum values of - that parameter for the entire observation. Comments within the - label should be used to ensure the parameter vs. time - association is unambiguous. - - - - - - - - - Specifies the state or configuration of this - instance of Geometry_Lander applies. Use of this attribute - enables multiple instances of Geometry_Lander, describing the - geometry under different conditions. Note that it is legal for - more than one instance to have the same geometry_state, in which - case the local_identifier should be used to differentiate the - instances, along with description. If not present, the semantics - of "Telemetry" should be assumed. It is not required that - instances be retained; a derived product may have an Adjusted - instance but remove the Telemetry one, for - example. - - - - - - - - - - The pair of - geometry_start_time_utc/geometry_stop_time_utc may be given in - the label for any observation. The pair is generally used for - fairly long duration observations (a substantial portion of an - hour to several hours). geometry_stop_time_utc gives the time at - the end of the observation. When either geometry_start_time_utc - or geometry_stop_time_utc is given, both must be provided. - Within the Geometry discipline, there are two options for - providing geometric parameters as a range of values. A parameter - may be given as a pair where the parameter values are those at - the beginning and end of the observation (start_parameter, - stop_parameter). If a (start_parameter, stop_parameter) pair is - used for any geometric parameter, the pair - (geometry_start_time_utc/geometry_stop_time_utc) must be given. - Another option to provide geometric parameters as a pair is - (minimum_parameter, maximum_parameter) defining a range of - values where the values are the minimum and maximum values of - that parameter for the entire observation. Comments within the - label should be used to ensure the parameter vs. time - association is unambiguous. - - - - - - - - - - - - - - - - horizontal_coordinate_pixel (sample) is the - horizontal coordinate of a specific pixel. - - - - - - - - - - - The horizontal_display_axis attribute - identifies, by name, the axis of an Array (or Array subclass) - that is intended to be displayed in the horizontal or "sample" - dimension on a display device. The value of this attribute must - match the value of one, and only one, axis_name attribute in an - Axis_Array class of the associated Array. - - - - - - - - - - The horizontal_display_direction attribute - specifies the direction across the screen of a display device - that data along the horizontal axis of an Array is supposed to - be displayed. - - - - - - - - - - - - - - - - - The horizontal_pixel_field_of_view provides the - angular measure of the horizontal field of view of a single - pixel, and is sometimes referred to as the instantaneous field - of view. The pixel_field_of_view_method attribute will designate - the method used to determine this value. If the - pixel_field_of_view_method attribute is not specified, see the - camera documentation for more details. - - - - - - - - - - - - - - - - - - The horizontal_pixel_footprint provides the the - size of the horizontal field of view of a single pixel projected - onto the target specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The incidence_angle element provides a measure - of the lighting condition at the intercept point. Incidence - angle is the angle between the local vertical at the intercept - point (surface) and a vector from the intercept point to the - sun. The incidence_angle varies from 0 degrees when the - intercept point coincides with the subsolar point to 90 degrees - when the intercept point is at the terminator (i.e., in the - shadowed or dark portion of the target body). - - - - - - - - - - - The index_id attribute supplies a short name - (identifier) for the associated value in a group of related - values. - - - - - - - - - - The index_name attribute supplies the formal - name for the associated value in a group of related values. - - - - - - - - - - - The index_sequence_number attribute supplies the - sequence identifier for the associated value in a group of - related values. - - - - - - - - - - - - - - - - - The index_value_angle attribute provides the - value of an angle as named by the associated index_id, - index_name, or index_sequence_number. - - - - - - - - - - - - - - - - - - The index_value_length attribute provides the - value of a length as named by the associated index_id or - index_name. - - - - - - - - - - - The index_value_number attribute provides the - value with no applicable units as named by the associated - index_id or index_name. - - - - - - - - - - The index_value attribute provides the string - value as named by the associated index_id or index_name. - - - - - - - - - - - - - - - - - - The index_value_temperature attribute provides - the value of a temperature as named by the associated index_id - or index_name. - - - - - - - - - - - - - - - - - - The instrument_azimuth attribute specifies the - value for an instrument's rotation in the horizontal direction. - It may be measured from a low hard stop, or relative to a - coordinate frame. Although it may be used for any instrument - where it makes sense, it is primarily intended for use in - surface-based instruments that measure pointing in terms of - azimuth and elevation. If this value is expressed using a - coordinate system, the coordinate system is specified by the - Coordinate_Space_Reference class. The interpretation of exactly - what part of the instrument is being pointed is - mission-specific. It could be the boresight, the camera head - direction, the CAHV camera model A vector direction, or any of a - number of other things. As such, for multimission use this value - should be used mostly as an approximation, e.g. identifying - scenes which might contain a given object. - - - - - - - - - - - - - - - - - - The instrument_elevation attribute specifies the - value for an instrument's rotation in the vertical direction. It - may be usually measured from a low hard stop, or relative to a - coordinate frame. Although it may be used for any instrument - where it makes sense, it is primarily intended for use in - surface-based instruments that measure pointing in terms of - azimuth and elevation. If this value is expressed using a - coordinate system, the coordinate system is specified by the - Coordinate_Space_Reference class. The interpretation of exactly - what part of the instrument is being pointed is - mission-specific. It could be the boresight, the camera head - direction, the CAHV camera model A vector direction, or any of a - number of other things. As such, for multimission use this value - should be used mostly as an approximation, e.g. identifying - scenes that might contain a given object. - - - - - - - - - - - The interpolation_algorithm defines how - interpolation was performed. For example, "Piecewise Bilinear" - does a piecewise bilinear interpolation between calibration - models nearest to the interpolation_value. - - - - - - - - - - When more than one dimension is interpolated, - interpolation_sequence define the ordering. Sequence value 1 was - interpolated first, directly from calibration; sequence value 2 - was interpolated from those results, etc. - - - - - - - - - - The interpolation_value specifies the value of - the variable to which the model was interpolated. The - interpretation of the value depends on what the variable is and - should be documented in the mission documentation. - - - - - - - - - - - The interpolation_variable defines the parameter - across which interpolation is being performed. Examples of - variables include Focus, Zoom, and Temperature. - - - - - - - - - - - The kernel_provenance attribute indicates - whether a kernel file is a predict kernel, a reconstructed - kernel, some combination of the two, or a kernel for which the - distinction is not applicable. - - - - - - - - - - The lat_long_method is used with the attributes - start_latitude, stop_latitude, start_longitude and - stop_longitude. For most observations these parameters would be - multivalued. lat_long_method is used to characterize the start - and stop latitude and longitude. The possible values are: - 'center' indicating the latitude and longitude values are those - at the center of the field of view at the beginning and end of - the observation. 'median' indicating the latitude and longitude - values are the median values at the beginning and end of the - observation. 'mean' indicating the latitude and longitude values - are the mean values at the beginning and end of the observation. - - - - - - - - - - - - - - - - - - The latitude component of a Planetocentric - position vector. Planetocentric latitude is the angle between - the equator plane and a vector connecting the point of interest - and the origin of the coordinate system. Latitudes are defined - to be positive in the northern (as defined by the IAU) - hemisphere. - - - - - - - - - - - - - - - - - - The latitude component of a Planetocentric - velocity vector. Planetocentric latitude is the angle between - the equator plane and a vector connecting the point of interest - and the origin of the coordinate system. Latitudes are defined - to be positive in the northern (as defined by the IAU) - hemisphere. - - - - - - - - - - - The light_time_correction_applied indicates - whether or not light travel time correction and stellar - aberration correction were used when calculating the values in - the enclosing class. The attribute is nillable with nill_reason - = unknown, but only for migrated data. Note: generally, received - light travel time is calculated unless a transmitter (e.g., - radar, radio) was involved in which the calculation typically is - transmitted light time. - - - - - - - - - - - - - - - - - - The longitudinal component of a Planetocentric - position vector. Planetocentric longitude is measured from the - IAU approved prime meridian for the body and increases toward - the east. - - - - - - - - - - - - - - - - - - The longitudinal component of a Planetocentric - velocity vector. Planetocentric longitude is measured from the - IAU approved prime meridian for the body and increases toward - the east. - - - - - - - - - - - - - - - - - - The maximum_emission_angle element provides the - largest value during the observation for the emission angle at - the target specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The maximum_incidence_angle element provides the - largest value during the observation for the incidence angle at - the target specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The maximum_latitude attribute identifies the - final end of the range of values for Planetocentric latitude in - an image. - - - - - - - - - - - - - - - - - - The maximum_longitude attribute identifies the - final end of the range of values for Planetocentric longitude in - an image. Note that since Planetocentric longitude has values in - [0,360], if the range in the product crosses the prime meridian, - the value of minimum_longitude will be greater than the value of - the maximum_longitude. - - - - - - - - - - - - - - - - - - The maximum_phase_angle element provides the - largest value during the observation for the phase angle at the - target specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The maximum_solar_elongation element provides - the largest value during the observation for the solar - elongation. - - - - - - - - - - - - - - - - - - The maximum_spacecraft_central_body_distance - attribute provides the largest value during the observation for - the distance between the spacecraft and the center of the - central body (e.g., the center of Mars when opperating in the - Mars system). - - - - - - - - - - - - - - - - - - The maximum_spacecraft_geocentric_distance - attribute provides the largest value during the observation for - the distance between the spacecraft and the center of Earth. - - - - - - - - - - - - - - - - - - - The maximum_spacecraft_heliocentric_distance - attribute provides the largest value during the observation for - the distance between the spacecraft and the center of the Sun. - - - - - - - - - - - - - - - - - - - The - maximum_spacecraft_target_boresight_intercept_distance attribute - provides the largest value during the observation for the - distance between the spacecraft and the boresight vector - intercept point on the surface of the target specified in the - parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - The maximum_spacecraft_target_center_distance - attribute provides the largest value during the observation for - the distance between the spacecraft and the center of the target - specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The - maximum_spacecraft_target_subspacecraft_distance attribute - provides the largest value during the observation for the - distance between the spacecraft and the subspacecraft point on - the surface of the target specified in the parent - Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - The maximum_subsolar_azimuth attribute - identifies the final end of the range of values for subsolar - azimuth in an image. Note that since subsolar azimuth has values - in [0,360], if the range in the image crosses the horizontal - reference corresponding to zero, the value of - minimum_subsolar_azimuth will be greater than the value of the - maximum_subsolar_azimuth. - - - - - - - - - - - - - - - - - - The maximum_subsolar_latitude attribute - identifies the final end of the range of values for subsolar - latitude in an image. - - - - - - - - - - - - - - - - - - The maximum_subsolar_longitude attribute - identifies the final end of the range of values for subsolar - longitude in an image. Note that since subsolar longitude has - values in [0,360], if the range in the product crosses the prime - meridian, the value of minimum_subsolar_longitude will be - greater than the value of the maximum_subsolar_longitude. - - - - - - - - - - - - - - - - - - - The maximum_subspacecraft_azimuth attribute - identifies the final end of the range of values for - subspacecraft azimuth in an image. Note that since subspacecraft - azimuth has values in [0,360], if the range in the image crosses - the horizontal reference corresponding to zero, the value of - minimum_subspacecraft_azimuth will be greater than the value of - the maximum_subspacecraft_azimuth. - - - - - - - - - - - - - - - - - - The maximum_subspacecraft_latitude attribute - identifies the final end of the range of values for - subspacecraft latitude in an image. - - - - - - - - - - - - - - - - - - The maximum_subspacecraft_longitude attribute - identifies the final end of the range of values for - subspacecraft longitude in an image. Note that since - subspacecraft longitude has values in [0,360], if the range in - the product crosses the prime meridian, the value of - minimum_subspacecraft_longitude will be greater than the value - of the maximum_subspacecraft_longitude. - - - - - - - - - - - - - - - - - - The maximum_target_geocentric_distance attribute - provides the largest value for the distance between the center - of the target and the center of the Earth during the - observation. - - - - - - - - - - - - - - - - - - The maximum_target_heliocentric_distance - attribute provides the largest value for the distance between - the center of the target and the center of the Sun during the - observation. - - - - - - - - - - - - - - - - - - The maximum_target_ssb_distance attribute - provides the largest value for the distance between the center - of the target and the Solar System Barycenter during the - observation. - - - - - - - - - - - - - - - - - - The minimum_emission_angle attribute provides - the smallest value during the observation for the emission angle - at the target specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The minimum_incidence_angle attribute provides - the smallest value during the observation for the incidence - angle at the target specified in the parent Geometry_Orbiter - class. - - - - - - - - - - - - - - - - - - The minimum_latitude attribute identifies the - initial end of the range of values for Planetocentric latitude - in an image. - - - - - - - - - - - - - - - - - - The minimum_longitude attribute identifies the - initial end of the range of values for Planetocentric longitude. - Note that since Planetocentric longitude has values in [0,360], - if the range in the product crosses the prime meridian, the - value of minimum_longitude will be greater than the value of the - maximum_longitude. - - - - - - - - - - - - - - - - - - The minimum_phase_angle attribute provides the - smallest value during the observation for the phase angle at the - target specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The minimum_solar_elongation attribute provides - the smallest value during the observation for the solar - elongation. - - - - - - - - - - - - - - - - - - The minimum_spacecraft_central_body_distance - attribute provides the smallest value during the observation for - the distance between the spacecraft and the center of the - central body (e.g., the center of Mars when opperating in the - Mars system). - - - - - - - - - - - - - - - - - - The minimum_spacecraft_geocentric_distance - attribute provides the smallest value during the observation for - the distance between the spacecraft and the center of Earth. - - - - - - - - - - - - - - - - - - - The minimum_spacecraft_heliocentric_distance - attribute provides the smallest value during the observation for - the distance between the spacecraft and the center of the Sun. - - - - - - - - - - - - - - - - - - - The - minimum_spacecraft_target_boresight_intercept_distance attribute - provides the smallest value during the observation for the - distance between the spacecraft and the boresight vector - intercept point on the surface of the target specified in the - parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - The minimum_spacecraft_target_center_distance - attribute provides the smallest value during the observation for - the distance between the spacecraft and the center of the target - specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The - minimum_spacecraft_target_subspacecraft_distance attribute - provides the smallest value during the observation for the - distance between the spacecraft and the subspacecraft point on - the surface of the target specified in the parent - Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - The minimum_subsolar_azimuth attribute - identifies the initial end of the range of values for subsolar - azimuth in an image. Note that since subsolar azimuth has values - in [0,360], if the range in the image crosses the horizontal - reference corresponding to zero, the value of - minimum_subsolar_azimuth will be greater than the value of the - maximum_subsolar_azimuth. - - - - - - - - - - - - - - - - - - The minimum_subsolar_latitude attribute - identifies the initial end of the range of values for subsolar - latitude in an image. - - - - - - - - - - - - - - - - - - The minimum_subsolar_longitude attribute - identifies the initial end of the range of values for subsolar - longitude. Note that since subsolar longitude has values in - [0,360], if the range in the product crosses the prime meridian, - the value of minimum_subsolar_longitude will be greater than the - value of the maximum_subsolar_longitude. - - - - - - - - - - - - - - - - - - The minimum_subspacecraft_azimuth attribute - identifies the initial end of the range of values for - subspacecraft azimuth in an image. Note that since subspacecraft - azimuth has values in [0,360], if the range in the image crosses - the horizontal reference corresponding to zero, the value of - minimum_subspacecraft_azimuth will be greater than the value of - the maximum_subspacecraft_azimuth. - - - - - - - - - - - - - - - - - - The minimum_subspacecraft_latitude attribute - identifies the initial end of the range of values for - subspacecraft latitude in an image. - - - - - - - - - - - - - - - - - - The minimum_subspacecraft_longitude attribute - identifies the initial end of the range of values for - subspacecraft longitude. Note that since subspacecraft longitude - has values in [0,360], if the range in the product crosses the - prime meridian, the value of minimum_subspacecraft_longitude - will be greater than the value of the - maximum_subspacecraft_longitude. - - - - - - - - - - - - - - - - - - The minimum_target_geocentric_distance attribute - provides the smallest value for the distance between the center - of the target and the center of the Earth during the - observation. - - - - - - - - - - - - - - - - - - The minimum_target_heliocentric_distance - attribute provides the smallest value for the distance between - the center of the target and the center of the Sun during the - observation. - - - - - - - - - - - - - - - - - - The minimum_target_ssb_distance attribute - provides the smallest value for the distance between the center - of the target and the Solar System Barycenter during the - observation. - - - - - - - - - - - The model_type attribute specifies an identifier - for the type or kind of model. The value should be one of a well - defined set, providing an application program with sufficient - information to know how to handle the rest of the parameters - within the model. This value will correlate directly with the - specific camera model class that is a subclass of the - Camera_Model_Parameters class. - - - - - - - - - - - - - - - - - Assuming the image is displayed as defined by - the Display_Direction class, the north_azimuth attribute - provides the value of the angle between a line from the image - center to the north pole and a reference line in the image - plane. The reference line is a horizontal line from the image - center to the middle right edge of the image. This angle is - measured from the reference line and increases in a clockwise - direction. - - - - - - - - - - - - - - - - - - The phase_angle element provides a measure of - the relationship between the instrument viewing position and - incident illumination (such as solar light). Phase angle is - measured at the target; it is the angle between a vector to the - illumination source and a vector to the instrument. If - illumination is from behind the instrument, phase_angle will be - small. - - - - - - - - - - - The pixel_field_of_view_method provides the - method used to get the values of the - horizontal/vertical_pixel_field_view attributes. If the pixel - field of view does not vary across the camera field of view, - then this value is 'constant'. If the pixel field of view does - vary across the camera field of view, the pixel field of view - can be determined either by the center pixel of the camera or - the average field of view of the pixel. See the camera - documentation for more details. - - - - - - - - - - - - - - - - - The pixel_latitude attribute gives the value of - the planetocentric latitude on the target of the projection of a - specified pixel. - - - - - - - - - - - - - - - - - - The pixel_longitude attribute gives the value of - the planetocentric longitude on the target of the projection of - a specified pixel. - - - - - - - - - - - The positive_azimuth_direction attribute - specifies the direction in which azimuth is measured in positive - degrees for an observer on the surface of a body. The azimuth is - measured with respect to the elevation reference plane. A value - of 'clockwise' indicates that azimuth is measured positively - clockwise, and 'counterclockwise' indicates that azimuth - increases positively counter-clockwise. - - - - - - - - - - The positive_elevation_direction attribute - provides the direction in which elevation is measured in - positive degrees for an observer on the surface of a body. The - elevation is measured with respect to the azimuthal reference - plane. A value of UP or ZENITH indicates that elevation is - measured positively upwards, i.e., the zenith point would be at - +90 degrees and the nadir point at -90 degrees. DOWN or NADIR - indicates that the elevation is measured positively downwards; - the zenith point would be at -90 degrees and the nadir point at - +90 degrees. - - - - - - - - - - Column scale factor to convert between x - coordinate and rotation around axis x, expressed in - radians/pixel. - - - - - - - - - - Column scale factor to convert between y - coordinate and rotation around axis y, expressed in - radians/pixel. - - - - - - - - - - qcos is the scalar component of a quaternion. - qcos = cos(theta/2), where theta is the angle of rotation. - - - - - - - - - - - qsin1 is the first element of the vector - component of a quaternion. qsin1 = x*sin(theta/2) where theta is - the angle of rotation and (x,y,z) is the unit vector around - which the rotation occurs. - - - - - - - - - - qsin2 is the second element of the vector - component of a quaternion. qsin2 = y*sin(theta/2) where theta is - the angle of rotation and (x,y,z) is the unit vector around - which the rotation occurs. - - - - - - - - - - qsin3 is the third element of the vector - component of a quaternion. qsin3 = z*sin(theta/2) where theta is - the angle of rotation and (x,y,z) is the unit vector around - which the rotation occurs. - - - - - - - - - - Specifies the method by which the coordinate - space was measured. This provides an indication of the quality - of the definition. - - - - - - - - - - - - - - - - - The radial component of a spherical or - cylindrical velocity vector. - - - - - - - - - - - - - - - - - - The radial component of a spherical or - cylindrical position vector (e.g., the radius coordinate in - Planetocentric coordinates). - - - - - - - - - - - The reference_location indicates the position to - which values in the containing class apply. If the reference - location is on a target, the target is the one specified in the - parent Geometry_Orbiter class. - - - - - - - - - - The reference_pixel_location indicates the - position of the pixel to which values in the containing class - apply. - - - - - - - - - - - - - - - - - The right_ascension_angle attribute provides the - value of right ascension (RA) as an angle. Right ascension is - measured from the vernal equinox or the first point of Aries, - which is the place on the celestial sphere where the Sun crosses - the celestial equator from south to north at the March equinox. - Right ascension is measured continuously in a full circle from - that equinox towards the east. Right ascension is used in - conjunction with the declination attribute to specify a point on - the sky. Note Right Ascension also may be given in hour angles - in which case the appropriate attribute is - right_ascension_hour_angle. - - - - - - - - - - - - - - - - - - The right_ascension_hour_angle attribute - provides the value of right ascension (RA) as in terms of hour - angles (hh.xxx...). Right ascension is measured from the vernal - equinox or the first point of Aries, which is the place on the - celestial sphere where the Sun crosses the celestial equator - from south to north at the March equinox. Right ascension is - measured continuously in a full circle from that equinox towards - the east. Right ascension is used in conjunction with the - declination attribute to specify a point on the sky. - - - - - - - - - - - - The rotation_direction attribute identifies the - direction of the rotation for a specific quaternion. This is - used when the two frames involved are unambiguously identifed in - the enclosing classes. - - - - - - - - - - The selected_instrument_id attribute specifies - an abbreviated name or acronym that identifies the selected - instrument mounted on the articulation device. - - - - - - - - - - - - - - - - - - The solar_azimuth attribute specifies one of two - angular measurements indicating the direction to the Sun as - measured from a specific point on the surface of a planet (eg., - from a lander or rover). The positive direction of azimuth is - set by the positive_azimuth_direction attribute in the reference - coordinate space. The azimuth is measured in the clockwise or - counterclockwise direction (as viewed from above) with the - meridian passing through the positive spin axis of the planet - (i.e., the north pole) defining the zero reference. - - - - - - - - - - - - - - - - - - - The solar_elevation attribute specifies one of - two angular measurements indicating the direction to the Sun as - measured from a specific point on the surface of a planet (eg., - from a lander or rover). The positive direction of the elevation - is set by the positive_elevation_direction attribute in the - reference coordinate space. The elevation is measured from the - plane which is normal to the line passing between the surface - point and the planet's center of mass, and that intersects the - surface point. - - - - - - - - - - - - - - - - - - The solar_elongation element gives the angle - between the line of sight of observation and the direction of - the Sun. Note: For IRAS: The line of sight of observation is the - boresight of the telescope as measured by the satellite sun - sensor. - - - - - - - - - - - - - - - - - - Describes the direction of the sun in terms of - the image plane, defined as a clock angle (clockwise) around the - center of the image with 0 pointing to the top of the image, - with respect to the display orientation (usually defined by - disp:vertical_display_direction). - - - - - - - - - - - The solution_id attribute specifies the unique - identifier for the solution set to which the values in the group - belong. For certain kinds of information, such as pointing - correction (pointing models) and rover localization (coordinate - system definitions), the "true" value is unknown and only - estimates of the true value exist. Thus, more than one set of - estimates may exist simultaneously, each valid for its intended - purpose. Each of these sets is called a "solution" to the - unknown true value. The solution_id attribute is used to - identify which solution is being expressed by the containing - group. No specific naming convention is defined here, however it - is recommended that projects adopt one. The intent is to be able - to identify who created the solution, and why. Possible - components of the naming convention include user, institution, - purpose, request ID, version, program, date/time. - - - - - - - - - - - - - - - - - - The spacecraft_central_body_distance attribute - provides the scalar distance between the spacecraft and the - center of the central body (e.g., the center of Mars when - opperating in the Mars system). - - - - - - - - - - - - - - - - - - The spacecraft_geocentric_distance attribute - provides the scalar distance between the spacecraft and the - center of Earth. - - - - - - - - - - - - - - - - - - The spacecraft_heliocentric_distance attribute - provides the scalar distance between the spacecraft and the - center of the Sun. - - - - - - - - - - - - - - - - - - The - spacecraft_target_boresight_intercept_distance attribute - provides the scalar distance between the spacecraft and the - boresight vector intercept point on the surface of the target - specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The spacecraft_target_center_distance attribute - provides the scalar distance between the spacecraft and the - center of the target specified in the parent Geometry_Orbiter - class. - - - - - - - - - - - - - - - - - - The spacecraft_target_subspacecraft_distance - attribute provides the scalar distance between the spacecraft - and the subspacecraft point on the surface of the target - specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - The spice_kernel_file_name attribute provides - the file name of a SPICE kernel file used to process the data or - to produce geometric quantities given in the label. - - - - - - - - - - - - - - - - - - - The start_azimuth attribute specifies the - angular distance from a fixed reference position at which an - image or observation starts. Azimuth is measured in a spherical - coordinate system, in a plane normal to the principal axis. - Azimuth values increase according to the right hand rule - relative to the positive direction of the principal axis of the - spherical coordinate system. When applied to a site or surface - projection coordinate space, specifies the azimuth of the left - edge of the output map. Applies to Cylindrical and - Cylindrical-Perspective projections only. - - - - - - - - - - - - - - - - - - The start_emission_angle attribute provides the - value at the beginning of the observation - (geometry_start_time_utc) for the emission angle at the target - specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The start_incidence_angle attribute provides the - value at the beginning of the observation - (geometry_start_time_utc) for the incidence angle at the target - specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The start_latitude attribute identifies the - value of the Planetocentric latitude at the beginning of the - observation (geometry_start_time_utc). When either - start_latitude or stop_latitude is used, both must be used. In - addition the attribute lat_long_method must be used. - - - - - - - - - - - - - - - - - - - The start_longitude attribute identifies the - value of the Planetocentric longitude at the beginning of the - observation (geometry_start_time_utc). - - - - - - - - - - - - - - - - - - The start_phase_angle attribute provides the - value at the beginning of the observation - (geometry_start_time_utc) for the phase angle at the target - specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The start_solar_elongation attribute provides - the value at the beginning of the observation - (geometry_start_time_utc) for the solar elongation. - - - - - - - - - - - - - - - - - - - The start_spacecraft_central_body_distance - attribute provides the scalar distance at the beginning of the - observation (geometry_start_time_utc) between the spacecraft and - the center of the central body (e.g., the center of Mars when - opperating in the Mars system). - - - - - - - - - - - - - - - - - - The start_spacecraft_geocentric_distance - attribute provides the scalar distance at the beginning of the - observation (geometry_start_time_utc) between the spacecraft and - the center of Earth. - - - - - - - - - - - - - - - - - - The start_spacecraft_heliocentric_distance - attribute provides the scalar distance at the beginning of the - observation (geometry_start_time_utc) between the spacecraft and - the center of the Sun. - - - - - - - - - - - - - - - - - - The - start_spacecraft_target_boresight_intercept_distance attribute - provides the scalar distance at the beginning of the observation - (geometry_start_time_utc) between the spacecraft and the - boresight vector intercept point on the surface of the target - specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The start_spacecraft_target_center_distance - attribute provides the scalar distance at the beginning of the - observation (geometry_start_time_utc) between the spacecraft and - the center of the target specified in the parent - Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - The - start_spacecraft_target_subspacecraft_distance attribute - provides the scalar distance at the beginning of the observation - (geometry_start_time_utc) between the spacecraft and the - subspacecraft point on the surface of the target specified in - the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - The start_subsolar_azimuth attribute identifies - the value of the subsolar azimuth at the beginning of the - observation (geometry_start_time_utc). - - - - - - - - - - - - - - - - - - The start_subsolar_latitude attribute identifies - the value of the subsolar latitude at the beginning of the - observation (geometry_start_time_utc). - - - - - - - - - - - - - - - - - - The start_subsolar_longitude attribute - identifies the value of the subsolar longitude at the beginning - of the observation (geometry_start_time_utc). - - - - - - - - - - - - - - - - - - The start_subspacecraft_azimuth attribute - identifies the value of the subspacecraft azimuth at the - beginning of the observation (geometry_start_time_utc). - - - - - - - - - - - - - - - - - - - The start_subspacecraft_latitude attribute - identifies the value of the subspacecraft latitude at the - beginning of the observation (geometry_start_time_utc). - - - - - - - - - - - - - - - - - - - The start_subspacecraft_longitude attribute - identifies the value of the subspacecraft longitude at the - beginning of the observation (geometry_start_time_utc). - - - - - - - - - - - - - - - - - - - The start_target_geocentric_distance attribute - provides the scalar distance between the center of the target - and the center of the Earth at the beginning of the observation - (geometry_start_time_utc). - - - - - - - - - - - - - - - - - - The start_target_heliocentric_distance attribute - provides the scalar distance between the center of the target - and the center of the Sun at the beginning of the observation - (geometry_start_time_utc). - - - - - - - - - - - - - - - - - - The start_target_ssb_distance attribute provides - the scalar distance between the center of the target and the - Solar System Barycenter at the beginning of the observation - (geometry_start_time_utc). - - - - - - - - - - - - - - - - - - The stop_azimuth attribute specifies the angular - distance from a fixed reference position at which an image or - observation stops. Azimuth is measured in a spherical coordinate - system, in a plane normal to the principal axis. Azimuth values - increase according to the right hand rule relative to the - positive direction of the principal axis of the spherical - coordinate system. When applied to a site or surface projection - coordinate space, specifies the azimuth of the right edge of the - output map. Applies to Cylindrical and Cylindrical-Perspective - projections only. - - - - - - - - - - - - - - - - - - The stop_emission_angle attribute provides the - value at the end of the observation (geometry_stop_time_utc) for - the emission angle at the target specified in the parent - Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - The stop_incidence_angle attribute provides the - value at the end of the observation (geometry_stop_time_utc) for - the incidence angle at the target specified in the parent - Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - The stop_latitude attribute identifies the value - of the Planetocentric latitude at the end of the observation - (geometry_stop_time_utc). When either start_latitude or - stop_latitude is used, both must be used. In addition the - attribute lat_long_method must be used. - - - - - - - - - - - - - - - - - - The stop_longitude attribute identifies the - value of the Planetocentric longitude at the end of the - observation (geometry_stop_time_utc). - - - - - - - - - - - - - - - - - - The stop_phase_angle attribute provides the - value at the end of the observation (geometry_stop_time_utc) for - the phase angle at the target specified in the parent - Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - The stop_solar_elongation attribute provides the - value at the end of the observation (geometry_stop_time_utc) for - the solar elongation. - - - - - - - - - - - - - - - - - - The stop_spacecraft_central_body_distance - attribute provides the scalar distance at the end of the - observation (geometry_stop_time_utc) between the spacecraft and - the center of the central body (e.g., the center of Mars when - opperating in the Mars system). - - - - - - - - - - - - - - - - - - The stop_spacecraft_geocentric_distance - attribute provides the scalar distance at the end of the - observation (geometry_stop_time_utc) between the spacecraft and - the center of Earth. - - - - - - - - - - - - - - - - - - The stop_spacecraft_heliocentric_distance - attribute provides the scalar distance at the end of the - observation (geometry_stop_time_utc) between the spacecraft and - the center of the Sun. - - - - - - - - - - - - - - - - - - The - stop_spacecraft_target_boresight_intercept_distance attribute - provides the scalar distance at the end of the observation - (geometry_stop_time_utc) between the spacecraft and the - boresight vector intercept point on the surface of the target - specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - - The stop_spacecraft_target_center_distance - attribute provides the scalar distance at the end of the - observation (geometry_stop_time_utc) between the spacecraft and - the center of the target specified in the parent - Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - The - stop_spacecraft_target_subspacecraft_distance attribute provides - the scalar distance at the end of the observation - (geometry_stop_time_utc) between the spacecraft and the - subspacecraft point on the surface of the target specified in - the parent Geometry_Orbiter class. - - - - - - - - - - - - - - - - - - The stop_subsolar_azimuth attribute identifies - the value of the subsolar azimuth at the end of the observation - (geometry_stop_time_utc). - - - - - - - - - - - - - - - - - - The stop_subsolar_latitude attribute identifies - the value of the subsolar latitude at the end of the observation - (geometry_stop_time_utc). - - - - - - - - - - - - - - - - - - The stop_subsolar_longitude attribute identifies - the value of the subsolar longitude at the end of the - observation (geometry_stop_time_utc). - - - - - - - - - - - - - - - - - - The stop_subspacecraft_azimuth attribute - identifies the value of the subspacecraft azimuth at the end of - the observation (geometry_stop_time_utc). - - - - - - - - - - - - - - - - - - The stop_subspacecraft_latitude attribute - identifies the value of the subspacecraft latitude at the end of - the observation (geometry_stop_time_utc). - - - - - - - - - - - - - - - - - - The stop_subspacecraft_longitude attribute - identifies the value of the subspacecraft longitude at the end - of the observation (geometry_stop_time_utc). - - - - - - - - - - - - - - - - - - The stop_target_geocentric_distance attribute - provides the scalar distance between the center of the target - and the center of the Earth at the end of the observation - (geometry_stop_time_utc). - - - - - - - - - - - - - - - - - - The stop_target_heliocentric_distance attribute - provides the scalar distance between the center of the target - and the center of the Sun at the end of the observation - (geometry_stop_time_utc). - - - - - - - - - - - - - - - - - - The stop_target_ssb_distance attribute provides - the scalar distance between the center of the target and the - Solar System Barycenter at the end of the observation - (geometry_stop_time_utc). - - - - - - - - - - - - - - - - - - The subsolar_azimuth attribute provides the - value of the angle between the line from the center of an image - to the subsolar point on the target and a horizontal reference - line (in the image plane) extending from the image center to the - middle right edge of the image. The values of this angle - increase in a clockwise direction. - - - - - - - - - - - - - - - - - - The subsolar_latitude attribute gives the value - of the planetocentric latitude at the subsolar point on the - target. - - - - - - - - - - - - - - - - - - The subsolar_longitude attribute gives the value - of the planetocentric longitude at the subsolar point on the - target. - - - - - - - - - - - - - - - - - - The subspacecraft_azimuth attribute provides the - value of the angle between the line from the center of an image - to the subspacecraft point on the target and a horizontal - reference line (in the image plane) extending from the image - center to the middle right edge of the image. The values of this - angle increase in a clockwise direction. - - - - - - - - - - - - - - - - - - The subspacecraft_latitude attribute gives the - value of the planetocentric latitude at the subspacecraft point - on the target. - - - - - - - - - - - - - - - - - - The subspacecraft_longitude attribute gives the - value of the planetocentric longitude at the subspacecraft point - on the target. - - - - - - - - - - - - - - - - - - The sun_direction_clock_angle attribute - specifies the direction of the sun as an angle measured from a - line 'upward' from the center of the field of view, clockwise to - the direction toward sun, assuming the image is displayed as - defined by the Display_Direction class. - - - - - - - - - - - - - - - - - - The target_geocentric_distance attribute - provides the scalar distance between the center of the target - and the center of the Earth. - - - - - - - - - - - - - - - - - - The target_heliocentric_distance attribute - provides the scalar distance between the center of the target - and the center of the Sun. - - - - - - - - - - - Specifies the name of the target location for - items in this class. - - - - - - - - - - - - - - - - - The target_north_pole_clock_angle element - specifies the direction of the target body's rotation axis in an - image. It is measured from the 'upward' direction in the image, - clockwise to the direction of the northern rotational pole as - projected into the image plane, assuming the image is displayed - as defined by the Display_Direction class. The north pole of a - planet or any of its satellites in the solar system is the pole - of the rotation axis that is in the same celestial hemisphere - relative to the invariable plane of the solar system as Earth's - North pole. - - - - - - - - - - - - - - - - - - The target_positive_pole_clock_angle element - specifies the direction of the target body's rotation axis in an - image. It is measured from the 'upward' direction in the image, - clockwise to the direction of the positive rotational pole as - projected into the image plane, assuming the image is displayed - as defined by the Display_Direction class. The positive pole is - defined as the pole toward which the thumb points when the - fingers of the right hand are curled in the body's direction of - rotation. - - - - - - - - - - - - - - - - - - The target_ssb_distance attribute provides the - scalar distance between the center of the target and the Solar - System Barycenter. - - - - - - - - - - - - - - - - - - vertical_coordinate_pixel (line) is the vertical - coordinate of a specific pixel. - - - - - - - - - - - The vertical_display_axis attribute identifies, - by name, the axis of an Array (or Array subclass) that is - intended to be displayed in the vertical or "line" dimension on - a display device. The value of this attribute must match the - value of one, and only one, axis_name attribute in an Axis_Array - class of the associated Array. - - - - - - - - - - The vertical_display_direction attribute - specifies the direction along the screen of a display device - that data along the vertical axis of an Array is supposed to be - displayed. - - - - - - - - - - - - - - - - - The vertical_pixel_field_of_view provides the - angular measure of the vertical field of view of a single pixel, - and is sometimes referred to as the instantaneous field of view. - The pixel_field_of_view_method attribute will designate the - method used to determine this value. If the - pixel_field_of_view_method attribute is not specified, see the - camera documentation for more details. - - - - - - - - - - - - - - - - - - The vertical_pixel_footprint provides the size - of the vertical field of view of a single pixel projected onto - the target specified in the parent Geometry_Orbiter class. - - - - - - - - - - - - The x component of a Cartesian vector which has - no units. - - - - - - - - - - - - - - - - - The x component of a Cartesian acceleration - vector. - - - - - - - - - - - The x component of a Cartesian pixel vector; - typically used in cameral models. - - - - - - - - - - - - - - - - - The x component of a Cartesian position - vector. - - - - - - - - - - - The x component of a unit Cartesian - vector. - - - - - - - - - - - - - - - - - The x component of a Cartesian velocity - vector. - - - - - - - - - - - The y component of a Cartesian vector which has - no units. - - - - - - - - - - - - - - - - - The y component of a Cartesian acceleration - vector. - - - - - - - - - - - The y component of a Cartesian pixel vector; - typically used in cameral models. - - - - - - - - - - - - - - - - - The y component of a Cartesian position - vector. - - - - - - - - - - - The y component of a unit Cartesian - vector. - - - - - - - - - - - - - - - - - The y component of a Cartesian velocity - vector. - - - - - - - - - - - The z component of a Cartesian vector which has - no units. - - - - - - - - - - - - - - - - - The z component of a Cartesian acceleration - vector. - - - - - - - - - - - The z component of a Cartesian pixel vector; - typically used in cameral models. - - - - - - - - - - - - - - - - - The z component of a Cartesian position - vector. - - - - - - - - - - - The z component of a unit Cartesian - vector. - - - - - - - - - - - - - - - - - The z component of a Cartesian velocity - vector. - - - - - - - - diff --git a/model-lddtool/src/test/resources/github797/PDS4_GEOM_IngestLDD.xml b/model-lddtool/src/test/resources/github797/PDS4_GEOM_IngestLDD.xml index fa5de45a..eb58a734 100644 --- a/model-lddtool/src/test/resources/github797/PDS4_GEOM_IngestLDD.xml +++ b/model-lddtool/src/test/resources/github797/PDS4_GEOM_IngestLDD.xml @@ -1,19 +1,19 @@ - + + https://pds.nasa.gov/pds4/pds/v1/PDS4_PDS_1E00.xsd"> Geometry Dictionary Full - 1.9.7.0 + 1.9.1.0 Discipline Edward A. Guinness geo geom - + Build with: lddtool -pl ingest_file >log_file add J switch if a JSON file is needed. @@ -238,29 +238,9 @@ Version 1.9.1.0?? 2020-12-16 - Added enumerated value to coordinate_space_frame_type to support Mars2020. - Added class Device_Pose to Articulation_Device_Parameters to support Mars 2020. - Version 1.9.2.0 2021-03-30 - - Added enumerated value to coordinate_space_frame_type to support Mars2020. - Version 1.9.x.0 2021-04-22 - - Added three enumerated values (ROVER_FRAME, TOOL_FRAME, and Tool_Frame) - to coordinate_space_frame_type to support Mars2020. - Version 1.9.3.0 2021-07-13 - - Added yet another enumerated value (TURRET_FRAME and title case version) - to coordinate_space_frame_type to support Mars2020. - Version 1.9.3.0 2021-04-27 - - Added seven enumerated values in upper/lower case (PIXL_TOOL, WHEEL_RF, WHEEL_LF, WHEEL_RR, - WHEEL_LR, WHEEL_RM, WHEEL_LM) to coordinate_space_frame_type for Mars2020. - - fixed typo traget -> target - Version 1.9.5.0 2022-01-06 - - Added ORBITAL (upper and title case) to coordinate_space_frame_type for Mars2020. - Version 1.9.6.0 2022-05-20 - - Added AEGIS_* (1 to 5) to coordinate_space_frame_type for Mars2020. - Version 1.9.7.0 2023-10-12 - - Made the Display_Direction class optional and updated the definition. Added the - Quaternion_Plus_To_From class to the main Geometry_Orbiter class to support - migration of NEAR data. - - 2023-10-12 + + 2020-12-16 @@ -2686,11 +2666,6 @@ Frame describing the LVS camera during descent. - - DRILL_BIT_TIP - Frame centered on the tip of the drill. - - HELI_G_FRAME Helicopter frame defined attached to the ground at takeoff. @@ -2727,19 +2702,8 @@ - MCZ_CAL_PRIMARY - Primary Mastcam-Z calibration target. - - - - MEDA_RDS - Radiation and Dust Sensor for the MEDA instruments. - - - - ORBITAL - A surface frame for use with orbital images, where the origin is defined - relative to the equator and prime meridan or another orbital frame. + MCZ_CAL_PRIMARY + Primary Mastcam-Z calibration target. @@ -2751,17 +2715,7 @@ PIXL_SENSOR_FRAME Frame describing the movable sensor head of the PIXL instrument. - - - PIXL_TOOL - Frame for PIXL instrument. - - - - ROVER_FRAME - Frame that is attached to the rover and moves with the rover (in both position and orientation). Often synonymous with ROVER_NAV_FRAME. - - + ROVER_MECH_FRAME Frame generally similar to ROVER_NAV_FRAME but with different origin and possibly axis orientation that is more conducive to mechanical operations ("MECH" for "Mechanical"). The origin is typically (but not necessarily) tied to a specific bit of hardware. @@ -2786,89 +2740,9 @@ SITE_FRAME Instance of LOCAL_LEVEL_FRAME that is fixed to the ground. Used for local operations to reduce error propagation due to position uncertainty. - - - SUN - Frame centered on the sun. Generally used for pointing instruments at the sun, - rather than 3D position. - - - - TOOL_FRAME - Tool frame is used to indicate the frame associated with the currently selected (or activated) "tool", in contexts where the specific frame is unknown or does not matter. "Tools" are typically devices on an arm such as a drill, microscopic imager, contact spectrometer, etc. - - - TURRET_FRAME - Frame based on a turret mechanism. - - - - WHEEL_RF - Frame for right front wheel. - - - - WHEEL_LF - Frame for left front wheel. - - - - WHEEL_RR - Frame for right rear wheel. - - - - WHEEL_LR - Frame for left rear wheel. - + - - WHEEL_RM - Frame for right middle wheel. - - - - WHEEL_LM - Frame for left middle wheel. - - - - - AEGIS_1 - AEGIS target number 1. AEGIS is a component of rover software - that selects targets for further investigation based on user defined - parameters. - - - - AEGIS_2 - AEGIS target number 2. AEGIS is a component of rover software - that selects targets for further investigation based on user defined - parameters. - - - - AEGIS_3 - AEGIS target number 3. AEGIS is a component of rover software - that selects targets for further investigation based on user defined - parameters. - - - - AEGIS_4 - AEGIS target number 4. AEGIS is a component of rover software - that selects targets for further investigation based on user defined - parameters. - - - - AEGIS_5 - AEGIS target number 5. AEGIS is a component of rover software - that selects targets for further investigation based on user defined - parameters. - - APXS_Frame Frame defining the APXS instrument on a movable arm. @@ -3004,12 +2878,6 @@ TBD - - Orbital - A surface frame for use with orbital images, where the origin is defined - relative to the equator and prime meridan or another orbital frame. - - PIXL_Base_Frame Frame describing the base of the PIXL instrument. @@ -3019,11 +2887,6 @@ PIXL_Sensor_Frame Frame describing the movable sensor head of the PIXL instrument. - - - PIXL_Tool - Frame for PIXL instrument. - Rat_Frame @@ -3051,7 +2914,7 @@ - RSM_Head_Frame + RSM_Head_FramE Frame defining a Remote Sensing Mast. @@ -3059,49 +2922,7 @@ Site_Frame Instance of LOCAL_LEVEL_FRAME that is fixed to the ground. Used for local operations to reduce error propagation due to position uncertainty. - - - Tool_Frame - Tool frame is used to indicate the frame associated with the currently selected (or activated) "tool", in contexts where the specific frame is unknown or does not matter. "Tools" are typically devices on an arm such as a drill, microscopic imager, contact spectrometer, etc. - - - - Turret_Frame - Frame based on a turret mechanism. - - - - Wheel_RF - Frame for right front wheel. - - - - Wheel_LF - Frame for left front wheel. - - - - Wheel_RR - Frame for right rear wheel. - - - - Wheel_LR - Frame for left rear wheel. - - - - Wheel_RM - Frame for right middle wheel. - - - - Wheel_LM - Frame for left middle wheel. - - - @@ -4987,7 +4808,7 @@ target_name false Bob Deen - Specifies the name of the target location for items in this class. + Specifies the name of the traget location for items in this class. false ASCII_Short_String_Collapsed @@ -6012,13 +5833,7 @@ 1.0 Display_Direction Elizabeth Rye - Note: For all image objects, the expectation is that the - image orientation will be given using the disp:Display_Direction - class. In the unusual case where an image object does not have - an associated disp:Display_Direction class, then, and only then, - Display_Direction class defined here should be present. - - The Display_Direction class specifies which two + The Display_Direction class specifies which two of the dimensions of an Array object should be displayed and how they should be displayed in the vertical (line) and horizontal (sample) dimensions of a display device. This class is essentially @@ -6211,16 +6026,9 @@ Image_Display_Geometry Mitchell K. Gordon Image_Display_Geometry class provides an unambiguous description - of the orientation of the image contents. This class assumes an image - is displayed as described by a disp:Display_Direction class elsewhere - in the label. In the unusual case where an image object does not have - an associated disp:Display_Direction class, then, and only then, the - optionalgeom:Display_Direction class in this class should be present. - - Coupled with the information in the associated Display_Direction class, - any one of the Object_Orientation_* classes should allow unambiguous - orientation of the contents of the image. - + of the orientation of the image contents. Given an image, displayed as + described by the Display_Direction class, any one of the Object_Orientation_* + classes should allow unambiguous orientation of the contents of the image. The Local_Internal_Reference class is used to identify the object to which this instance of the Image_Display_Geometry class applies, and must be used if there is more than one instance of Image_Display_Geometry in the label. The @@ -6249,7 +6057,7 @@ Display_Direction component_of - 0 + 1 1 @@ -8811,7 +8619,7 @@ Geometry_Orbiter - 2.0 + 1.0 Geometry_Orbiter Mitchell K. Gordon The Geometry_Orbiter class is a container for geometric information @@ -8886,12 +8694,6 @@ 0 1 - - Quaternion_Plus_To_From - component_of - 0 - 1 - diff --git a/model-lddtool/src/test/resources/github797/PDS4_PDS_1N00.sch b/model-lddtool/src/test/resources/github797/PDS4_PDS_1N00.sch deleted file mode 100644 index 2272a5d4..00000000 --- a/model-lddtool/src/test/resources/github797/PDS4_PDS_1N00.sch +++ /dev/null @@ -1,2929 +0,0 @@ - - - - - - - Schematron using XPath 2.0 - - - - - - - - - - - - - - - - aaa:Root/product_class - The ROOT element must be one of the allowed types. - - - - - - aaa:Root/nilReason/nilReason - The 'nilReason' attribute must be used in conjunction with xsi:nil="true" - - - - - - pds:/Product_Observational/pds:Identification_Area/pds:logical_identifier/logical_identifier - pds:logical_identifier must have the form "urn:agencyId:authorityId:bundleID:collectionID:productID"/>). - - - - - - pds:/Product_Observational/pds:Identification_Area/pds:logical_identifier_external/logical_identifier - pds:logical_identifier must have the form "urn:agencyId:authorityId:productID..."/>). - - pds:/Product_Observational/pds:Identification_Area/pds:logical_identifier_external/logical_identifier - The parent-value of the attribute logical_identifier must start with 'urn:'/>. - - - - - - pds:ASCII_Date role="warning"/pds:ASCII_Date - pds:ASCII_Date is deprecated and should not be used. - - - - - - pds:ASCII_Date_Time role="warning"/pds:ASCII_Date_Time - pds:ASCII_Date_Time is deprecated and should not be used. - - - - - - pds:ASCII_Date_Time_UTC role="warning"/pds:ASCII_Date_Time_UTC - pds:ASCII_Date_Time_UTC is deprecated and should not be used. - - - - - - pds:Agency/pds:name/pds:name - The attribute pds:Agency/pds:name must be equal to one of the following values 'European Space Agency', 'Japan Aerospace Exploration Agency', 'National Aeronautics and Space Administration', 'Roscosmos State Corporation for Space Activities'. - - - - - - pds:Airborne role="warning"/pds:Airborne - pds:Airborne is deprecated and should not be used. - - - - - - pds:Airborne/pds:type/pds:type - The attribute pds:Airborne/pds:type must be equal to one of the following values 'Aircraft', 'Balloon', 'Suborbital Rocket'. - - - - - - pds:Array/Array - The value of pds:axes must match the number of pds:Axis_Array classes in the Array. - - - - - - pds:Array/pds:axis_index_order/pds:axis_index_order - The attribute pds:Array/pds:axis_index_order must be equal to the value 'Last Index Fastest'. - - - - - - pds:Array/pds:offset/pds:offset - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Array_1D/pds:axes/pds:axes - The attribute pds:Array_1D/pds:axes must be equal to the value '1'. - - - - - - pds:Array_1D/pds:axis_index_order/pds:axis_index_order - The attribute pds:Array_1D/pds:axis_index_order must be equal to the value 'Last Index Fastest'. - - - - - - pds:Array_2D/pds:axes/pds:axes - The attribute pds:Array_2D/pds:axes must be equal to the value '2'. - - - - - - pds:Array_2D/pds:axis_index_order/pds:axis_index_order - The attribute pds:Array_2D/pds:axis_index_order must be equal to the value 'Last Index Fastest'. - - - - - - pds:Array_2D_Image/axis_name - The names of the first and second axis of an Array_2D_Image must be set to Line and Sample. - - - - - - pds:Array_2D_Image/pds:Axis_Array[1]/axis_name - The name of the first axis of an Array_2D_Image must be set to either Line or Sample. - - pds:Array_2D_Image/pds:Axis_Array[1]/sequence_number - The sequence number of the first axis of an Array_2D_Image must be set to 1. - - - - - - pds:Array_2D_Image/pds:Axis_Array[2]/axis_name - The name of the second axis of an Array_2D_Image must be set to either Line or Sample. - - pds:Array_2D_Image/pds:Axis_Array[2]/sequence_number - The sequence number of the second axis of an Array_2D_Image must be set to 2. - - - - - - pds:Array_2D_Image/pds:axes/pds:axes - The attribute pds:Array_2D_Image/pds:axes must be equal to the value '2'. - - - - - - pds:Array_2D_Image/pds:axis_index_order/pds:axis_index_order - The attribute pds:Array_2D_Image/pds:axis_index_order must be equal to the value 'Last Index Fastest'. - - - - - - pds:Array_2D_Map/pds:axes/pds:axes - The attribute pds:Array_2D_Map/pds:axes must be equal to the value '2'. - - - - - - pds:Array_2D_Map/pds:axis_index_order/pds:axis_index_order - The attribute pds:Array_2D_Map/pds:axis_index_order must be equal to the value 'Last Index Fastest'. - - - - - - pds:Array_2D_Spectrum/pds:axes/pds:axes - The attribute pds:Array_2D_Spectrum/pds:axes must be equal to the value '2'. - - - - - - pds:Array_2D_Spectrum/pds:axis_index_order/pds:axis_index_order - The attribute pds:Array_2D_Spectrum/pds:axis_index_order must be equal to the value 'Last Index Fastest'. - - - - - - pds:Array_3D/pds:axes/pds:axes - The attribute pds:Array_3D/pds:axes must be equal to the value '3'. - - - - - - pds:Array_3D/pds:axis_index_order/pds:axis_index_order - The attribute pds:Array_3D/pds:axis_index_order must be equal to the value 'Last Index Fastest'. - - - - - - pds:Array_3D_Image/pds:axes/pds:axes - The attribute pds:Array_3D_Image/pds:axes must be equal to the value '3'. - - - - - - pds:Array_3D_Image/pds:axis_index_order/pds:axis_index_order - The attribute pds:Array_3D_Image/pds:axis_index_order must be equal to the value 'Last Index Fastest'. - - - - - - pds:Array_3D_Movie/pds:axes/pds:axes - The attribute pds:Array_3D_Movie/pds:axes must be equal to the value '3'. - - - - - - pds:Array_3D_Movie/pds:axis_index_order/pds:axis_index_order - The attribute pds:Array_3D_Movie/pds:axis_index_order must be equal to the value 'Last Index Fastest'. - - - - - - pds:Array_3D_Spectrum/pds:axes/pds:axes - The attribute pds:Array_3D_Spectrum/pds:axes must be equal to the value '3'. - - - - - - pds:Array_3D_Spectrum/pds:axis_index_order/pds:axis_index_order - The attribute pds:Array_3D_Spectrum/pds:axis_index_order must be equal to the value 'Last Index Fastest'. - - - - - - pds:Axis_Array/pds:unit role="warning"/pds:Axis_Array.unit - pds:Axis_Array/pds:unit is deprecated and should not be used. - - - - - - pds:Band_Bin role="warning"/pds:Band_Bin - pds:Band_Bin is deprecated and should not be used. - - - - - - pds:Band_Bin/pds:band_width/pds:band_width - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - pds:Band_Bin/pds:center_wavelength/pds:center_wavelength - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - pds:Band_Bin_Set role="warning"/pds:Band_Bin_Set - pds:Band_Bin_Set is deprecated and should not be used. - - - - - - pds:Bundle/pds:bundle_type/pds:bundle_type - The attribute pds:Bundle/pds:bundle_type must be equal to one of the following values 'Archive', 'External', 'Supplemental'. - - - - - - pds:Bundle_Member_Entry role="warning"/pds:Bundle_Member_Entry.reference_type - The value bundle_has_member_collection for attribute Bundle_Member_Entry.reference_type is deprecated and should not be used. - - - - - - - - - - - - - - - - pds:Bundle_Member_Entry/lid_reference - The number of colons found in lid_reference: () is inconsistent with the number expected: . - - pds:Bundle_Member_Entry/lidvid_reference - The number of colons found in lidvid_reference: () is inconsistent with the number expected: . - - pds:Bundle_Member_Entry/lid_reference - The value of the attribute lid_reference must start with either: or or or or or - - pds:Bundle_Member_Entry/lidvid_reference - The value of the attribute lidvid_reference must start with either: or or or or or - - pds:Bundle_Member_Entry/lid_reference - The value of the attribute lid_reference must not include a value that contains '::' followed by version id - - pds:Bundle_Member_Entry/lidvid_reference - The value of the attribute lidvid_reference must include a value that contains '::' followed by version id - - - - - - pds:Bundle_Member_Entry/pds:member_status/pds:member_status - The attribute pds:Bundle_Member_Entry/pds:member_status must be equal to one of the following values 'Primary', 'Secondary'. - - - - - - pds:Bundle_Member_Entry/pds:reference_type/pds:reference_type - The attribute pds:Bundle_Member_Entry/pds:reference_type must be equal to one of the following values 'bundle_has_browse_collection', 'bundle_has_calibration_collection', 'bundle_has_context_collection', 'bundle_has_data_collection', 'bundle_has_document_collection', 'bundle_has_geometry_collection', 'bundle_has_member_collection', 'bundle_has_miscellaneous_collection', 'bundle_has_schema_collection', 'bundle_has_spice_kernel_collection'. - - - - - - pds:Checksum_Manifest role="warning"/pds:Checksum_Manifest.record_delimiter - The value carriage-return line-feed for attribute Checksum_Manifest.record_delimiter is deprecated and should not be used. - - - - - - pds:Checksum_Manifest/pds:parsing_standard_id/pds:parsing_standard_id - The attribute pds:Checksum_Manifest/pds:parsing_standard_id must be equal to the value 'MD5Deep 4.n'. - - - - - - pds:Checksum_Manifest/pds:record_delimiter/pds:record_delimiter - The attribute pds:Checksum_Manifest/pds:record_delimiter must be equal to one of the following values 'Carriage-Return Line-Feed', 'Line-Feed', 'carriage-return line-feed'. - - - - - - pds:Citation_Information/pds:author_list role="warning"/pds:Citation_Information.author_list - pds:Citation_Information/pds:author_list is deprecated and should not be used. - - - - - - pds:Citation_Information/pds:description/description - The description in Citation_Information must be greater than 0 and less than 5000 bytes (not counting spaces). - - - - - - pds:Citation_Information/pds:editor_list role="warning"/pds:Citation_Information.editor_list - pds:Citation_Information/pds:editor_list is deprecated and should not be used. - - - - - - pds:Collection/pds:collection_type/pds:collection_type - The attribute pds:Collection/pds:collection_type must be equal to one of the following values 'Browse', 'Calibration', 'Context', 'Data', 'Document', 'External', 'Geometry', 'Miscellaneous', 'SPICE Kernel', 'XML Schema'. - - - - - - pds:DD_Association role="warning"/pds:DD_Association.reference_type - The value extension_of for attribute DD_Association.reference_type is deprecated and should not be used. - - pds:DD_Association role="warning"/pds:DD_Association.reference_type - The value restriction_of for attribute DD_Association.reference_type is deprecated and should not be used. - - pds:DD_Association role="warning"/pds:DD_Association.reference_type - The value subclass_of for attribute DD_Association.reference_type is deprecated and should not be used. - - - - - - pds:DD_Association/pds:local_identifier role="warning"/pds:DD_Association.local_identifier - pds:DD_Association/pds:local_identifier is deprecated and should not be used. - - - - - - pds:DD_Association/pds:reference_type/pds:reference_type - The attribute pds:DD_Association/pds:reference_type must be equal to one of the following values 'attribute_of', 'component_of', 'extension_of', 'parent_of', 'restriction_of', 'subclass_of'. - - - - - - pds:DD_Association_External role="warning"/pds:DD_Association_External - pds:DD_Association_External is deprecated and should not be used. - - - - - - pds:DD_Association_External/pds:reference_type/pds:reference_type - The attribute pds:DD_Association_External/pds:reference_type must be equal to one of the following values 'attribute_of', 'component_of', 'extension_of', 'parent_of', 'restriction_of', 'subclass_of'. - - - - - - pds:DD_Attribute/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'attribute_to_image', 'attribute_to_document'. - - - - - - pds:DD_Attribute_Full/pds:nillable_flag - The attribute pds:nillable_flag must be equal to one of the following values 'true', 'false'. - - - - - - pds:DD_Attribute_Full/pds:attribute_concept/pds:attribute_concept - The attribute pds:DD_Attribute_Full/pds:attribute_concept must be equal to one of the following values 'Address', 'Angle', 'Attribute', 'Bit', 'Checksum', 'Collection', 'Constant', 'Cosine', 'Count', 'DOI', 'Delimiter', 'Description', 'Deviation', 'Direction', 'Distance', 'Duration', 'Factor', 'Flag', 'Format', 'Group', 'Home', 'ID', 'Latitude', 'Length', 'List', 'Location', 'Logical', 'Longitude', 'Mask', 'Maximum', 'Mean', 'Median', 'Minimum', 'Name', 'Note', 'Number', 'Offset', 'Order', 'Parallel', 'Password', 'Path', 'Pattern', 'Pixel', 'Quaternion', 'Radius', 'Ratio', 'Reference', 'Resolution', 'Role', 'Rotation', 'Scale', 'Sequence', 'Set', 'Size', 'Status', 'Summary', 'Syntax', 'Temperature', 'Text', 'Title', 'Type', 'Unit', 'Unknown', 'Value', 'Vector'. - - - - - - pds:DD_Attribute_Full/pds:registration_authority_id/pds:registration_authority_id - The attribute pds:DD_Attribute_Full/pds:registration_authority_id must be equal to the value '0001_NASA_PDS_1'. - - - - - - pds:DD_Attribute_Full/pds:steward_id/pds:steward_id - The attribute pds:DD_Attribute_Full/pds:steward_id must be equal to one of the following values 'atm', 'geo', 'img', 'naif', 'ops', 'pds', 'ppi', 'rings', 'rs', 'sbn'. - - - - - - pds:DD_Attribute_Full/pds:type/pds:type - The attribute pds:DD_Attribute_Full/pds:type must be equal to one of the following values 'PDS3', 'PDS4'. - - - - - - pds:DD_Class/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'class_to_image', 'class_to_document'. - - - - - - pds:DD_Class_Full/pds:abstract_flag - The attribute pds:abstract_flag must be equal to one of the following values 'true', 'false'. - - pds:DD_Class_Full/pds:element_flag - The attribute pds:element_flag must be equal to one of the following values 'true', 'false'. - - - - - - pds:DD_Class_Full/pds:steward_id/pds:steward_id - The attribute pds:DD_Class_Full/pds:steward_id must be equal to one of the following values 'atm', 'geo', 'img', 'naif', 'ops', 'pds', 'ppi', 'rings', 'rs', 'sbn'. - - - - - - pds:DD_Class_Full/pds:type/pds:type - The attribute pds:DD_Class_Full/pds:type must be equal to one of the following values 'PDS3', 'PDS4'. - - - - - - pds:DD_Rule_Statement/pds:rule_type/pds:rule_type - The attribute pds:DD_Rule_Statement/pds:rule_type must be equal to one of the following values 'Assert', 'Assert Every', 'Assert If', 'Report'. - - - - - - - - - pds:DD_Value_Domain/unit_of_measure_type - Must specify attribute 'unit_of_measure_type' if attribute 'specified_unit_id' has been specified. - - - - - - pds:DD_Value_Domain/pds:unit_of_measure_type/unit_of_measure_type - The value 'W*m**-2*sr**-1' in 'Units_of_Radiance' in the attribute pds:unit_of_measure_type is deprecated and must not be used'. - - pds:DD_Value_Domain/pds:unit_of_measure_type/pds:unit_of_measure_type - The attribute pds:DD_Value_Domain/pds:unit_of_measure_type must be equal to one of the following values 'Units_of_Acceleration', 'Units_of_Amount_Of_Substance', 'Units_of_Angle', 'Units_of_Angular_Velocity', 'Units_of_Area', 'Units_of_Current', 'Units_of_Energy', 'Units_of_Force', 'Units_of_Frame_Rate', 'Units_of_Frequency', 'Units_of_Gmass', 'Units_of_Length', 'Units_of_Map_Scale', 'Units_of_Mass', 'Units_of_Mass_Density', 'Units_of_Misc', 'Units_of_None', 'Units_of_Optical_Path_Length', 'Units_of_Pixel_Resolution_Angular', 'Units_of_Pixel_Resolution_Linear', 'Units_of_Pixel_Resolution_Map', 'Units_of_Pixel_Scale_Angular', 'Units_of_Pixel_Scale_Linear', 'Units_of_Pixel_Scale_Map', 'Units_of_Power', 'Units_of_Pressure', 'Units_of_Radiance', 'Units_of_Rates', 'Units_of_Solid_Angle', 'Units_of_Spectral_Irradiance', 'Units_of_Spectral_Radiance', 'Units_of_Storage', 'Units_of_Temperature', 'Units_of_Time', 'Units_of_Velocity', 'Units_of_Voltage', 'Units_of_Volume', 'Units_of_Wavenumber'. - - - - - - pds:DD_Value_Domain/pds:value_data_type/pds:value_data_type - The attribute pds:DD_Value_Domain/pds:value_data_type must be equal to one of the following values 'ASCII_AnyURI', 'ASCII_BibCode', 'ASCII_Boolean', 'ASCII_DOI', 'ASCII_Date_DOY', 'ASCII_Date_Time_DOY', 'ASCII_Date_Time_DOY_UTC', 'ASCII_Date_Time_YMD', 'ASCII_Date_Time_YMD_UTC', 'ASCII_Date_YMD', 'ASCII_Directory_Path_Name', 'ASCII_File_Name', 'ASCII_File_Specification_Name', 'ASCII_Integer', 'ASCII_LID', 'ASCII_LIDVID', 'ASCII_LIDVID_LID', 'ASCII_MD5_Checksum', 'ASCII_NonNegative_Integer', 'ASCII_Numeric_Base16', 'ASCII_Numeric_Base2', 'ASCII_Numeric_Base8', 'ASCII_Real', 'ASCII_Short_String_Collapsed', 'ASCII_Short_String_Preserved', 'ASCII_Text_Collapsed', 'ASCII_Text_Preserved', 'ASCII_Time', 'ASCII_VID', 'UTF8_Short_String_Collapsed', 'UTF8_Short_String_Preserved', 'UTF8_Text_Collapsed', 'UTF8_Text_Preserved', 'Vector_Cartesian_3', 'Vector_Cartesian_3_Acceleration', 'Vector_Cartesian_3_Pointing', 'Vector_Cartesian_3_Position', 'Vector_Cartesian_3_Velocity'. - - - - - - pds:DD_Value_Domain[pds:unit_of_measure_type = ('Units_of_Radiance')]/unit_of_measure_type - The value '' in 'Units_of_Radiance' in the attribute pds:unit_of_measure_type is deprecated and must not be used'. - - - - - - pds:DD_Value_Domain[pds:unit_of_measure_type = ('Units_of_Spectral_Irradiance')]/unit_of_measure_type - The value '' in 'Units_of_Spectral_Irradiance' in the attribute pds:unit_of_measure_type is deprecated and must not be used'. - - - - - - pds:DD_Value_Domain[pds:unit_of_measure_type = ('Units_of_Spectral_Radiance')]/unit_of_measure_type - The value '' in 'Units_of_Spectral_Radiance' in the attribute pds:unit_of_measure_type is deprecated and must not be used'. - - - - - - pds:DD_Value_Domain[pds:unit_of_measure_type = ('Units_of_Wavenumber')]/unit_of_measure_type - The value '' in 'Units_of_Wavenumber' in the attribute pds:unit_of_measure_type is deprecated and must not be used'. - - - - - - pds:DD_Value_Domain_Full/pds:enumeration_flag - The attribute pds:enumeration_flag must be equal to one of the following values 'true', 'false'. - - - - - - pds:DD_Value_Domain_Full/pds:conceptual_domain/pds:conceptual_domain - The attribute pds:DD_Value_Domain_Full/pds:conceptual_domain must be equal to one of the following values 'Boolean', 'Integer', 'Name', 'Numeric', 'Real', 'Short_String', 'Text', 'Time', 'Type', 'Unknown'. - - - - - - pds:DD_Value_Domain_Full/pds:unit_of_measure_type/pds:unit_of_measure_type - The attribute pds:DD_Value_Domain_Full/pds:unit_of_measure_type must be equal to one of the following values 'Units_of_Acceleration', 'Units_of_Amount_Of_Substance', 'Units_of_Angle', 'Units_of_Angular_Velocity', 'Units_of_Area', 'Units_of_Current', 'Units_of_Energy', 'Units_of_Force', 'Units_of_Frame_Rate', 'Units_of_Frequency', 'Units_of_Gmass', 'Units_of_Length', 'Units_of_Map_Scale', 'Units_of_Mass', 'Units_of_Mass_Density', 'Units_of_Misc', 'Units_of_None', 'Units_of_Optical_Path_Length', 'Units_of_Pixel_Resolution_Angular', 'Units_of_Pixel_Resolution_Linear', 'Units_of_Pixel_Resolution_Map', 'Units_of_Pixel_Scale_Angular', 'Units_of_Pixel_Scale_Linear', 'Units_of_Pixel_Scale_Map', 'Units_of_Power', 'Units_of_Pressure', 'Units_of_Radiance', 'Units_of_Rates', 'Units_of_Solid_Angle', 'Units_of_Spectral_Irradiance', 'Units_of_Spectral_Radiance', 'Units_of_Storage', 'Units_of_Temperature', 'Units_of_Time', 'Units_of_Velocity', 'Units_of_Voltage', 'Units_of_Volume', 'Units_of_Wavenumber'. - - - - - - pds:DD_Value_Domain_Full/pds:value_data_type/pds:value_data_type - The attribute pds:DD_Value_Domain_Full/pds:value_data_type must be equal to one of the following values 'ASCII_AnyURI', 'ASCII_BibCode', 'ASCII_Boolean', 'ASCII_DOI', 'ASCII_Date_DOY', 'ASCII_Date_Time_DOY', 'ASCII_Date_Time_DOY_UTC', 'ASCII_Date_Time_YMD', 'ASCII_Date_Time_YMD_UTC', 'ASCII_Date_YMD', 'ASCII_Directory_Path_Name', 'ASCII_File_Name', 'ASCII_File_Specification_Name', 'ASCII_Integer', 'ASCII_LID', 'ASCII_LIDVID', 'ASCII_LIDVID_LID', 'ASCII_MD5_Checksum', 'ASCII_NonNegative_Integer', 'ASCII_Numeric_Base16', 'ASCII_Numeric_Base2', 'ASCII_Numeric_Base8', 'ASCII_Real', 'ASCII_Short_String_Collapsed', 'ASCII_Short_String_Preserved', 'ASCII_Text_Collapsed', 'ASCII_Text_Preserved', 'ASCII_Time', 'ASCII_VID', 'UTF8_Short_String_Collapsed', 'UTF8_Short_String_Preserved', 'UTF8_Text_Collapsed', 'UTF8_Text_Preserved'. - - - - - - pds:Data_Set_PDS3/pds:archive_status/pds:archive_status - The attribute pds:Data_Set_PDS3/pds:archive_status must be equal to one of the following values 'ARCHIVED', 'ARCHIVED_ACCUMULATING', 'IN_LIEN_RESOLUTION', 'IN_LIEN_RESOLUTION_ACCUMULATING', 'IN_PEER_REVIEW', 'IN_PEER_REVIEW_ACCUMULATING', 'IN_QUEUE', 'IN_QUEUE_ACCUMULATING', 'LOCALLY_ARCHIVED', 'LOCALLY_ARCHIVED_ACCUMULATING', 'PRE_PEER_REVIEW', 'PRE_PEER_REVIEW_ACCUMULATING', 'SAFED', 'SUPERSEDED'. - - - - - - pds:Data_Set_PDS3/pds:start_date_time role="warning"/pds:Data_Set_PDS3.start_date_time - pds:Data_Set_PDS3/pds:start_date_time is deprecated and should not be used. - - - - - - pds:Data_Set_PDS3/pds:stop_date_time role="warning"/pds:Data_Set_PDS3.stop_date_time - pds:Data_Set_PDS3/pds:stop_date_time is deprecated and should not be used. - - - - - - pds:Display_2D_Image role="warning"/pds:Display_2D_Image - pds:Display_2D_Image is deprecated and should not be used. - - - - - - pds:Display_2D_Image/pds:line_display_direction/pds:line_display_direction - The attribute pds:Display_2D_Image/pds:line_display_direction must be equal to one of the following values 'Down', 'Up'. - - - - - - pds:Display_2D_Image/pds:sample_display_direction/pds:sample_display_direction - The attribute pds:Display_2D_Image/pds:sample_display_direction must be equal to the value 'Right'. - - - - - - pds:Document/pds:author_list role="warning"/pds:Document.author_list - pds:Document/pds:author_list is deprecated and should not be used. - - - - - - pds:Document/pds:editor_list role="warning"/pds:Document.editor_list - pds:Document/pds:editor_list is deprecated and should not be used. - - - - - - pds:Document_Edition/pds:language/pds:language - The attribute pds:Document_Edition/pds:language must be equal to the value 'English'. - - - - - - pds:Document_File role="warning"/pds:Document_File.document_standard_id - The value HTML 2.0 for attribute Document_File.document_standard_id is deprecated and should not be used. - - pds:Document_File role="warning"/pds:Document_File.document_standard_id - The value HTML 3.2 for attribute Document_File.document_standard_id is deprecated and should not be used. - - pds:Document_File role="warning"/pds:Document_File.document_standard_id - The value HTML 4.0 for attribute Document_File.document_standard_id is deprecated and should not be used. - - pds:Document_File role="warning"/pds:Document_File.document_standard_id - The value HTML 4.01 for attribute Document_File.document_standard_id is deprecated and should not be used. - - - - - - pds:Document_File/pds:document_standard_id/pds:document_standard_id - The attribute pds:Document_File/pds:document_standard_id must be equal to one of the following values '7-Bit ASCII Text', 'Encapsulated Postscript', 'GIF', 'HTML', 'HTML 2.0', 'HTML 3.2', 'HTML 4.0', 'HTML 4.01', 'JPEG', 'LaTEX', 'MPEG-4', 'Microsoft Excel', 'Microsoft Word', 'PDF', 'PDF/A', 'PNG', 'Postscript', 'Rich Text', 'TIFF', 'UTF-8 Text'. - - - - - - pds:Document_Format role="warning"/pds:Document_Format.format_type - The value multiple file for attribute Document_Format.format_type is deprecated and should not be used. - - pds:Document_Format role="warning"/pds:Document_Format.format_type - The value single file for attribute Document_Format.format_type is deprecated and should not be used. - - - - - - pds:Element_Array/pds:data_type/pds:data_type - The attribute pds:Element_Array/pds:data_type must be equal to one of the following values 'ComplexLSB16', 'ComplexLSB8', 'ComplexMSB16', 'ComplexMSB8', 'IEEE754LSBDouble', 'IEEE754LSBSingle', 'IEEE754MSBDouble', 'IEEE754MSBSingle', 'SignedBitString', 'SignedByte', 'SignedLSB2', 'SignedLSB4', 'SignedLSB8', 'SignedMSB2', 'SignedMSB4', 'SignedMSB8', 'UnsignedBitString', 'UnsignedByte', 'UnsignedLSB2', 'UnsignedLSB4', 'UnsignedLSB8', 'UnsignedMSB2', 'UnsignedMSB4', 'UnsignedMSB8'. - - - - - - pds:Encoded_Audio/pds:encoding_standard_id/pds:encoding_standard_id - The attribute pds:Encoded_Audio/pds:encoding_standard_id must be equal to one of the following values '', 'M4A/AAC', 'WAV'. - - - - - - pds:Encoded_Binary role="warning"/pds:Encoded_Binary.encoding_standard_id - The value CCSDS Space Communications Protocols for attribute Encoded_Binary.encoding_standard_id is deprecated and should not be used. - - - - - - pds:Encoded_Binary/pds:encoding_standard_id/pds:encoding_standard_id - The attribute pds:Encoded_Binary/pds:encoding_standard_id must be equal to the value 'CCSDS Space Communications Protocols'. - - - - - - pds:Encoded_Byte_Stream/pds:object_length/pds:object_length - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Encoded_Byte_Stream/pds:offset/pds:offset - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Encoded_Header/pds:encoding_standard_id/pds:encoding_standard_id - The attribute pds:Encoded_Header/pds:encoding_standard_id must be equal to the value 'TIFF'. - - - - - - pds:Encoded_Image/pds:encoding_standard_id/pds:encoding_standard_id - The attribute pds:Encoded_Image/pds:encoding_standard_id must be equal to one of the following values 'GIF', 'J2C', 'JPEG', 'PDF', 'PDF/A', 'PNG', 'TIFF'. - - - - - - pds:Encoded_Native/pds:encoding_standard_id/pds:encoding_standard_id - The attribute pds:Encoded_Native/pds:encoding_standard_id must be equal to the value 'SEED 2.4'. - - - - - - pds:Encoded_Video/pds:encoding_standard_id/pds:encoding_standard_id - The attribute pds:Encoded_Video/pds:encoding_standard_id must be equal to one of the following values 'MP4/H.264', 'MP4/H.264/AAC'. - - - - - - pds:Facility/pds:type/pds:type - The attribute pds:Facility/pds:type must be equal to one of the following values 'Laboratory', 'Observatory'. - - - - - - - - - - - - - - - - - pds:Field_Binary/field_length - When Field_Binary has a child Packed_Data_Fields, "pds:Field_Binary/pds:data_type" must have a value of 'UnsignedBitString' - - pds:Field_Binary/field_length - The attribute pds:data_type ('') is invalid with respect to the value of pds:field_length ('') - - pds:Field_Binary/field_length - The attribute pds:data_type ('') is invalid with respect to the value of pds:field_length ('') - - pds:Field_Binary/field_length - The attribute pds:data_type ('') is invalid with respect to the value of pds:field_length ('') - - pds:Field_Binary/field_length - The attribute pds:data_type ('') is invalid with respect to the value of pds:field_length ('') - - pds:Field_Binary/field_length - The attribute pds:data_type ('') is invalid with respect to the value of pds:field_length ('') - - - - - - pds:Field_Binary/pds:data_type/pds:data_type - The attribute pds:Field_Binary/pds:data_type must be equal to one of the following values 'ASCII_AnyURI', 'ASCII_BibCode', 'ASCII_Boolean', 'ASCII_DOI', 'ASCII_Date_DOY', 'ASCII_Date_Time_DOY', 'ASCII_Date_Time_DOY_UTC', 'ASCII_Date_Time_YMD', 'ASCII_Date_Time_YMD_UTC', 'ASCII_Date_YMD', 'ASCII_Directory_Path_Name', 'ASCII_File_Name', 'ASCII_File_Specification_Name', 'ASCII_Integer', 'ASCII_LID', 'ASCII_LIDVID', 'ASCII_LIDVID_LID', 'ASCII_MD5_Checksum', 'ASCII_NonNegative_Integer', 'ASCII_Numeric_Base16', 'ASCII_Numeric_Base2', 'ASCII_Numeric_Base8', 'ASCII_Real', 'ASCII_String', 'ASCII_Time', 'ASCII_VID', 'ComplexLSB16', 'ComplexLSB8', 'ComplexMSB16', 'ComplexMSB8', 'IEEE754LSBDouble', 'IEEE754LSBSingle', 'IEEE754MSBDouble', 'IEEE754MSBSingle', 'SignedBitString', 'SignedByte', 'SignedLSB2', 'SignedLSB4', 'SignedLSB8', 'SignedMSB2', 'SignedMSB4', 'SignedMSB8', 'UTF8_String', 'UnsignedBitString', 'UnsignedByte', 'UnsignedLSB2', 'UnsignedLSB4', 'UnsignedLSB8', 'UnsignedMSB2', 'UnsignedMSB4', 'UnsignedMSB8'. - - - - - - pds:Field_Binary/pds:field_length/pds:field_length - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Field_Binary/pds:field_location/pds:field_location - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - - - - - pds:Field_Binary/pds:unit/unit - The value '' in the attribute 'unit' is deprecated and must not be used'. - - - - - - pds:Field_Bit/pds:data_type/pds:data_type - The attribute pds:Field_Bit/pds:data_type must be equal to one of the following values 'SignedBitString', 'UnsignedBitString'. - - - - - - pds:Field_Bit/pds:start_bit role="warning"/pds:Field_Bit.start_bit - pds:Field_Bit/pds:start_bit is deprecated and should not be used. - - - - - - pds:Field_Bit/pds:stop_bit role="warning"/pds:Field_Bit.stop_bit - pds:Field_Bit/pds:stop_bit is deprecated and should not be used. - - - - - - pds:Field_Character/pds:data_type/pds:data_type - The attribute pds:Field_Character/pds:data_type must be equal to one of the following values 'ASCII_AnyURI', 'ASCII_BibCode', 'ASCII_Boolean', 'ASCII_DOI', 'ASCII_Date_DOY', 'ASCII_Date_Time_DOY', 'ASCII_Date_Time_DOY_UTC', 'ASCII_Date_Time_YMD', 'ASCII_Date_Time_YMD_UTC', 'ASCII_Date_YMD', 'ASCII_Directory_Path_Name', 'ASCII_File_Name', 'ASCII_File_Specification_Name', 'ASCII_Integer', 'ASCII_LID', 'ASCII_LIDVID', 'ASCII_LIDVID_LID', 'ASCII_MD5_Checksum', 'ASCII_NonNegative_Integer', 'ASCII_Numeric_Base16', 'ASCII_Numeric_Base2', 'ASCII_Numeric_Base8', 'ASCII_Real', 'ASCII_String', 'ASCII_Time', 'ASCII_VID', 'UTF8_String'. - - - - - - pds:Field_Character/pds:field_length/pds:field_length - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Field_Character/pds:field_location/pds:field_location - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Field_Character/pds:validation_format/validation_format - If a validation_format is present, its value must be equal to the value in field_format - - - - - - pds:Field_Delimited/pds:data_type/pds:data_type - The attribute pds:Field_Delimited/pds:data_type must be equal to one of the following values 'ASCII_AnyURI', 'ASCII_BibCode', 'ASCII_Boolean', 'ASCII_DOI', 'ASCII_Date_DOY', 'ASCII_Date_Time_DOY', 'ASCII_Date_Time_DOY_UTC', 'ASCII_Date_Time_YMD', 'ASCII_Date_Time_YMD_UTC', 'ASCII_Date_YMD', 'ASCII_Directory_Path_Name', 'ASCII_File_Name', 'ASCII_File_Specification_Name', 'ASCII_Integer', 'ASCII_LID', 'ASCII_LIDVID', 'ASCII_LIDVID_LID', 'ASCII_MD5_Checksum', 'ASCII_NonNegative_Integer', 'ASCII_Numeric_Base16', 'ASCII_Numeric_Base2', 'ASCII_Numeric_Base8', 'ASCII_Real', 'ASCII_String', 'ASCII_Time', 'ASCII_VID', 'UTF8_String'. - - - - - - pds:Field_Delimited/pds:maximum_field_length/pds:maximum_field_length - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:File/pds:file_size/pds:file_size - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:File_Area_Update role="warning"/pds:File_Area_Update - pds:File_Area_Update is deprecated and should not be used. - - - - - - pds:Funding_Acknowledgement/pds:funding_source/pds:funding_source - The attribute pds:Funding_Acknowledgement/pds:funding_source must be equal to one of the following values 'NASA', 'NSF', 'RAS'. - - - - - - - - pds:Group_Field_Binary/fields - The values for 'fields' and 'groups' must not both be '0'. The number of fields found: (). The number of groups found: (). - - pds:Group_Field_Binary/fields - The number of Field_Binary elements () does not match the number found in the 'fields' attribute (). - - pds:Group_Field_Binary/fields - The number of Group_Field_Binary elements () does not match the number found in the 'groups' attribute (). - - - - - - pds:Group_Field_Binary/pds:group_length/pds:group_length - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Group_Field_Binary/pds:group_location/pds:group_location - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - - - pds:Group_Field_Character/fields - The values for 'fields' and 'groups' must not both be '0'. The number of fields found: (). The number of groups found: (). - - pds:Group_Field_Character/fields - The number of Field_Character elements () does not match the number found in the 'fields' attribute (). - - pds:Group_Field_Character/fields - The number of Group_Field_Character elements () does not match the number found in the 'groups' attribute (). - - - - - - pds:Group_Field_Character/pds:group_length/pds:group_length - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Group_Field_Character/pds:group_location/pds:group_location - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - - - pds:Group_Field_Delimited/fields - The values for 'fields' and 'groups' must not both be '0'. The number of fields found: (). The number of groups found: (). - - pds:Group_Field_Delimited/fields - The number of Field_Delimited elements () does not match the number found in the 'fields' attribute (). - - pds:Group_Field_Delimited/fields - The number of Group_Field_Delimited elements () does not match the number found in the 'groups' attribute (). - - - - - - pds:Header/pds:object_length/pds:object_length - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Header/pds:parsing_standard_id/pds:parsing_standard_id - The attribute pds:Header/pds:parsing_standard_id must be equal to one of the following values '7-Bit ASCII Text', 'CDF 3.4 ISTP/IACG', 'CDF 3.5 ISTP/IACG', 'CDF 3.6 ISTP/IACG', 'CDF 3.7 ISTP/IACG', 'CDF 3.8 ISTP/IACG', 'FITS 3.0', 'FITS 4.0', 'ISIS2', 'ISIS2 History Label', 'ISIS3', 'PDS DSV 1', 'PDS ODL 2', 'PDS3', 'Pre-PDS3', 'TIFF 6.0', 'UTF-8 Text', 'VICAR1', 'VICAR2'. - - - - - - - - - - - - - pds:Identification_Area/logical_identifier - The attribute pds:product_class must match parent product class of ''. - - pds:Identification_Area/logical_identifier - The value of the attribute logical_identifier must only contain lower-case letters - - pds:Identification_Area/logical_identifier - The parent-value of the attribute logical_identifier must start with either: or or or or or - - pds:Identification_Area/logical_identifier - The value of the attribute logical_identifier must not include a value that contains '::' - - - - - - pds:Identification_Area/pds:information_model_version/pds:information_model_version - The attribute pds:Identification_Area/pds:information_model_version must be equal to the value '1.23.0.0'. - - - - - - pds:Identification_Area/pds:product_class/pds:product_class - The attribute pds:Identification_Area/pds:product_class must be equal to one of the following values 'Product_AIP', 'Product_Ancillary', 'Product_Attribute_Definition', 'Product_Browse', 'Product_Bundle', 'Product_Class_Definition', 'Product_Collection', 'Product_Context', 'Product_DIP', 'Product_DIP_Deep_Archive', 'Product_Data_Set_PDS3', 'Product_Document', 'Product_External', 'Product_File_Repository', 'Product_File_Text', 'Product_Instrument_Host_PDS3', 'Product_Instrument_PDS3', 'Product_Metadata_Supplemental', 'Product_Mission_PDS3', 'Product_Native', 'Product_Observational', 'Product_Proxy_PDS3', 'Product_SIP', 'Product_SIP_Deep_Archive', 'Product_SPICE_Kernel', 'Product_Service', 'Product_Software', 'Product_Subscription_PDS3', 'Product_Target_PDS3', 'Product_Thumbnail', 'Product_Update', 'Product_Volume_PDS3', 'Product_Volume_Set_PDS3', 'Product_XML_Schema', 'Product_Zipped'. - - - - - - pds:Information_Package_Component_Deep_Archive role="warning"/pds:Information_Package_Component_Deep_Archive.checksum_type - The value MD5Deep 4.n for attribute Information_Package_Component_Deep_Archive.checksum_type is deprecated and should not be used. - - - - - - pds:Information_Package_Component_Deep_Archive/pds:Internal_Reference/lidvid_reference - In Product_SIP_Deep_Archive both Internal_Reference and lidvid_reference are required. - - - - - - pds:Information_Package_Component_Deep_Archive/pds:checksum_type/pds:checksum_type - The attribute pds:Information_Package_Component_Deep_Archive/pds:checksum_type must be equal to one of the following values 'MD5', 'MD5Deep 4.n'. - - - - - - pds:Ingest_LDD/pds:dictionary_type/pds:dictionary_type - The attribute pds:Ingest_LDD/pds:dictionary_type must be equal to one of the following values 'Common', 'Discipline', 'Mission'. - - - - - - pds:Instrument/pds:subtype role="warning"/pds:Instrument.subtype - pds:Instrument/pds:subtype is deprecated and should not be used. - - - - - - pds:Instrument/pds:type role="warning"/pds:Instrument.type - pds:Instrument/pds:type is deprecated and should not be used. - - - - - - pds:Instrument/pds:type/pds:type - The attribute pds:Instrument/pds:type must be equal to one of the following values 'Accelerometer', 'Alpha Particle Detector', 'Alpha Particle X-Ray Spectrometer', 'Altimeter', 'Anemometer', 'Atmospheric Sciences', 'Atomic Force Microscope', 'Barometer', 'Biology Experiments', 'Bolometer', 'Camera', 'Cosmic Ray Detector', 'Drilling Tool', 'Dust', 'Dust Detector', 'Electrical Probe', 'Energetic Particle Detector', 'Gamma Ray Detector', 'Gas Analyzer', 'Gravimeter', 'Grinding Tool', 'Hygrometer', 'Imager', 'Imaging Spectrometer', 'Inertial Measurement Unit', 'Infrared Spectrometer', 'Interferometer', 'Laser Induced Breakdown Spectrometer', 'Magnetometer', 'Mass Spectrometer', 'Microscope', 'Microwave Spectrometer', 'Moessbauer Spectrometer', 'Naked Eye', 'Neutral Particle Detector', 'Neutron Detector', 'Particle Detector', 'Photometer', 'Plasma Analyzer', 'Plasma Detector', 'Plasma Wave Spectrometer', 'Polarimeter', 'Radar', 'Radio Science', 'Radio Spectrometer', 'Radio Telescope', 'Radio-Radar', 'Radiometer', 'Reflectometer', 'Regolith Properties', 'Robotic Arm', 'Seismometer', 'Small Bodies Sciences', 'Spectrograph', 'Spectrograph Imager', 'Spectrometer', 'Thermal Imager', 'Thermal Probe', 'Thermometer', 'Ultraviolet Spectrometer', 'Weather Station', 'Wet Chemistry Laboratory', 'X-ray Detector', 'X-ray Diffraction Spectrometer', 'X-ray Fluorescence Spectrometer'. - - - - - - pds:Instrument_Host role="warning"/pds:Instrument_Host.type - The value Earth Based for attribute Instrument_Host.type is deprecated and should not be used. - - pds:Instrument_Host role="warning"/pds:Instrument_Host.type - The value Earth-based for attribute Instrument_Host.type is deprecated and should not be used. - - - - - - pds:Instrument_Host/pds:instrument_host_version_id role="warning"/pds:Instrument_Host.instrument_host_version_id - pds:Instrument_Host/pds:instrument_host_version_id is deprecated and should not be used. - - - - - - pds:Instrument_Host/pds:type/pds:type - The attribute pds:Instrument_Host/pds:type must be equal to one of the following values 'Aircraft', 'Balloon', 'Earth Based', 'Earth-based', 'Lander', 'Rover', 'Spacecraft', 'Suborbital Rocket'. - - - - - - pds:Instrument_Host/pds:version_id role="warning"/pds:Instrument_Host.version_id - pds:Instrument_Host/pds:version_id is deprecated and should not be used. - - - - - - pds:Internal_Reference role="warning"/pds:Internal_Reference.reference_type - The value is_airborne for attribute Internal_Reference.reference_type is deprecated and should not be used. - - - - - - - - - - - - - - - - - - pds:Internal_Reference/lid_reference - The value of the attribute lid_reference must not include a value that contains '::' followed by version id - - pds:Internal_Reference/lid_reference - The number of colons found in lid_reference: () is inconsistent with the number expected: (:). - - pds:Internal_Reference/lidvid_reference - The number of colons found in lidvid_reference: () is inconsistent with the number expected: (:). - - pds:Internal_Reference/lid_reference - The value of the attribute lid_reference must start with either: or or or or or - - pds:Internal_Reference/lidvid_reference - The value of the attribute lidvid_reference must start with either: or or or or or - - pds:Internal_Reference/lidvid_reference - The value of the attribute lidvid_reference must include a value that contains '::' followed by version id - - - - - - pds:Inventory role="warning"/pds:Inventory.field_delimiter - The value comma for attribute Inventory.field_delimiter is deprecated and should not be used. - - pds:Inventory role="warning"/pds:Inventory.field_delimiter - The value horizontal tab for attribute Inventory.field_delimiter is deprecated and should not be used. - - pds:Inventory role="warning"/pds:Inventory.field_delimiter - The value semicolon for attribute Inventory.field_delimiter is deprecated and should not be used. - - pds:Inventory role="warning"/pds:Inventory.field_delimiter - The value vertical bar for attribute Inventory.field_delimiter is deprecated and should not be used. - - pds:Inventory role="warning"/pds:Inventory.field_delimiter - The value carriage-return line-feed for attribute Inventory.record_delimiter is deprecated and should not be used. - - - - - - pds:Inventory/Inventory - Inventory.Field_Delimited does not match the expected number of instances - - pds:Inventory/offset - Inventory.offset must have a value of '0' - - - - - - pds:Inventory/pds:Record_Delimited/name - The attribute pds:fields must be equal to '2'. - - pds:Inventory/pds:Record_Delimited/name - The attribute pds:groups must be equal to '0'. - - - - - - pds:Inventory/pds:Record_Delimited/pds:Field_Delimited[1]/field_number - The first field of an Inventory must have field_number set to 1. - - pds:Inventory/pds:Record_Delimited/pds:Field_Delimited[1]/maximum_field_length - The first field of an Inventory must have maximum_field_length set to 1. - - pds:Inventory/pds:Record_Delimited/pds:Field_Delimited[1]/data_type - The first field of an Inventory must have data type set to 'ASCII_String'. - - pds:Inventory/pds:Record_Delimited/pds:Field_Delimited[1]/name - The first field of an Inventory must have name set to 'Member Status'. - - - - - - pds:Inventory/pds:Record_Delimited/pds:Field_Delimited[2]/field_number - The second field of an Inventory must have field_number set to 2. - - pds:Inventory/pds:Record_Delimited/pds:Field_Delimited[2]/data_type - The second field of an Inventory must have data_type set to either 'ASCII_LID' or 'ASCII_LIDVID' or 'ASCII_LIDVID_LID'. - - pds:Inventory/pds:Record_Delimited/pds:Field_Delimited[2]/name - The second field of an Inventory must have name set to 'LIDVID_LID'. - - pds:Inventory/pds:Record_Delimited/pds:Field_Delimited[2]/name - The second field of an Inventory must have maximum_field_length set to 255. - - - - - - pds:Inventory/pds:field_delimiter/field_delimiter - The attribute pds:Inventory/pds:field_delimiter must ONLY be equal to the value 'Comma'. - - pds:Inventory/pds:field_delimiter/pds:field_delimiter - The attribute pds:Inventory/pds:field_delimiter must be equal to one of the following values 'Comma', 'Horizontal Tab', 'Semicolon', 'Vertical Bar', 'comma', 'horizontal tab', 'semicolon', 'vertical bar'. - - - - - - pds:Inventory/pds:parsing_standard_id/pds:parsing_standard_id - The attribute pds:Inventory/pds:parsing_standard_id must be equal to the value 'PDS DSV 1'. - - - - - - pds:Inventory/pds:record_delimiter/pds:record_delimiter - The attribute pds:Inventory/pds:record_delimiter must be equal to one of the following values 'Carriage-Return Line-Feed', 'Line-Feed', 'carriage-return line-feed'. - - - - - - pds:Inventory/pds:reference_type/pds:reference_type - The attribute pds:Inventory/pds:reference_type must be equal to the value 'inventory_has_member_product'. - - - - - - pds:Investigation/pds:type/pds:type - The attribute pds:Investigation/pds:type must be equal to one of the following values 'Field Campaign', 'Individual Investigation', 'Mission', 'Observing Campaign', 'Other Investigation'. - - - - - - pds:Investigation_Area/pds:type/pds:type - The attribute pds:Investigation_Area/pds:type must be equal to one of the following values 'Field Campaign', 'Individual Investigation', 'Mission', 'Observing Campaign', 'Other Investigation'. - - - - - - pds:Local_ID_Reference/pds:id_reference_type/pds:id_reference_type - The attribute pds:Local_ID_Reference/pds:id_reference_type must be equal to one of the following values 'has_component', 'has_primary_component'. - - - - - - pds:Local_ID_Relation/pds:id_reference_type/pds:id_reference_type - The attribute pds:Local_ID_Relation/pds:id_reference_type must be equal to one of the following values 'has_axis_values', 'has_backplane', 'has_column_headers', 'has_display_settings', 'has_spectral_characteristics'. - - - - - - pds:Manifest_SIP_Deep_Archive role="warning"/pds:Manifest_SIP_Deep_Archive.field_delimiter - The value comma for attribute Manifest_SIP_Deep_Archive.field_delimiter is deprecated and should not be used. - - pds:Manifest_SIP_Deep_Archive role="warning"/pds:Manifest_SIP_Deep_Archive.field_delimiter - The value horizontal tab for attribute Manifest_SIP_Deep_Archive.field_delimiter is deprecated and should not be used. - - pds:Manifest_SIP_Deep_Archive role="warning"/pds:Manifest_SIP_Deep_Archive.field_delimiter - The value semicolon for attribute Manifest_SIP_Deep_Archive.field_delimiter is deprecated and should not be used. - - pds:Manifest_SIP_Deep_Archive role="warning"/pds:Manifest_SIP_Deep_Archive.field_delimiter - The value vertical bar for attribute Manifest_SIP_Deep_Archive.field_delimiter is deprecated and should not be used. - - pds:Manifest_SIP_Deep_Archive role="warning"/pds:Manifest_SIP_Deep_Archive.field_delimiter - The value carriage-return line-feed for attribute Manifest_SIP_Deep_Archive.record_delimiter is deprecated and should not be used. - - - - - - pds:Manifest_SIP_Deep_Archive/pds:field_delimiter/pds:field_delimiter - The attribute pds:Manifest_SIP_Deep_Archive/pds:field_delimiter must be equal to one of the following values 'Comma', 'Horizontal Tab', 'Semicolon', 'Vertical Bar', 'comma', 'horizontal tab', 'semicolon', 'vertical bar'. - - - - - - pds:Manifest_SIP_Deep_Archive/pds:parsing_standard_id/pds:parsing_standard_id - The attribute pds:Manifest_SIP_Deep_Archive/pds:parsing_standard_id must be equal to the value 'PDS DSV 1'. - - - - - - pds:Manifest_SIP_Deep_Archive/pds:record_delimiter/pds:record_delimiter - The attribute pds:Manifest_SIP_Deep_Archive/pds:record_delimiter must be equal to one of the following values 'Carriage-Return Line-Feed', 'Line-Feed', 'carriage-return line-feed'. - - - - - - pds:Node role="warning"/pds:Node.name - The value Imaging for attribute Node.name is deprecated and should not be used. - - pds:Node role="warning"/pds:Node.name - The value Navigation Ancillary Information Facility for attribute Node.name is deprecated and should not be used. - - pds:Node role="warning"/pds:Node.name - The value Planetary Rings for attribute Node.name is deprecated and should not be used. - - - - - - pds:Node/pds:name/pds:name - The attribute pds:Node/pds:name must be equal to one of the following values 'Cartography and Imaging Sciences Discipline', 'Engineering', 'Geosciences', 'Imaging', 'Management', 'Navigation and Ancillary Information Facility', 'Planetary Atmospheres', 'Planetary Plasma Interactions', 'Planetary Rings', 'Planetary Science Archive', 'Radio Science', 'Ring-Moon Systems', 'Small Bodies'. - - - - - - pds:Object_Statistics/pds:bit_mask role="warning"/pds:Object_Statistics.bit_mask - pds:Object_Statistics/pds:bit_mask is deprecated and should not be used. - - - - - - pds:Object_Statistics/pds:md5_checksum role="warning"/pds:Object_Statistics.md5_checksum - pds:Object_Statistics/pds:md5_checksum is deprecated and should not be used. - - - - - - pds:Observing_System_Component role="warning"/pds:Observing_System_Component.type - The value Airborne for attribute Observing_System_Component.type is deprecated and should not be used. - - pds:Observing_System_Component role="warning"/pds:Observing_System_Component.type - The value Aircraft for attribute Observing_System_Component.type is deprecated and should not be used. - - pds:Observing_System_Component role="warning"/pds:Observing_System_Component.type - The value Artificial Illumination for attribute Observing_System_Component.type is deprecated and should not be used. - - pds:Observing_System_Component role="warning"/pds:Observing_System_Component.type - The value Balloon for attribute Observing_System_Component.type is deprecated and should not be used. - - pds:Observing_System_Component role="warning"/pds:Observing_System_Component.type - The value Computer for attribute Observing_System_Component.type is deprecated and should not be used. - - pds:Observing_System_Component role="warning"/pds:Observing_System_Component.type - The value Facility for attribute Observing_System_Component.type is deprecated and should not be used. - - pds:Observing_System_Component role="warning"/pds:Observing_System_Component.type - The value Laboratory for attribute Observing_System_Component.type is deprecated and should not be used. - - pds:Observing_System_Component role="warning"/pds:Observing_System_Component.type - The value Naked Eye for attribute Observing_System_Component.type is deprecated and should not be used. - - pds:Observing_System_Component role="warning"/pds:Observing_System_Component.type - The value Observatory for attribute Observing_System_Component.type is deprecated and should not be used. - - pds:Observing_System_Component role="warning"/pds:Observing_System_Component.type - The value Spacecraft for attribute Observing_System_Component.type is deprecated and should not be used. - - pds:Observing_System_Component role="warning"/pds:Observing_System_Component.type - The value Suborbital Rocket for attribute Observing_System_Component.type is deprecated and should not be used. - - - - - - pds:Observing_System_Component/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'is_instrument', 'is_instrument_host', 'is_other', 'is_facility', 'is_telescope', 'is_airborne'. - - - - - - pds:Observing_System_Component/pds:type/pds:type - The attribute pds:Observing_System_Component/pds:type must be equal to one of the following values 'Airborne', 'Aircraft', 'Artificial Illumination', 'Balloon', 'Computer', 'Facility', 'Host', 'Instrument', 'Laboratory', 'Literature Search', 'Naked Eye', 'Observatory', 'Spacecraft', 'Suborbital Rocket', 'Telescope'. - - - - - - - - pds:Organization/sequence_number - The minimum value of sequence_number within the context of 'Person' or 'Organization' or 'Parent_Organization' or 'Affiliation' is 1. - - - - - - - - - - pds:Organization/pds:contributor_type/contributor_type - The atribute 'pds:Organization/pds:contributor_type' can only be used within the context of 'List_Contributor'. - - - - - - pds:PDS_Affiliate role="warning"/pds:PDS_Affiliate.team_name - The value Imaging for attribute PDS_Affiliate.team_name is deprecated and should not be used. - - pds:PDS_Affiliate role="warning"/pds:PDS_Affiliate.team_name - The value Navigation Ancillary Information Facility for attribute PDS_Affiliate.team_name is deprecated and should not be used. - - pds:PDS_Affiliate role="warning"/pds:PDS_Affiliate.team_name - The value Planetary Rings for attribute PDS_Affiliate.team_name is deprecated and should not be used. - - - - - - pds:PDS_Affiliate/pds:phone_book_flag - The attribute pds:phone_book_flag must be equal to one of the following values 'true', 'false'. - - - - - - pds:PDS_Affiliate/pds:affiliation_type/pds:affiliation_type - The attribute pds:PDS_Affiliate/pds:affiliation_type must be equal to one of the following values 'Affiliate', 'Data Provider', 'Manager', 'Technical Staff'. - - - - - - pds:PDS_Affiliate/pds:team_name/pds:team_name - The attribute pds:PDS_Affiliate/pds:team_name must be equal to one of the following values 'Cartography and Imaging Sciences Discipline', 'Engineering', 'Geosciences', 'Headquarters', 'Imaging', 'Management', 'National Space Science Data Center', 'Navigation and Ancillary Information Facility', 'Planetary Atmospheres', 'Planetary Plasma Interactions', 'Planetary Rings', 'Radio Science', 'Ring-Moon Systems', 'Small Bodies'. - - - - - - pds:Parsable_Byte_Stream/pds:object_length/pds:object_length - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Parsable_Byte_Stream/pds:offset/pds:offset - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Person/pds:contributor_type/pds:contributor_type - The attribute pds:Person/pds:contributor_type must be equal to one of the following values 'DataCollector', 'DataCurator', 'Producer'. - - - - - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - The attribute pds:discipline_name must be equal to one of the following values 'Atmospheres', 'Fields', 'Flux Measurements', 'Geosciences', 'Imaging', 'Particles', 'Radio Science', 'Ring-Moon Systems', 'Small Bodies', 'Spectroscopy'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - If the attribute pds:discipline_name equals Atmospheres then if present pds:facet1 must be equal to one of the following values 'Structure', 'Meteorology'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - If the attribute pds:discipline_name equals Fields then if present pds:facet1 must be equal to one of the following values 'Electric', 'Magnetic'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - If the attribute pds:discipline_name equals Fields then if present pds:facet2 must be equal to one of the following values 'Background', 'Waves'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - If the attribute pds:discipline_name equals Flux Measurements then if present pds:facet1 must be equal to one of the following values 'Photometry', 'Polarimetry'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - If the attribute pds:discipline_name equals Imaging then if present pds:facet1 must be equal to one of the following values 'Grayscale', 'Color', 'Movie', 'Color Movie'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - If the attribute pds:discipline_name equals Particles then if present pds:facet1 must be equal to one of the following values 'Ions', 'Electrons', 'Neutrals'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - If the attribute pds:discipline_name equals Particles then if present pds:facet2 must be equal to one of the following values 'Cosmic Ray', 'Solar Energetic', 'Energetic', 'Plasma'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - If the attribute pds:discipline_name equals Ring-Moon Systems then if present pds:facet1 must be equal to one of the following values 'Satellite Astrometry', 'Ring Compositional Map', 'Ring Occultation Profile', 'Ring Thermal Map'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - If the attribute pds:discipline_name equals Small Bodies then if present pds:facet1 must be equal to one of the following values 'Dynamical Properties', 'Lightcurve', 'Meteoritics', 'Physical Properties', 'Production Rates', 'Shape Model', 'Taxonomy', 'Dust Study', 'Historical Reference', 'Gas Study'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - If the attribute pds:discipline_name equals Spectroscopy then if present pds:facet1 must be equal to one of the following values '2D', 'Linear', 'Spectral Cube', 'Spectral Image', 'Tabulated'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - Facet1 is allowed only when pds:discipline_name is one of the following 'Atmospheres', 'Fields', 'Flux Measurements', 'Imaging', 'Particles', 'Ring-Moon Systems', 'Small Bodies', 'Spectroscopy'. - - pds:Primary_Result_Summary/pds:Science_Facets/pds:discipline_name - Facet2 is allowed only when pds:discipline_name is one of the following 'Fields', 'Particles'. - - - - - - pds:Primary_Result_Summary/pds:Science_Facets/pds:subfacet1/pds:subfacet1 - pds:subfacet1 should not be used. No values have been provided. - - - - - - pds:Primary_Result_Summary/pds:Science_Facets/pds:subfacet2/pds:subfacet2 - pds:subfacet2 should not be used. No values have been provided. - - - - - - pds:Primary_Result_Summary/pds:data_regime role="warning"/pds:Primary_Result_Summary.data_regime - pds:Primary_Result_Summary/pds:data_regime is deprecated and should not be used. - - - - - - pds:Primary_Result_Summary/pds:data_regime/pds:data_regime - The attribute pds:Primary_Result_Summary/pds:data_regime must be equal to one of the following values 'Dust', 'Electric Field', 'Electrons', 'Far Infrared', 'Gamma Ray', 'Infrared', 'Ions', 'Magnetic Field', 'Microwave', 'Millimeter', 'Near Infrared', 'Particles', 'Pressure', 'Radio', 'Sub-Millimeter', 'Temperature', 'Ultraviolet', 'Visible', 'X-Ray'. - - - - - - pds:Primary_Result_Summary/pds:processing_level/pds:processing_level - The attribute pds:Primary_Result_Summary/pds:processing_level must be equal to one of the following values 'Calibrated', 'Derived', 'Partially Processed', 'Raw', 'Telemetry'. - - - - - - pds:Primary_Result_Summary/pds:processing_level_id role="warning"/pds:Primary_Result_Summary.processing_level_id - pds:Primary_Result_Summary/pds:processing_level_id is deprecated and should not be used. - - - - - - pds:Primary_Result_Summary/pds:processing_level_id/pds:processing_level_id - The attribute pds:Primary_Result_Summary/pds:processing_level_id must be equal to one of the following values 'Calibrated', 'Derived', 'Partially Processed', 'Raw', 'Telemetry'. - - - - - - pds:Primary_Result_Summary/pds:purpose/pds:purpose - The attribute pds:Primary_Result_Summary/pds:purpose must be equal to one of the following values 'Calibration', 'Checkout', 'Engineering', 'Navigation', 'Observation Geometry', 'Science', 'Supporting Observation'. - - - - - - pds:Primary_Result_Summary/pds:type role="warning"/pds:Primary_Result_Summary.type - pds:Primary_Result_Summary/pds:type is deprecated and should not be used. - - - - - - pds:Primary_Result_Summary/pds:type/pds:type - The attribute pds:Primary_Result_Summary/pds:type must be equal to one of the following values 'Altimetry', 'Astrometry', 'Count', 'E/B-Field Vectors', 'Gravity Model', 'Image', 'Lightcurves', 'Map', 'Meteorology', 'Null Result', 'Occultation', 'Photometry', 'Physical Parameters', 'Polarimetry', 'Radiometry', 'Reference', 'Shape Model', 'Spectrum'. - - - - - - pds:Product_AIP/pds:Information_Package_Component/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'package_has_collection', 'package_has_bundle', 'package_has_product', 'package_compiled_from_package'. - - - - - - pds:Product_Ancillary/pds:Context_Area/pds:Investigation_Area/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'ancillary_to_investigation'. - - - - - - pds:Product_Ancillary/pds:Context_Area/pds:Target_Identification/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'ancillary_to_target'. - - - - - - pds:Product_Ancillary/pds:Identification_Area/pds:License_Information/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'product_to_license'. - - - - - - pds:Product_Ancillary/pds:Reference_List/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'ancillary_to_data', 'ancillary_to_document', 'ancillary_to_browse'. - - - - - - pds:Product_Browse/pds:Identification_Area/pds:License_Information/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'product_to_license'. - - - - - - pds:Product_Browse/pds:Reference_List/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'browse_to_data', 'browse_to_thumbnail', 'browse_to_browse', 'browse_to_document', 'browse_to_ancillary'. - - - - - - - - - - - - - - - - - - - - - - - - - pds:Product_Bundle/pds:Context_Area/bundle_type - For a Bundle of type 'Data', "pds:Bundle/pds:type" must have a value of 'Archive'. - - pds:Product_Bundle/pds:Context_Area/type - For a Bundle of type 'Data', at least one instance of "pds:Context_Area/pds:Investigation_Area/pds:type" must have a value of 'Mission'. - - pds:Product_Bundle/pds:Context_Area/purpose - For a Bundle of type 'Data', at least one instance of "pds:Context_Area/pds:Primary_Result_Summary/pds:purpose" must have a value of 'Science'. - - pds:Product_Bundle/pds:Context_Area/description - For a Bundle of type 'Data', "pds:Identification_Area/pds:Citation_Information/description" must be present and have a value. - - pds:Product_Bundle/pds:Context_Area/start_date_time - For a Bundle of type 'Data', "pds:Context_Area/pds:Time_Coordinates/pds:start_date_time" must be present and have a (nillable) value. - - pds:Product_Bundle/pds:Context_Area/stop_date_time - For a Bundle of type 'Data', "pds:Context_Area/pds:Time_Coordinates/pds:stop_date_time" must be present and have a (nillable) value. - - pds:Product_Bundle/pds:Context_Area/name - For a Bundle of type 'Data', "pds:Context_Area/pds:Target_Identification/pds:name" must be present and have a value. - - pds:Product_Bundle/pds:Context_Area/type - For a Bundle of type 'Data', "pds:Context_Area/pds:Target_Identification/pds:type" must be present and have a value. - - pds:Product_Bundle/pds:Context_Area/name - For a Bundle of type 'Data', "pds:Context_Area/pds:Investigation_Area/pds:name" must be present and have a value. - - pds:Product_Bundle/pds:Context_Area/name - For a Bundle of type 'Data', "pds:Context_Area/pds:Observing_System/pds:name" must be present and have a value. - - pds:Product_Bundle/pds:Context_Area/type - For a Bundle of type 'Data', "pds:Context_Area/pds:Observing_System/pds:Observing_System_Component/pds:name" must be present and have a value. - - pds:Product_Bundle/pds:Context_Area/start_date_time - For a Bundle of type 'Data', an instance of "pds:Context_Area/pds:Observing_System/pds:Observing_System_Component/pds:type" must have a value of 'Instrument'. - - pds:Product_Bundle/pds:Context_Area/processing_level - For a Bundle of type 'Data', "pds:Context_Area/pds:Primary_Result_Summary/pds:processing_level" must be present and have a value. - - pds:Product_Bundle/pds:Context_Area/parsing_standard_id - For a Bundle, if "pds:File_Area_Text/pds:Stream_Text" is present, then value must not be 'PDS3'. - - - - - - pds:Product_Bundle/pds:Context_Area/pds:Investigation_Area/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'bundle_to_investigation'. - - - - - - pds:Product_Bundle/pds:Identification_Area/description - In Product_Bundle both Citation_Information and its description are required. - - - - - - pds:Product_Bundle/pds:Identification_Area/pds:License_Information/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'product_to_license'. - - - - - - - - pds:Product_Bundle/pds:Identification_Area/pds:logical_identifier/logical_identifier - In Product_Bundle, the number of colons found: () is inconsistent with the number expected: (). - - - - - - pds:Product_Bundle/pds:Reference_List/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'bundle_to_errata', 'bundle_to_document', 'bundle_to_investigation', 'bundle_to_instrument', 'bundle_to_instrument_host', 'bundle_to_target', 'bundle_to_resource', 'bundle_to_associate'. - - - - - - - - - - - - - - - - - - - - - - - - pds:Product_Collection/pds:Context_Area/start_date_time - For a Collection of type 'Mission Science Data', "pds:Context_Area/pds:Time_Coordinates/pds:start_date_time" must be present and have a (nillable) value. - - pds:Product_Collection/pds:Context_Area/stop_date_time - For a Collection of type 'Mission Science Data', "pds:Context_Area/pds:Time_Coordinates/pds:stop_date_time" must be present and have a (nillable) value. - - pds:Product_Collection/pds:Context_Area/name - For a Collection of type 'Mission Science Data', "pds:Context_Area/pds:Target_Identification/pds:name" must be present and have a value. - - pds:Product_Collection/pds:Context_Area/type - For a Collection of type 'Mission Science Data', "pds:Context_Area/pds:Target_Identification/pds:type" must be present and have a value. - - pds:Product_Collection/pds:Context_Area/name - For a Collection of type 'Mission Science Data', "pds:Context_Area/pds:Investigation_Area/pds:name" must be present and have a value. - - pds:Product_Collection/pds:Context_Area/name - For a Collection of type 'Mission Science Data', "pds:Context_Area/pds:Observing_System/pds:Observing_System_Component/pds:name" must be present and have a value. - - pds:Product_Collection/pds:Context_Area/type - For a Collection of type 'Mission Science Data', an instance of "pds:Context_Area/pds:Observing_System/pds:Observing_System_Component/pds:type" must have a value of 'Instrument'. - - pds:Product_Collection/pds:Context_Area/processing_level - For a Collection of type 'Mission Science Data', "pds:Context_Area/pds:Primary_Result_Summary/pds:processing_level" must be present and have a value. - - - - - - pds:Product_Collection/pds:Context_Area/pds:Investigation_Area/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'collection_to_investigation'. - - - - - - pds:Product_Collection/pds:Identification_Area/description - In Product_Collection both Citation_Information and its description are required. - - - - - - pds:Product_Collection/pds:Identification_Area/pds:License_Information/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'product_to_license'. - - - - - - - - pds:Product_Collection/pds:Identification_Area/pds:logical_identifier/logical_identifier - In Product_Collection, the number of colons found: () is inconsistent with the number expected: (). - - - - - - pds:Product_Collection/pds:Reference_List/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'collection_to_resource', 'collection_to_associate', 'collection_to_calibration', 'collection_to_geometry', 'collection_to_spice_kernel', 'collection_curated_by_node', 'collection_to_document', 'collection_to_browse', 'collection_to_context', 'collection_to_data', 'collection_to_ancillary', 'collection_to_schema', 'collection_to_errata', 'collection_to_bundle', 'collection_to_personnel', 'collection_to_investigation', 'collection_to_instrument', 'collection_to_instrument_host', 'collection_to_target'. - - - - - - pds:Product_Context/pds:Identification_Area/pds:License_Information/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'product_to_license'. - - - - - - pds:Product_Context/pds:Reference_List/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'context_to_associate', 'instrument_to_document', 'instrument_to_instrument_host', 'instrument_host_to_document', 'instrument_host_to_instrument', 'instrument_host_to_investigation', 'instrument_host_to_target', 'investigation_to_document', 'investigation_to_instrument', 'investigation_to_instrument_host', 'investigation_to_target', 'node_to_personnel', 'node_to_agency', 'node_to_manager', 'node_to_operator', 'node_to_data_archivist', 'resource_to_instrument', 'resource_to_instrument_host', 'resource_to_investigation', 'resource_to_target', 'target_to_document', 'target_to_instrument', 'target_to_instrument_host', 'target_to_investigation', 'instrument_to_telescope', 'instrument_to_observatory', 'instrument_to_facility', 'telescope_to_observatory', 'telescope_to_facility', 'telescope_to_airborne', 'investigation_to_telescope', 'facility_to_investigation', 'facility_to_instrument', 'facility_to_telescope', 'investigation_to_facility', 'telescope_to_instrument'. - - - - - - pds:Product_DIP/pds:Information_Package_Component/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'package_has_collection', 'package_has_bundle', 'package_has_product', 'package_compiled_from_package'. - - - - - - pds:Product_DIP_Deep_Archive/pds:Information_Package_Component/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'package_has_collection', 'package_has_bundle', 'package_has_product', 'package_compiled_from_package'. - - - - - - pds:Product_Document/pds:Context_Area/pds:Investigation_Area/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'document_to_investigation'. - - - - - - pds:Product_Document/pds:Context_Area/pds:Target_Identification/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'document_to_target'. - - - - - - pds:Product_Document/pds:Identification_Area/description - In Product_Document both Citation_Information and its description are required. - - - - - - pds:Product_Document/pds:Identification_Area/pds:License_Information/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'product_to_license'. - - - - - - pds:Product_Document/pds:Reference_List/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'document_to_associate', 'document_to_investigation', 'document_to_instrument_host', 'document_to_instrument', 'document_to_target', 'document_to_data'. - - - - - - pds:Product_External/pds:Identification_Area/pds:License_Information/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'product_to_license'. - - - - - - pds:Product_File_Text/pds:Identification_Area/description - In Product_File_Text both Citation_Information and its description are required. - - - - - - pds:Product_File_Text/pds:Identification_Area/pds:License_Information/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'product_to_license'. - - - - - - pds:Product_Metadata_Supplemental/pds:Identification_Area/pds:License_Information/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'product_to_license'. - - - - - - pds:Product_Native/pds:Identification_Area/pds:License_Information/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'product_to_license'. - - - - - - - - pds:Product_Native/pds:Reference_List/reference_type - In Product_Native, at least one instance of 'pds:Internal_Reference/pds:reference_type' must be present. - - pds:Product_Native/pds:Reference_List/reference_type - In Product_Native, at least one instance of 'pds:Internal_Reference/pds:reference_type' must be set to the following value 'native_to_archival' - - pds:Product_Native/pds:Reference_List/reference_type - In Product_Native, every instance of 'pds:Internal_Reference/pds:reference_type' must be set to one of the following values: 'described_by_document', 'native_to_archival'. - - - - - - pds:Product_Observational/pds:Identification_Area/pds:License_Information/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'product_to_license'. - - - - - - pds:Product_Observational/pds:Observation_Area/pds:Investigation_Area/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'data_to_investigation'. - - - - - - pds:Product_Observational/pds:Observation_Area/pds:Target_Identification/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'data_to_target'. - - - - - - pds:Product_Observational/pds:Reference_List/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'data_to_associate', 'data_to_resource', 'data_to_calibration_document', 'data_to_calibration_product', 'data_to_raw_product', 'data_to_calibrated_product', 'data_to_derived_product', 'data_to_geometry', 'data_to_spice_kernel', 'data_to_thumbnail', 'data_to_document', 'data_curated_by_node', 'data_to_browse', 'data_to_ancillary_data', 'data_to_partially_processed_product'. - - - - - - pds:Product_SIP/pds:Information_Package_Component/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'package_has_collection', 'package_has_bundle', 'package_has_product'. - - - - - - pds:Product_SIP_Deep_Archive/pds:Information_Package_Component_Deep_Archive/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'package_has_bundle'. - - - - - - pds:Product_SPICE_Kernel/pds:Context_Area/x - In Product_SPICE_Kernel the Time_Coordinates, Investigation_Area, Target_Identification, and Observing_System classes must be present - - - - - - pds:Product_Thumbnail/pds:Reference_List/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'thumbnail_to_data', 'thumbnail_to_browse', 'thumbnail_to_document'. - - - - - - pds:Product_Update role="warning"/pds:Product_Update - pds:Product_Update is deprecated and should not be used. - - - - - - pds:Product_Update/pds:Reference_List/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'update_to_collection'. - - - - - - pds:Product_Zipped/pds:Internal_Reference/reference_type - The attribute reference_type must be set to one of the following values 'zip_to_package'. - - - - - - pds:Property_Map_Entry/pds:property_map_type/pds:property_map_type - The attribute pds:Property_Map_Entry/pds:property_map_type must be equal to one of the following values 'Nuance', 'Query Model', 'Rationale', 'Synonym', 'Velocity Variable'. - - - - - - pds:Quaternion/pds:type/pds:type - The attribute pds:Quaternion/pds:type must be equal to one of the following values 'SPICE', 'Spacecraft Telemetry'. - - - - - - pds:Quaternion_Component/pds:data_type/pds:data_type - The attribute pds:Quaternion_Component/pds:data_type must be equal to the value 'ASCII_Real'. - - - - - - - - pds:Record_Binary/num_fields - The values for 'fields' and 'groups' must not both be '0'. The number of fields found: (). The number of groups found: (). - - pds:Record_Binary/fields - The number of Field_Binary elements () does not match the number found in the 'fields' attribute (). - - pds:Record_Binary/fields - The number of Group_Field_Binary elements () does not match the number found in the 'groups' attribute (). - - - - - - pds:Record_Binary/pds:record_length/pds:record_length - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - - - pds:Record_Character/num_fields - The values for 'fields' and 'groups' must not both be '0'. The number of fields found: (). The number of groups found: (). - - pds:Record_Character/fields - The number of Field_Character elements () does not match the number found in the 'fields' attribute (). - - pds:Record_Character/fields - The number of Group_Field_Character elements () does not match the number found in the 'groups' attribute (). - - - - - - pds:Record_Character/pds:record_length/pds:record_length - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - - - pds:Record_Delimited/fields - The values for 'fields' and 'groups' must not both be '0'. The number of fields found: (). The number of groups found: (). - - pds:Record_Delimited/fields - The number of Field_Delimited elements () does not match the number found in the 'fields' attribute (). - - pds:Record_Delimited/fields - The number of Group_Field_Delimited elements () does not match the number found in the 'groups' attribute (). - - - - - - pds:Record_Delimited/pds:maximum_record_length/pds:maximum_record_length - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Resource/pds:type/pds:type - The attribute pds:Resource/pds:type must be equal to one of the following values 'Information.Agency', 'Information.Instrument', 'Information.Instrument_Host', 'Information.Investigation', 'Information.Node', 'Information.Person', 'Information.Resource', 'Information.Science_Portal', 'Information.Target', 'System.Browse', 'System.Directory_Listing', 'System.Registry_Query', 'System.Search', 'System.Transform', 'System.Transport'. - - - - - - pds:SIP_Deep_Archive/pds:provider_site_id/pds:provider_site_id - The attribute pds:SIP_Deep_Archive/pds:provider_site_id must be equal to one of the following values 'PDS_ATM', 'PDS_ENG', 'PDS_GEO', 'PDS_IMG', 'PDS_JPL', 'PDS_NAI', 'PDS_PPI', 'PDS_PSI', 'PDS_RNG', 'PDS_SBN'. - - - - - - pds:SPICE_Kernel/pds:encoding_type/pds:encoding_type - The attribute pds:SPICE_Kernel/pds:encoding_type must be equal to one of the following values 'Binary', 'Character'. - - - - - - pds:SPICE_Kernel/pds:kernel_type/pds:kernel_type - The attribute pds:SPICE_Kernel/pds:kernel_type must be equal to one of the following values 'CK', 'DBK', 'DSK', 'EK', 'FK', 'IK', 'LSK', 'MK', 'PCK', 'SCLK', 'SPK'. - - - - - - pds:SPICE_Kernel/pds:parsing_standard_id/pds:parsing_standard_id - The attribute pds:SPICE_Kernel/pds:parsing_standard_id must be equal to the value 'SPICE'. - - - - - - pds:Science_Facets/pds:domain/pds:domain - The attribute pds:Science_Facets/pds:domain must be equal to one of the following values 'Atmosphere', 'Dynamics', 'Heliosheath', 'Heliosphere', 'Interior', 'Interstellar', 'Ionosphere', 'Magnetosphere', 'Rings', 'Surface'. - - - - - - pds:Science_Facets/pds:wavelength_range/pds:wavelength_range - The attribute pds:Science_Facets/pds:wavelength_range must be nulled or equal to one of the following values 'Far Infrared', 'Gamma Ray', 'Infrared', 'Microwave', 'Millimeter', 'Near Infrared', 'Radio', 'Submillimeter', 'Ultraviolet', 'Visible', 'X-ray'. - - - - - - pds:Service/pds:category/pds:category - The attribute pds:Service/pds:category must be equal to one of the following values 'Analysis', 'Design', 'Dissemination', 'Generation', 'Planning', 'Reader', 'Search', 'Transformation', 'Validation', 'Visualization'. - - - - - - pds:Service/pds:interface_type/pds:interface_type - The attribute pds:Service/pds:interface_type must be equal to one of the following values 'API', 'Command-Line', 'GUI', 'Service'. - - - - - - pds:Service/pds:service_type/pds:service_type - The attribute pds:Service/pds:service_type must be equal to one of the following values 'Service', 'Tool'. - - - - - - pds:Service_Description/pds:parsing_standard_id/pds:parsing_standard_id - The attribute pds:Service_Description/pds:parsing_standard_id must be equal to one of the following values 'WADL', 'WSDL 2.n'. - - - - - - pds:Software/pds:author_list role="warning"/pds:Software.author_list - pds:Software/pds:author_list is deprecated and should not be used. - - - - - - pds:Software/pds:version_id role="warning"/pds:Software.version_id - pds:Software/pds:version_id is deprecated and should not be used. - - - - - - pds:Source_Product_External/doi - The class Source_Product_External must contain at least one of the attributes 'pds:doi' or 'pds:curating_facility'. - - - - - - pds:Source_Product_External/pds:reference_type/pds:reference_type - The attribute pds:Source_Product_External/pds:reference_type must be equal to one of the following values 'data_to_calibrated_source_product', 'data_to_derived_source_product', 'data_to_partially_processed_source_product', 'data_to_raw_source_product', 'data_to_telemetry_source_product'. - - - - - - pds:Source_Product_Internal/pds:reference_type/pds:reference_type - The attribute pds:Source_Product_Internal/pds:reference_type must be equal to one of the following values 'data_to_calibrated_source_product', 'data_to_derived_source_product', 'data_to_partially_processed_source_product', 'data_to_raw_source_product', 'data_to_telemetry_source_product'. - - - - - - pds:Stream_Text role="warning"/pds:Stream_Text.record_delimiter - The value carriage-return line-feed for attribute Stream_Text.record_delimiter is deprecated and should not be used. - - - - - - pds:Stream_Text/pds:parsing_standard_id/pds:parsing_standard_id - The attribute pds:Stream_Text/pds:parsing_standard_id must be equal to one of the following values '7-Bit ASCII Text', 'PDS3', 'UTF-8 Text'. - - - - - - pds:Stream_Text/pds:record_delimiter/pds:record_delimiter - The attribute pds:Stream_Text/pds:record_delimiter must be equal to one of the following values 'Carriage-Return Line-Feed', 'Line-Feed', 'carriage-return line-feed'. - - - - - - pds:Table_Base/pds:offset/pds:offset - The attribute @unit must be equal to one of the following values 'byte'. - - - - - - pds:Table_Binary/pds:record_delimiter role="warning"/pds:Table_Binary.record_delimiter - pds:Table_Binary/pds:record_delimiter is deprecated and should not be used. - - - - - - pds:Table_Character role="warning"/pds:Table_Character.record_delimiter - The value carriage-return line-feed for attribute Table_Character.record_delimiter is deprecated and should not be used. - - - - - - pds:Table_Character/pds:record_delimiter/pds:record_delimiter - The attribute pds:Table_Character/pds:record_delimiter must be equal to one of the following values 'Carriage-Return Line-Feed', 'Line-Feed', 'carriage-return line-feed'. - - - - - - pds:Table_Delimited role="warning"/pds:Table_Delimited.field_delimiter - The value comma for attribute Table_Delimited.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited role="warning"/pds:Table_Delimited.field_delimiter - The value horizontal tab for attribute Table_Delimited.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited role="warning"/pds:Table_Delimited.field_delimiter - The value semicolon for attribute Table_Delimited.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited role="warning"/pds:Table_Delimited.field_delimiter - The value vertical bar for attribute Table_Delimited.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited role="warning"/pds:Table_Delimited.field_delimiter - The value carriage-return line-feed for attribute Table_Delimited.record_delimiter is deprecated and should not be used. - - - - - - pds:Table_Delimited/pds:field_delimiter/pds:field_delimiter - The attribute pds:Table_Delimited/pds:field_delimiter must be equal to one of the following values 'Comma', 'Horizontal Tab', 'Semicolon', 'Vertical Bar', 'comma', 'horizontal tab', 'semicolon', 'vertical bar'. - - - - - - pds:Table_Delimited/pds:parsing_standard_id/pds:parsing_standard_id - The attribute pds:Table_Delimited/pds:parsing_standard_id must be equal to the value 'PDS DSV 1'. - - - - - - pds:Table_Delimited/pds:record_delimiter/pds:record_delimiter - The attribute pds:Table_Delimited/pds:record_delimiter must be equal to one of the following values 'Carriage-Return Line-Feed', 'Line-Feed', 'carriage-return line-feed'. - - - - - - pds:Table_Delimited_Source_Product_External role="warning"/pds:Table_Delimited_Source_Product_External.field_delimiter - The value comma for attribute Table_Delimited_Source_Product_External.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited_Source_Product_External role="warning"/pds:Table_Delimited_Source_Product_External.field_delimiter - The value horizontal tab for attribute Table_Delimited_Source_Product_External.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited_Source_Product_External role="warning"/pds:Table_Delimited_Source_Product_External.field_delimiter - The value semicolon for attribute Table_Delimited_Source_Product_External.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited_Source_Product_External role="warning"/pds:Table_Delimited_Source_Product_External.field_delimiter - The value vertical bar for attribute Table_Delimited_Source_Product_External.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited_Source_Product_External role="warning"/pds:Table_Delimited_Source_Product_External.field_delimiter - The value carriage-return line-feed for attribute Table_Delimited_Source_Product_External.record_delimiter is deprecated and should not be used. - - - - - - pds:Table_Delimited_Source_Product_External/TBD_Identifier - Table_Delimited_Source_Product_External.Field_Delimited does not match the expected number of instances - - pds:Table_Delimited_Source_Product_External/TBD_Identifier - Table_Delimited_Source_Product_External.offset must have a value of '0' - - - - - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/TBD_Identifier - The attribute pds:fields must be 4. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/TBD_Identifier - The attribute pds:groups must be equal to '0'. - - - - - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[1]/TBD_Identifier - The first field of a Table_Delimited_Source_Product_External must have field_number set to 1. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[1]/TBD_Identifier - The first field of a Table_Delimited_Source_Product_External must have maximum_field_length set to 255. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[1]/TBD_Identifier - The first field of a Table_Delimited_Source_Product_External must have data type set to 'ASCII_String'. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[1]/TBD_Identifier - The first field of a Table_Delimited_Source_Product_External must have name set to 'Reference Type'. - - - - - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[2]/TBD_Identifier - The second field of a Table_Delimited_Source_Product_External must have field_number set to 2. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[2]/TBD_Identifier - The second field of a Table_Delimited_Source_Product_External must have data type set to 'ASCII_String'. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[2]/TBD_Identifier - The second field of a Table_Delimited_Source_Product_External must have name set to 'External Source Product Identifier'. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[2]/TBD_Identifier - The second field of a Table_Delimited_Source_Product_External must have maximum_field_length set to 255. - - - - - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[3]/TBD_Identifier - The third field of a Table_Delimited_Source_Product_External must have field_number set to 3. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[3]/TBD_Identifier - The third field of a Table_Delimited_Source_Product_External must have data type set to 'ASCII_String'. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[3]/TBD_Identifier - The third field of a Table_Delimited_Source_Product_External must have name set to 'DOI'. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[3]/TBD_Identifier - The third field of a Table_Delimited_Source_Product_External must have maximum_field_length set to 255. - - - - - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[4]/TBD_Identifier - The fourth field of a Table_Delimited_Source_Product_External must have field_number set to 4. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[4]/TBD_Identifier - The fourth field of a Table_Delimited_Source_Product_External must have data type set to 'ASCII_String'. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[4]/TBD_Identifier - The fourth field of a Table_Delimited_Source_Product_External must have name set to 'Curating Facility'. - - pds:Table_Delimited_Source_Product_External/pds:Record_Delimited/pds:Field_Delimited[4]/TBD_Identifier - The fourth field of a Table_Delimited_Source_Product_External must have maximum_field_length set to 255. - - - - - - pds:Table_Delimited_Source_Product_External/pds:field_delimiter/pds:field_delimiter - The attribute pds:Table_Delimited_Source_Product_External/pds:field_delimiter must be equal to one of the following values 'Comma', 'Horizontal Tab', 'Semicolon', 'Vertical Bar', 'comma', 'horizontal tab', 'semicolon', 'vertical bar'. - - - - - - pds:Table_Delimited_Source_Product_External/pds:parsing_standard_id/pds:parsing_standard_id - The attribute pds:Table_Delimited_Source_Product_External/pds:parsing_standard_id must be equal to the value 'PDS DSV 1'. - - - - - - pds:Table_Delimited_Source_Product_External/pds:record_delimiter/pds:record_delimiter - The attribute pds:Table_Delimited_Source_Product_External/pds:record_delimiter must be equal to one of the following values 'Carriage-Return Line-Feed', 'Line-Feed', 'carriage-return line-feed'. - - - - - - pds:Table_Delimited_Source_Product_External/pds:reference_type/TBD_Identifier - The attribute pds:reference_type must be equal to the value 'table_has_source_products'. - - - - - - pds:Table_Delimited_Source_Product_Internal role="warning"/pds:Table_Delimited_Source_Product_Internal.field_delimiter - The value comma for attribute Table_Delimited_Source_Product_Internal.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited_Source_Product_Internal role="warning"/pds:Table_Delimited_Source_Product_Internal.field_delimiter - The value horizontal tab for attribute Table_Delimited_Source_Product_Internal.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited_Source_Product_Internal role="warning"/pds:Table_Delimited_Source_Product_Internal.field_delimiter - The value semicolon for attribute Table_Delimited_Source_Product_Internal.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited_Source_Product_Internal role="warning"/pds:Table_Delimited_Source_Product_Internal.field_delimiter - The value vertical bar for attribute Table_Delimited_Source_Product_Internal.field_delimiter is deprecated and should not be used. - - pds:Table_Delimited_Source_Product_Internal role="warning"/pds:Table_Delimited_Source_Product_Internal.field_delimiter - The value carriage-return line-feed for attribute Table_Delimited_Source_Product_Internal.record_delimiter is deprecated and should not be used. - - - - - - pds:Table_Delimited_Source_Product_Internal/TBD_Identifier - Table_Delimited_Source_Product_Internal.Field_Delimited does not match the expected number of instances - - pds:Table_Delimited_Source_Product_Internal/TBD_Identifier - Table_Delimited_Source_Product_Internal.offset must have a value of '0' - - - - - - pds:Table_Delimited_Source_Product_Internal/pds:Record_Delimited/TBD_Identifier - The attribute pds:fields must be equal to '2'. - - pds:Table_Delimited_Source_Product_Internal/pds:Record_Delimited/TBD_Identifier - The attribute pds:groups must be equal to '0'. - - - - - - pds:Table_Delimited_Source_Product_Internal/pds:Record_Delimited/pds:Field_Delimited[1]/TBD_Identifier - The first field of a Table_Delimited_Source_Product_Internal must have field_number set to 1. - - pds:Table_Delimited_Source_Product_Internal/pds:Record_Delimited/pds:Field_Delimited[1]/TBD_Identifier - The first field of a Table_Delimited_Source_Product_Internal must have maximum_field_length set to 255. - - pds:Table_Delimited_Source_Product_Internal/pds:Record_Delimited/pds:Field_Delimited[1]/TBD_Identifier - The first field of a Table_Delimited_Source_Product_Internal must have data type set to 'ASCII_String'. - - pds:Table_Delimited_Source_Product_Internal/pds:Record_Delimited/pds:Field_Delimited[1]/TBD_Identifier - The first field of a Table_Delimited_Source_Product_Internal must have name set to 'Reference Type'. - - - - - - pds:Table_Delimited_Source_Product_Internal/pds:Record_Delimited/pds:Field_Delimited[2]/TBD_Identifier - The second field of a Table_Delimited_Source_Product_Internal must have field_number set to 2. - - pds:Table_Delimited_Source_Product_Internal/pds:Record_Delimited/pds:Field_Delimited[2]/TBD_Identifier - The second field of a Table_Delimited_Source_Product_Internal must have data_type set to either 'ASCII_LID' or 'ASCII_LIDVID' or 'ASCII_LIDVID_LID'. - - pds:Table_Delimited_Source_Product_Internal/pds:Record_Delimited/pds:Field_Delimited[2]/TBD_Identifier - The second field of a Table_Delimited_Source_Product_Internal must have name set to 'LIDVID_LID'. - - pds:Table_Delimited_Source_Product_Internal/pds:Record_Delimited/pds:Field_Delimited[2]/TBD_Identifier - The second field of a Table_Delimited_Source_Product_Internal must have maximum_field_length set to 255. - - - - - - pds:Table_Delimited_Source_Product_Internal/pds:field_delimiter/pds:field_delimiter - The attribute pds:Table_Delimited_Source_Product_Internal/pds:field_delimiter must be equal to one of the following values 'Comma', 'Horizontal Tab', 'Semicolon', 'Vertical Bar', 'comma', 'horizontal tab', 'semicolon', 'vertical bar'. - - - - - - pds:Table_Delimited_Source_Product_Internal/pds:parsing_standard_id/pds:parsing_standard_id - The attribute pds:Table_Delimited_Source_Product_Internal/pds:parsing_standard_id must be equal to the value 'PDS DSV 1'. - - - - - - pds:Table_Delimited_Source_Product_Internal/pds:record_delimiter/pds:record_delimiter - The attribute pds:Table_Delimited_Source_Product_Internal/pds:record_delimiter must be equal to one of the following values 'Carriage-Return Line-Feed', 'Line-Feed', 'carriage-return line-feed'. - - - - - - pds:Table_Delimited_Source_Product_Internal/pds:reference_type/TBD_Identifier - The attribute pds:reference_type must be equal to the value 'table_has_source_products'. - - - - - - pds:Target role="warning"/pds:Target.type - The value Calibration for attribute Target.type is deprecated and should not be used. - - pds:Target role="warning"/pds:Target.type - The value Globular Cluster for attribute Target.type is deprecated and should not be used. - - pds:Target role="warning"/pds:Target.type - The value Lunar Sample for attribute Target.type is deprecated and should not be used. - - pds:Target role="warning"/pds:Target.type - The value Meteorite for attribute Target.type is deprecated and should not be used. - - pds:Target role="warning"/pds:Target.type - The value Open Cluster for attribute Target.type is deprecated and should not be used. - - pds:Target role="warning"/pds:Target.type - The value Synthetic Sample for attribute Target.type is deprecated and should not be used. - - pds:Target role="warning"/pds:Target.type - The value Terrestrial Sample for attribute Target.type is deprecated and should not be used. - - - - - - pds:Target/pds:type/pds:type - The attribute pds:Target/pds:type must be equal to one of the following values 'Asteroid', 'Astrophysical', 'Calibration', 'Calibration Field', 'Calibrator', 'Centaur', 'Comet', 'Dust', 'Dwarf Planet', 'Equipment', 'Exoplanet System', 'Galaxy', 'Globular Cluster', 'Laboratory Analog', 'Lunar Sample', 'Magnetic Field', 'Meteorite', 'Meteoroid', 'Meteoroid Stream', 'Nebula', 'Open Cluster', 'Planet', 'Planetary Nebula', 'Planetary System', 'Plasma Cloud', 'Plasma Stream', 'Ring', 'Sample', 'Satellite', 'Sky', 'Star', 'Star Cluster', 'Synthetic Sample', 'Terrestrial Sample', 'Trans-Neptunian Object'. - - - - - - pds:Target_Identification role="warning"/pds:Target_Identification.type - The value Calibration for attribute Target_Identification.type is deprecated and should not be used. - - pds:Target_Identification role="warning"/pds:Target_Identification.type - The value Globular Cluster for attribute Target_Identification.type is deprecated and should not be used. - - pds:Target_Identification role="warning"/pds:Target_Identification.type - The value Lunar Sample for attribute Target_Identification.type is deprecated and should not be used. - - pds:Target_Identification role="warning"/pds:Target_Identification.type - The value Meteorite for attribute Target_Identification.type is deprecated and should not be used. - - pds:Target_Identification role="warning"/pds:Target_Identification.type - The value Open Cluster for attribute Target_Identification.type is deprecated and should not be used. - - pds:Target_Identification role="warning"/pds:Target_Identification.type - The value Synthetic Sample for attribute Target_Identification.type is deprecated and should not be used. - - pds:Target_Identification role="warning"/pds:Target_Identification.type - The value Terrestrial Sample for attribute Target_Identification.type is deprecated and should not be used. - - - - - - pds:Target_Identification/pds:type/pds:type - The attribute pds:Target_Identification/pds:type must be equal to one of the following values 'Asteroid', 'Astrophysical', 'Calibration', 'Calibration Field', 'Calibrator', 'Centaur', 'Comet', 'Dust', 'Dwarf Planet', 'Equipment', 'Exoplanet System', 'Galaxy', 'Globular Cluster', 'Laboratory Analog', 'Lunar Sample', 'Magnetic Field', 'Meteorite', 'Meteoroid', 'Meteoroid Stream', 'Nebula', 'Open Cluster', 'Planet', 'Planetary Nebula', 'Planetary System', 'Plasma Cloud', 'Plasma Stream', 'Ring', 'Sample', 'Satellite', 'Sky', 'Star', 'Star Cluster', 'Synthetic Sample', 'Terrestrial Sample', 'Trans-Neptunian Object'. - - - - - - pds:Telescope/pds:altitude role="warning"/pds:Telescope.altitude - pds:Telescope/pds:altitude is deprecated and should not be used. - - - - - - pds:Telescope/pds:altitude/pds:altitude - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - pds:Telescope/pds:aperture/pds:aperture - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - pds:Telescope/pds:telescope_altitude/pds:telescope_altitude - The attribute @unit must be equal to one of the following values 'AU', 'Angstrom', 'cm', 'km', 'm', 'micrometer', 'mm', 'nm'. - - - - - - pds:Telescope/pds:telescope_latitude/pds:telescope_latitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - pds:Telescope/pds:telescope_longitude/pds:telescope_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - pds:Terminological_Entry/pds:preferred_flag - The attribute pds:preferred_flag must be equal to one of the following values 'true', 'false'. - - - - - - pds:Terminological_Entry/pds:language/pds:language - The attribute pds:Terminological_Entry/pds:language must be equal to one of the following values 'English', 'Russian'. - - - - - - pds:Terminological_Entry/pds:mapping_type/pds:mapping_type - The attribute pds:Terminological_Entry/pds:mapping_type must be equal to one of the following values 'pds4_attribute_replacedby_term', 'pds4_attribute_replaces_column', 'pds4_attribute_replaces_pds3_attribute', 'pds4_attribute_replaces_pds4_attribute'. - - - - - - pds:Terminological_Entry/pds:skos_relation_name/pds:skos_relation_name - The attribute pds:Terminological_Entry/pds:skos_relation_name must be equal to one of the following values 'broadMatch', 'closeMatch', 'exactMatch', 'narrowMatch', 'relatedMatch'. - - - - - - pds:Terminological_Entry_SKOS/pds:model_object_type/pds:model_object_type - The attribute pds:Terminological_Entry_SKOS/pds:model_object_type must be equal to one of the following values 'Attribute', 'Class', 'Keyword', 'Nuance', 'Value'. - - - - - - pds:Terminological_Entry_SKOS/pds:registration_authority/pds:registration_authority - The attribute pds:Terminological_Entry_SKOS/pds:registration_authority must be equal to one of the following values 'PDS3', 'PDS4', 'VICAR'. - - - - - - pds:Terminological_Entry_SKOS/pds:skos_relation_name/pds:skos_relation_name - The attribute pds:Terminological_Entry_SKOS/pds:skos_relation_name must be equal to one of the following values 'broadMatch', 'closeMatch', 'exactMatch', 'narrowMatch', 'relatedMatch'. - - - - - - pds:Time_Coordinates/pds:solar_longitude/pds:solar_longitude - The attribute @unit must be equal to one of the following values 'arcmin', 'arcsec', 'deg', 'hr', 'microrad', 'mrad', 'rad'. - - - - - - pds:Transfer_Manifest role="warning"/pds:Transfer_Manifest.record_delimiter - The value carriage-return line-feed for attribute Transfer_Manifest.record_delimiter is deprecated and should not be used. - - - - - - pds:Transfer_Manifest/pds:record_delimiter/pds:record_delimiter - The attribute pds:Transfer_Manifest/pds:record_delimiter must be equal to one of the following values 'Carriage-Return Line-Feed', 'Line-Feed', 'carriage-return line-feed'. - - - - - - - - - - - pds:Uniformly_Sampled/sampling_parameter_scale - For 'pds:Uniformly_Sampled/pds:sampling_parameter_scale' not equal 'Exponential', 'pds:Uniformly_Sampled/pds:sampling_parameter_base' must not exist. - - pds:Uniformly_Sampled/sampling_parameter_scale - For 'pds:Uniformly_Sampled/pds:sampling_parameter_scale' = 'Exponential', 'pds:Uniformly_Sampled/pds:sampling_parameter_base' must exist. - - pds:Uniformly_Sampled/sampling_parameter_scale - For 'pds:Uniformly_Sampled/pds:sampling_parameter_scale' = 'Exponential', 'pds:Uniformly_Sampled/pds:sampling_parameter_base' must have a value > '0'. - - - - - - pds:Uniformly_Sampled/pds:sampling_parameter_scale/pds:sampling_parameter_scale - The attribute pds:Uniformly_Sampled/pds:sampling_parameter_scale must be equal to one of the following values 'Exponential', 'Linear', 'Logarithmic'. - - - - - - pds:Uniformly_Sampled/pds:sampling_parameters role="warning"/pds:Uniformly_Sampled.sampling_parameters - pds:Uniformly_Sampled/pds:sampling_parameters is deprecated and should not be used. - - - - - - pds:Units_of_Map_Scale role="warning"/pds:Units_of_Map_Scale - pds:Units_of_Map_Scale is deprecated and should not be used. - - - - - - pds:Update role="warning"/pds:Update - pds:Update is deprecated and should not be used. - - - - - - pds:Update/pds:update_purpose role="warning"/pds:Update.update_purpose - pds:Update/pds:update_purpose is deprecated and should not be used. - - - - - - pds:Update/pds:update_purpose/pds:update_purpose - The attribute pds:Update/pds:update_purpose must be equal to one of the following values 'Update Label Metadata', 'Update Supplemental Metadata'. - - - - - - pds:Vector role="warning"/pds:Vector - pds:Vector is deprecated and should not be used. - - - - - - pds:Vector/pds:data_type/pds:data_type - The attribute pds:Vector/pds:data_type must be equal to the value 'ASCII_Real'. - - - - - - pds:Vector/pds:reference_frame_id/pds:reference_frame_id - The attribute pds:Vector/pds:reference_frame_id must be nulled or equal to one of the following values 'ICRF', 'MOON_ME_DE421'. - - - - - - pds:Vector/pds:type/pds:type - The attribute pds:Vector/pds:type must be equal to one of the following values 'Acceleration', 'Pointing', 'Position', 'Velocity'. - - - - - - pds:Vector_Cartesian_3 role="warning"/pds:Vector_Cartesian_3 - pds:Vector_Cartesian_3 is deprecated and should not be used. - - - - - - pds:Vector_Cartesian_3/pds:reference_frame_id/pds:reference_frame_id - The attribute pds:Vector_Cartesian_3/pds:reference_frame_id must be equal to one of the following values 'ICRF', 'MOON_ME_DE421'. - - - - - - pds:Vector_Cartesian_3_Acceleration role="warning"/pds:Vector_Cartesian_3_Acceleration - pds:Vector_Cartesian_3_Acceleration is deprecated and should not be used. - - - - - - pds:Vector_Cartesian_3_Acceleration/pds:reference_frame_id/pds:reference_frame_id - The attribute pds:Vector_Cartesian_3_Acceleration/pds:reference_frame_id must be equal to one of the following values 'ICRF', 'MOON_ME_DE421'. - - - - - - pds:Vector_Cartesian_3_Pointing/pds:reference_frame_id/pds:reference_frame_id - The attribute pds:Vector_Cartesian_3_Pointing/pds:reference_frame_id must be equal to one of the following values 'ICRF', 'MOON_ME_DE421'. - - - - - - pds:Vector_Cartesian_3_Position role="warning"/pds:Vector_Cartesian_3_Position - pds:Vector_Cartesian_3_Position is deprecated and should not be used. - - - - - - pds:Vector_Cartesian_3_Position/pds:reference_frame_id/pds:reference_frame_id - The attribute pds:Vector_Cartesian_3_Position/pds:reference_frame_id must be equal to one of the following values 'ICRF', 'MOON_ME_DE421'. - - - - - - pds:Vector_Cartesian_3_Velocity role="warning"/pds:Vector_Cartesian_3_Velocity - pds:Vector_Cartesian_3_Velocity is deprecated and should not be used. - - - - - - pds:Vector_Cartesian_3_Velocity/pds:reference_frame_id/pds:reference_frame_id - The attribute pds:Vector_Cartesian_3_Velocity/pds:reference_frame_id must be equal to one of the following values 'ICRF', 'MOON_ME_DE421'. - - - - - - pds:Vector_Component role="warning"/pds:Vector_Component - pds:Vector_Component is deprecated and should not be used. - - - - - - pds:Volume_PDS3/pds:archive_status/pds:archive_status - The attribute pds:Volume_PDS3/pds:archive_status must be equal to one of the following values 'ARCHIVED', 'ARCHIVED_ACCUMULATING', 'IN_LIEN_RESOLUTION', 'IN_LIEN_RESOLUTION_ACCUMULATING', 'IN_PEER_REVIEW', 'IN_PEER_REVIEW_ACCUMULATING', 'IN_QUEUE', 'IN_QUEUE_ACCUMULATING', 'LOCALLY_ARCHIVED', 'LOCALLY_ARCHIVED_ACCUMULATING', 'PRE_PEER_REVIEW', 'PRE_PEER_REVIEW_ACCUMULATING', 'SAFED', 'SUPERSEDED'. - - - - - - pds:XML_Schema/offset - XML_Schema.offset must have a value of '0' - - - - - - pds:XML_Schema/pds:parsing_standard_id/pds:parsing_standard_id - The attribute pds:XML_Schema/pds:parsing_standard_id must be equal to one of the following values 'Schematron ISO/IEC 19757-3:2006', 'XML Schema Version 1.1'. - - - - - - pds:Zip/pds:container_type/pds:container_type - The attribute pds:Zip/pds:container_type must be equal to one of the following values 'GZIP', 'LZIP', 'TAR', 'ZIP'. - - - diff --git a/model-lddtool/src/test/resources/github797/PDS4_PDS_1N00.xsd b/model-lddtool/src/test/resources/github797/PDS4_PDS_1N00.xsd deleted file mode 100644 index 8311b03b..00000000 --- a/model-lddtool/src/test/resources/github797/PDS4_PDS_1N00.xsd +++ /dev/null @@ -1,9007 +0,0 @@ - - - - - - - - This XML schema file has been generated from the - Information Model. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The Affiliation class is a container for the - child attributes that describe the affiliation of a - person. - - - - - - - - - - - The Agency class provides a description of an - entity that provides regional or national level governance over - nodes within the federated Planetary Data - System. - - - - - - - - - - The Airborne class provides a description of the - physical object that transports a platform by or through - air. - - - - - - - - - - - The Alias class provides a single alternate name - and identification for this product in this or some other - archive or data system. - - - - - - - - - - - The Alias_List class provides a list of paired - alternate names and identifications for this product in this or - some other archive or data system. - - - - - - - - - The Archival Information Package (AIP) class - defines an Information Package consisting of the Content - Information and the associated Preservation Description - Information (PDI), which is preserved within an archive that - conforms to the Open Archive Information System (OAIS) Reference - Model. - - - - - - - - - - - - - The Array class defines a homogeneous - N-dimensional array of scalars. The Array class is the parent - class for all n-dimensional arrays of scalars. - - - - - - - - - - - - - - - - - - - - - The Array 1D class is the parent class for all - one dimensional array based classes. - - - - - - - - - - - - - - - - - - - - - - - - The Array 2D class is the parent class for all - two dimensional array based classes. - - - - - - - - - - - - - - - - - - - - - - - - The Array 2D Image class is an extension of the - Array 2D class and defines a two dimensional - image. - - - - - - - - - - - - - The Array 2D Map class is an extension of the - Array 2D class and defines a two dimensional - map. - - - - - - - - - - - - - The Array 2D Spectrum class is an extension of - the Array 2D class and defines a two dimensional - spectrum. - - - - - - - - - - - - - The Array 3D class is the parent class for all - three dimensional array based classes. - - - - - - - - - - - - - - - - - - - - - - - - The Array 3D Image class is an extension of the - Array 3D class and defines a three dimensional - image. - - - - - - - - - - - - - - - - - - - - - - - - The Array 3D Movie class is an extension of the - Array 3D class and defines a movie as a set of two dimensional - images in a time series. - - - - - - - - - - - - - - - - - - - - - - - - The Array 3D Spectrum class is an extension of - the Array 3D class and defines a three dimensional - spectrum. - - - - - - - - - - - - - - - - - - - - - - - - The Axis Array class is used as a component of - the array class and defines an axis of the - array. - - - - - - - - - - - - - - The Band_Bin class specifies the characteristics - of an individual spectral band in a spectral - qube. - - - - - - - - - - - - - - - - - - The Band_Bin_Set class contains the spectral - characteristics for all the spectral bands in a - qube. - - - - - - - - - The Bundle class describes a collection of - collections. - - - - - - - - - - The Bundle Member Entry class provides a member - reference to a collection. - - - - - - - - - - - - - - The Byte Stream class defines a stream of - bytes. - - - - - - - - - - - The Checksum_Manifest class defines a two column - table for file references and checksums. - - - - - - - - - - - - - The Citation_Information class provides specific - fields often used in citing the product in journal articles, - abstract services, and other reference - contexts. - - - - - - - - - - - - - - - - - - - - The Collection class provides a description of a - set of products. - - - - - - - - - - The Composite Structure class provides a general - framework for defining a structure that consists of two or more - simpler structures - - - - - - - - - - - - - - The Context Area provides context information - for a product. - - - - - - - - - - - - - - - - The DD_Associate_External_Class class allows the - definition of permissible values in Ingest_LDD for attributes - defined in external namespaces. - - - - - - - - - - - - - The DD_Association class defines the association - between two classes or a class and an attribute in a data - dictionary. - - - - - - - - - - - - - - - - The DD_Association_External class defines the - association between classes and attributes within the local data - dictionary and those external to the local data - dictionary. - - - - - - - - - - - - - The DD_Attribute class defines an attribute for - a data dictionary. - - - - - - - - - - - - - - - - - - The DD_Attribute_Extended class allows the - extension of an existing attribute. - - - - - - - - - - - - - - The DD_Attribute_Full class provides a more - complete definition of an attribute in the data - dictionary. - - - - - - - - - - - - - - - - - - - - - - - - The DD Attribute Reference class provides a - reference to an attribute using a namespace identifier and the - attribute name. - - - - - - - - - - The DD_Class class defines a class for a data - dictionary. - - - - - - - - - - - - - - - - - - - - - - The DD_Class_Extended class allows the extension - of an existing class. - - - - - - - - - - - - - The DD_Class_Full class provides a more complete - definition of a class for a data dictionary. - - - - - - - - - - - - - - - - - - - - - - - The DD Class Reference class provides a - reference to a class using a namespace identifier and the class - name. - - - - - - - - - - The DD_Context_Value_List class identifies an - attribute and its relative xpath for the definition of - permissible values and their meanings. - - - - - - - - - - - The DD_Permissible_Value class lists permissible - values and their meanings. - - - - - - - - - - - The DD_Permissible_Value_Full class lists - permissible values, their meanings, and the dates when - active. - - - - - - - - - - - - - The DD_Rule class defines a Schematron rule for - a data dictionary. - - - - - - - - - - - - - - The DD_Rule_Statement class defines a Schematron - rule statement. - - - - - - - - - - - - - The DD_Value_Domain class defines an attribute's - permissible values and their constraints. - - - - - - - - - - - - - - - - - - - The DD_Value_Domain_Full class provides a more - complete definition of a attribute's value - domain. - - - - - - - - - - - - - - - - - - - - The Dissemination Information Package Deep - Archive class is an Information Package derived from one or more - AIPs and is received by the National Space Science Data Center - (NSSDC). - - - - - - - - - - - - - The Data Set PDS3 class is used to capture the - data set information from the PDS3 Data Set - Catalog. - - - - - - - - - - - - - - - - - - - - - - - The Discipline area allows the insertion of - discipline specific metadata. - - - - - - - - - - - The Display_2D_Image class provides attributes - to enable the display of a 2 dimensional - image. - - - - - - - - - - The Dissemination Information Package (DIP) - class defines an Information Package, derived from one or more - AIPs, that is received by a consumer. - - - - - - - - - - - - - The Document class describes a - document. - - - - - - - - - - - - - - - - - - - - - - - A Document Edition is one complete version of - the document in a set of files that is distinguished by - language, a unique assemblage of file formats, or some other - criteria. - - - - - - - - - - - - - - The Document File class describes a file which - is a part of a document. - - - - - - - - - - - - - - The Element Array class is used as a component - of the array class and defines an element of the - array. - - - - - - - - - - - - The Encoded_Audio class is used for files - containing audio data in standard formats, such as - WAV. - - - - - - - - - - - - - - - - - - - The Encoded Binary class describes a binary - encoded byte stream. This class is used to describe files in the - repository that are being registered using - Product_File_Repository. - - - - - - - - - - - - - - - - - - - The Encoded Byte Stream class defines byte - streams that must be decoded by software before use. These byte - streams must only use standard encodings. The Encoded Byte - Stream class is the parent class for all encoded byte - streams. - - - - - - - - - - - - - - - - The Encoded External class describes an encoded - byte stream that has been encoded using an encoding scheme that - is compliant to an external standard. - - - - - - - - - - - - - - - - - - - The Encoded Header class describes a header that - has been encoded using an encoding scheme that is compliant to - an external standard. - - - - - - - - - - - - - - - - - - - The Encoded Image class is used for ancillary - images in standard formats, such as JPEG. - - - - - - - - - - - - - - - - - - - The Encoded Native class describes a binary - encoded byte stream. This class is used to describe data objects - for Product_Native. - - - - - - - - - - - - - - - - - - - The Encoded_Video class is used for files - containing video with or without audio data in standard MPEG-4 - format. - - - - - - - - - - - - - - - - - - - The External_Reference class is used to - reference a source outside the PDS registry - system. - - - - - - - - - - - The External_Reference_Extended class is used to - reference a source outside the PDS registry system. This - extension is used in the local data - dictionary. - - - - - - - - - - - - - - The Facility class provides a name and address - for a terrestrial observatory or laboratory. - - - - - - - - - - - - - The Field class defines a field of a record and - is the parent class of all specific field classes.The Field - class defines a field of a record or a field of a group and is - the parent class of all specific field - classes. - - - - - - - - - - The Field_Binary class defines a field of a - binary record or a field of a binary group. - - - - - - - - - - - - - - - - - - - - - - - The Field_Bit class provides parameters for - extracting one field out of a string of bytes which contains - packed data (that is, data values either smaller than a single - byte, or crossing byte boundaries, or both. - - - - - - - - - - - - - - - - - - - - - - - The Field_Character class defines a field of a - character record or a field of a character - group. - - - - - - - - - - - - - - - - - - - - - - - The Field_Delimited class defines a field of a - delimited record or a field of a delimited - group. - - - - - - - - - - - - - - - - - - - - - The Field Statistics class provides a set of - metrics for a column formed by a field in a repeating - record. - - - - - - - - - - - - - - - The File class consists of attributes that - describe a file in a data store. - - - - - - - - - - - - - - - - The File_Area class defines a File and its - component data objects. - - - - - - - - The File Area Ancillary class describes a file - and one or more tagged_data_objects contained within the - file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The File Area Binary class describes a file that - contains an encoded byte stream. - - - - - - - - - - - - - - The File Area Browse class describes a file and - one or more tagged_data_objects contained within the - file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The File Area Checksum Manifest class describes - a file that contains a two column table for file references and - checksums. - - - - - - - - - - - - - - The File Area Encoded Image class describes a - file that contains an Encoded Image object. - - - - - - - - - - - - - - The File Area External class describes a file - and one or more tagged_data_objects contained within the - file. - - - - - - - - - - - - - - The File Area Inventory class describes a file - and an inventory consisting of references to - members. - - - - - - - - - - - - - - The File Area Metadata class describes a table - which provides new, and/or improved, metadata. All field names - provided must be attributes defined in PDS4, either in the - common dictionary, or in a PDS4 discipline or mission - dictionary. - - - - - - - - - - - - - - - - - - The File Area Native describes - tagged_data_objects collected from an - instrument. - - - - - - - - - - - - - - - - The File Area Observational class describes, for - an observational product, a file and one or more - tagged_data_objects contained within the file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The File Area Observational Supplemental class - describes, for an observational product, additional files and - tagged_data_objects contained within the file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The File Area SIP Deep Archive class describes - the File Area for the Submission Information Package (SIP) for - the NASA planetary science deep archive. - - - - - - - - - - - - - - The File Area SPICE Kernel class describes a - file that contains a SPICE Kernel object. - - - - - - - - - - - - - - The File Area Service Description class - describes a file that contains a service - description. - - - - - - - - - - - - - - The File Area Text class describes a file that - contains a text stream object. - - - - - - - - - - - - - - The File Area Transfer Manifest class describes - a file that contains a two column table that maps the logical - identifiers and version ids of products to their file - specification names. - - - - - - - - - - - - - - The File Area Update class is a File Area that - describes a file that contains one or more digital objects used - to provide additional metadata for registered - products. - - - - - - - - - - - - - - - - - - The File Area XML Schema class describes a file - that contains a resource used for the PDS4 implementation into - XML. - - - - - - - - - - - - - - The Funding_Acknowledgement class cites a - funding source which supported production of the archival - data. - - - - - - - - - - - - The Group class defines a group of (repeating) - fields and, possibly, (sub) groups; it is the parent class of - all specific group classes. - - - - - - - - - - - - - - The Group_Field_Binary class allows a group of - table fields. - - - - - - - - - - - - - - - - - - The Group_Field_Character class allows a group - of table fields. - - - - - - - - - - - - - - - - - - The Field_Group_Delimited class allows a group - of delimited fields. - - - - - - - - - - - - - - - - The Header class describes a data object - header. - - - - - - - - - - - - - - - - - - - The identification area consists of attributes - that identify and name an object. - - - - - - - - - - - - - - - - - The Information Package class defines the - Information Package as described in the OAIS Reference Model and - is the parent class of all specific IP - classes. - - - - - - - - - The Information_Package_Component class - associates a Bundle, Collections or Basic Products with Checksum - and Storage Manifests. - - - - - - - - - - - - - - The Information Package Component Deep Archive - class is an Information Package Component for the NASA planetary - science deep archive. - - - - - - - - - - - - - - - The Ingest_LDD class provides a form for - collecting class and attribute definitions. - - - - - - - - - - - - - - - - - - - - - - - The Instrument class provides a description of a - physical object that collects data. - - - - - - - - - - - - - - - - The Instrument Host class provides a description - of the physical object upon which an instrument is - mounted. - - - - - - - - - - - - - - - The Instrument Host class provides a description - of the phyiscal object upon which an instrument is mounted. This - class captures the PDS3 catalog Instrument Host - information. - - - - - - - - - - - - The Instrument class provides a description of a - phyiscal object that collects data. This class captures the PDS3 - catalog Instrument information. - - - - - - - - - - - - - - The Internal_Reference class is used to - cross-reference other products in PDS4-compliant registries of - PDS and its recognized international partners. - - - - - - - - - - - - - - The Inventory class defines the inventory for - members of a collection. - - - - - - - - - - - - - A set of experiments and/or observations with a - clearly defined purpose. - - - - - - - - - - - - - The Investigation_Area class provides - information about an investigation (mission, observing campaign - or other coordinated, large-scale data collection - effort). - - - - - - - - - - - The license information are describes the - license, terms, or other usage information that this product - accompanies. - - - - - - - - - - - The List_Author class is a container for the - classes that describe each author. - - - - - - - - - - The List_Contributor class is a container for - the classes that describe each contributor. Contributors are - not authors or editors. - - - - - - - - - - - - - - The List_Editor class is a container for the - classes that describe each editor. - - - - - - - - - - - - - - The Local_ID_Reference class defines a one - directional relationship by referencing another description - object in the label. - - - - - - - - - - - The Local_ID_Relation class defines a one - directional relationship between two description objects in the - label. - - - - - - - - - - - - The Local Internal_Reference class is used to - cross-reference other Description Objects in a PDS4 - label. - - - - - - - - - - - The Manifest SIP Deep Archive class is a Table - Delimited for the NASA planetary science deep archive's - Submission Information Package (SIP). - - - - - - - - - - - - - - - - - - - - - - - - The mission area allows the insertion of mission - specific metadata. - - - - - - - - - - - The Mission PDS3 class describes an activity - involved in the collection of data. This class captures the PDS3 - catalog Mission information. - - - - - - - - - - - - - The Modification_Detail class provides the - details of one round of modification for the product. The - first, required, instance of this class documents the date the - product was first registered. - - - - - - - - - - - The Modification_History class tracks the - history of changes made to the product once it enters the - registry system. - - - - - - - - - The NSSDC Information class provides - identification information for data submitted to the - NSSDC. - - - - - - - - - - The Node class provides a description of an - entity that provides local governance within the federated - Planetary Data System. - - - - - - - - - - - The Object Statistics class provides a set of - values that provide metrics about the object. - - - - - - - - - - - - - - - - - - - The observation area consists of attributes that - provide information about the circumstances under which the data - were collected. - - - - - - - - - - - - - - - - - - - - The Observing System class describes the entire - suite used to collect the data. - - - - - - - - - - - The Observing System Component class describes - one or more subsystems used to collect data. - - - - - - - - - - - - - The Organization class is a container for the - child attributes that describe an organization, institution, or - company. - - - - - - - - - - - - - The Other class provides a description of - activities involved in the collection of data which are not - otherwise modeled. - - - - - - - - - The PDS Affiliate class provides a description - of a person who has an association with the planetary science - community and has access to PDS resources not normally allowed - to the general public. - - - - - - - - - - - - - - - - - - - - The PDS_Guest class is the default description - of a person who has an association with the planetary science - community and who has the most limited access to PDS - resources. - - - - - - - - - - - - - The Packed_Data_Fields class contains field - definitions for extracting packed data from the associated byte - string field. - - - - - - - - - - - The Parent_Organization class is a container for - the child attributes and classes that describe the parent - organization. - - - - - - - - - - - The Parsable Byte Stream class defines byte - streams that have standard parsing rules. The Parsable Byte - Stream class is the parent class for all parsable byte - streams. - - - - - - - - - - - - - - - - The Person class is a container for the child - attributes and classes that describe a person. - - - - - - - - - - - - - - - The Primary_Result_Summary class provides a - high-level description of the types of products included in the - collection or bundle - - - - - - - - - - - - - - - A Product is a uniquely identified object that - is managed by a registry/repository. It consists of one or more - tagged data objects. - - - - - - - - - The Product AIP class defines a product for the - Archival Information Package. - - - - - - - - - - - - - - - The Product_Ancillary class defines a product - that contains data that are supplementary to observational data - and cannot reasonably be associated with any other - non-observational data class. Use of Product_Ancillary must be - approved by the curating node. - - - - - - - - - - - - - - - The Product Attribute Definition provides an - attribute definition in XML encoding. - - - - - - - - - - - - - - The Product Browse class defines a product - consisting of one encoded byte stream digital - object. - - - - - - - - - - - - - - - A Product_Bundle is an aggregate product and has - a table of references to one or more - collections. - - - - - - - - - - - - - - - - - The Product Class Definition provides a class - definition in XML encoding. - - - - - - - - - - - - - - A Product_Collection has a table of references - to one or more basic products. The references are stored in a - table called the inventory. - - - - - - - - - - - - - - - - The Product Context class describes something - that provides context and provenance for an observational - product. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The Product DIP class defines a product for the - Dissemination Information Package. - - - - - - - - - - - - - - - The Product DIP_Deep_Archive class defines a - product for the Dissemination Information Package for the deep - archive. - - - - - - - - - - - - - - - The Data Set PDS3 product is used to create - proxy labels for the data sets in the PDS3 Data Set - catalog. - - - - - - - - - - - - - - A Product Document is a product consisting of a - single logical document that may comprise one or more document - editions. - - - - - - - - - - - - - - - The Product External class defines a product - that does not reside within the PDS archives. - - - - - - - - - - - - - - - The Product File Repository class consists of a - single text file. This product is used to register a file in a - repository. - - - - - - - - - - - - - - The Product File Text consists of a single text - file with ASCII character encoding. - - - - - - - - - - - - - - An Instrument Host product describes an - instrument host. This product captures the PDS3 catalog - instrument host information. - - - - - - - - - - - - - - An Instrument product describes an instrument. - This product captures the PDS3 catalog instrument - information. - - - - - - - - - - - - - - The Product_Metadata_Supplemental class is used - to provide new, and/or improved, metadata for some or all of the - basic products in a single collection. More than one - Product_Metadata_Supplemental may apply to any given - collection. - - - - - - - - - - - - - - An Mission product describes a mission. This - product captures the PDS3 catalog mission - information. - - - - - - - - - - - - - - Product_Native is used to describe digital - objects in the original format returned by the spacecraft or - experimental system when that format cannot be described using - one of the PDS4 formats specified for observational data (tables - or arrays, excluding Array_1D). - - - - - - - - - - - - - - - A Product_Observational is a set of one or more - information objects produced by an observing - system. - - - - - - - - - - - - - - - - The Product Proxy PDS3 class defines a product - with enough information to register a PDS3 data - product. - - - - - - - - - - - - - - The Product SIP class defines a product for the - Submission Information Package. - - - - - - - - - - - - - - - The Product SIP Deep Archive class defines a - Submission Information Package (SIP) for the NASA planetary - science deep archive. - - - - - - - - - - - - - - - The Product SPICE Kernel class defines a SPICE - kernel product. - - - - - - - - - - - - - - - The Product Service class defines a product for - registering services. Service descriptions from this product are - used to register services as intrinsic registry - objects. - - - - - - - - - - - - - - - Product Software is a product consisting of a - set of one or more software formats. - - - - - - - - - - - - - - - - - The Product_Subscription_PDS3 class provides the - list of subscriptions for a PDS3 subscriber. - - - - - - - - - - - - - - A target product describes a target. This - product captures a reduced set of the PDS3 catalog target - information. - - - - - - - - - - - - - - The Product Thumbnail class defines a product - consisting of one encoded byte stream digital - object. - - - - - - - - - - - - - - The Product Update class defines a product - consisting of update information and optional references to - other products. - - - - - - - - - - - - - - - A Product Volume PDS3 product captures the PDS3 - volume information. - - - - - - - - - - - - - - A Product Volume Set PDS3 product captures the - PDS3 volume set information. - - - - - - - - - - - - - - The Product_XML_Schema describes a resource - used for the PDS4 implementation into XML. - - - - - - - - - - - - - - - The Product_Zipped is a product with references - to other products. The referenced products and all associated - products and files are packaged into a single ZIP - file. - - - - - - - - - - - - - - - The Property Map class defines a table - consisting of a set of data elements and their values. The data - elements in this table are considered to be locally defined and - not subject to standards except for nomenclature - rules. - - - - - - - - - - - - - - - - The property map entry consists of a property - name and one or more values. - - - - - - - - - - - - The Property Maps class defines a collection of - one or more related Property Maps. - - - - - - - - - - - - - - The Quaternion class models a mathematical - construct that consists of four individual numeric components. - Quaternions are a convenient mechanism for encapsulating - orientation information since they require only four units of - numeric storage, as opposed to the nine needed for a rotation - matrix. - - - - - - - - - - - - - The Quaternion_Component class provides a - component of a quaternion. - - - - - - - - - - - - - The Record class defines a record of a file and - is the parent class of all specific record - classes. - - - - - - - - - - The Record_Binary class is a component of the - table class and defines a record of the table. - - - - - - - - - - - - - - - - - The Record_Character class is a component of the - table class and defines a record of the table. - - - - - - - - - - - - - - - - - The Record_Delimited class is a component of the - delimited table (spreadsheet) class and defines a record of the - delimited table. - - - - - - - - - - - - - - - - - The Reference_List class provides general - references, cross-references, and source products for the - product. References cited elsewhere in the label need not be - repeated here. - - - - - - - - - - - - The Resource class provides a description of a - web resource. - - - - - - - - - - - - The SIP Deep Archive class is a Submission - Information Package (SIP) for the NASA planetary science deep - archive. - - - - - - - - - - - - - The SPICE Kernel class describes a SPICE - object. - - - - - - - - - - - - - - The Science_Facets class contains the - science-related search facets. It is optional and may be - repeated if an product has facets related to, for example, two - different disciplines (as defined by the discipline_name facet). - Note that Science_Facets was modeled with Discipline_Facets as a - component and Discipline_Facets was modeled with Group_Facet1 - and Group_Facet2 as components. This dependency hierarchy was - flattened and only Science_Facets exists in the - schema. - - - - - - - - - - - - - - - The Service class provides a description of a - web service or tool. - - - - - - - - - - - - - - - - - - - - The Service Description class defines a file - that contains a standardized service - specification. - - - - - - - - - - - - - - - - - - - The Software class describes a software - product - - - - - - - - - - - - - - - - - - The Software Binary class provides a description - of a software code that is stored as a compiled binary - file. - - - - - - - - - - - - - - - The Software Script class provides a description - of a software code that is stored as a script. - - - - - - - - - - - - The Software Source class provides a description - of a software code that is stored as source - code. - - - - - - - - - - - - - - - - - - The Source_Product_External class is used to - reference one or more source products (a product containing - input data for the creation of this product) outside the PDS4 - Registry that have a common reference_type, doi, curating - facility, and/or description. At least one of doi or curating - facility must be provided. All source products listed within a - single Source_Product_External class must correspond to the same - doi and/or curating facility. - - - - - - - - - - - - - The Source_Product _Internal class is used to - reference one or more source products in the PDS4 registry - system. A source product contains input data for the creation of - this product. - - - - - - - - - - - The Special Constants class provides a set of - values used to indicate special cases that occur in the - data. - - - - - - - - - - - - - - - - - - - - The Stream text class defines a text - object. - - - - - - - - - - - - - The Submission Information Package (SIP) class - is an Information Package that is delivered by a Data Provider - to an archive that conforms to the Open Archive Information - System (OAIS) Reference Model for use in the construction of one - or more AIPs. - - - - - - - - - - - - - The Subscriber PDS3 class provides the name of - the subscriber and their subscription list. - - - - - - - - - - - The Table Base class defines a heterogeneous - repeating record of scalars. The Table Base class is the parent - class for all heterogeneous repeating record of - scalars. - - - - - - - - - - - - - - - The Table Binary class is an extension of table - base and defines a simple binary table. - - - - - - - - - - - - - - - The Table Character class is an extension of - table base and defines a simple character - table. - - - - - - - - - - - - - - - The Table_Delimited class defines a simple table - (spreadsheet) with delimited fields and - records. - - - - - - - - - - - - - - - - - The Table_Delimited_Source_Product_External - class defines a table that references many source products - (products containing input data for the creation of this - product) outside the PDS4 Registry that have a common - reference_type, doi, curating facility, and/or description. At - least one of doi or curating facility must be provided for each - source product. - - - - - - - - - - - - - The Table_Delimited_Source_Product_Internal - class defines a table that references many source products - (products containing input data for the creation of this - product) in the PDS4 registry system. A source product contains - input data for the creation of this product. - - - - - - - - - - - - - The Target class provides a description of a - physical object that is the object of data - collection. - - - - - - - - - - - The Target_Identification class provides - detailed target identification information. - - - - - - - - - - - - - The Target class provides a description of a - phyiscal object that is the object of data collection. This - class captures the PDS3 catalog Target - information. - - - - - - - - - - - - - - The Telescope class provides coordinates and - parameters for terrestrial, ground-based - telescopes. - - - - - - - - - - - - - - - TheTerm_Map_SKOS class is used to collect a set - of terms and definitions for a SKOS ontology. - - - - - - - - - The terminological_entry class provides the name - (designation) and definition of the attribute in a specified - natural language. - - - - - - - - - - - - - - - - The terminological_entry_SKOS class provides - terms and definitions for a SKOS ontology. - - - - - - - - - - - - - - - - - - - The Time_Coordinates class provides a list of - time coordinates. - - - - - - - - - - - - - The Transfer_Manifest class defines a table that - maps product LIDVIDs to the file_specificaition_names of the - products' XML label files. - - - - - - - - - - - - - - - - - - - - - The Type_List_Area allows the insertion of a - Type List. - - - - - - - - - - - The Uniformly_Sampled class provides parameters - for a uniformly sampled table. - - - - - - - - - - - - - - - - The Update class consists of update - information. - - - - - - - - - - - - The Update Entry class provides the date and - description of an update. - - - - - - - - - - - - The Vector class provides the components of - either a velocity or position vector. - - - - - - - - - - - - - - - - The Vector_Cartesian_3_Base class is the parent - class of 3 element Cartesian vectors. - - - - - - - - - - - - - The Vector_Cartesian_3_Acceleration class is a 3 - element Cartesian vector for acceleration - coordinates. - - - - - - - - - - - - - - - - - The Vector_Cartesian_3_Pointing class is a 3 - element normalized Cartesian vector for - pointing. - - - - - - - - - - - - - - - - The Vector_Cartesian_3_Position class is a 3 - element Cartesian vector for position - coordinates. - - - - - - - - - - - - - - - - - The Vector_Cartesian_3_Velocity class is a 3 - element Cartesian vector for velocity - coordinates. - - - - - - - - - - - - - - - - - The Vector_Component class provides a component - of a vector. - - - - - - - - - - - - - The Volume_PDS3 class is used to capture the - volume information from the PDS3 Data Set - Catalog. - - - - - - - - - - - - - - - - - - - - - The Volume_Set_PDS3 class is used to capture the - volume set information from the PDS3 Data Set - Catalog. - - - - - - - - - - - - - The XML Schema class defines a resource used for - the PDS4 implementation into XML. - - - - - - - - - - - - - The Zip class describes a zip - file. - - - - - - - - - This section contains the simpleTypes that provide more constraints - than those at the base data type level. The simpleTypes defined here build on the base data - types. This is another component of the common dictionary and therefore falls within the - common namespace. - - - - - - The abstract desc attribute provides a summary - of a text, scientific article, or document. - - - - - - - - - The abstract flag attribute indicates whether or - not the class can be instantiated. Abstract flag is only - included if a value of 'true' is desired and indicates that the - class is abstract and cannot be used in a - label. - - - - - - - - The acknowledgement_text attribute is a - character string which recognizes another's contribution, - authority, or right. - - - - - - - - - The address attribute provides a mailing - address. - - - - - - - - - The affiliation type attribute describes the - type of relationship an individual has with the PDS. - Individuals with PDS affiliations are generally listed in the - PDS Phone Book. - - - - - - - - - - The aip_label_checksum attribute provides the - checksum for the Archival Information Package - label. - - - - - - - - - - - - The aip_lidvid attribute provides the - logical_identifier plus version_id, which uniquely identifies a - Archival Information Package. - - - - - - - - - - - - The alternate_designation attribute provides - aliases. - - - - - - - - - - The alternate_id attribute provides an - additional identifier supplied by the data - provider. - - - - - - - - - - The telephone_number attribute provides a - telephone number in international notation in compliance with - the E.164 telephone number format - recommendation. - - - - - - - - - - The alternate _title attribute provides an - alternate title for the product. - - - - - - - - - - - - - - - - - The altitude attribute provides the height of - anything above a given reference plane. - - - - - - - - - - - - - - - - - - The aperture attribute provides a measure of the - effective collecting area of the telescope -- its diameter (if - single and circular) or its equivalent diameter (if non-circular - and/or an array). For purposes of this definition, aperture - efficiency is assumed to be 100 percent. - - - - - - - - - - - The ARCHIVE_STATUS attribute indicates the stage - to which a data set has progressed in the archiving process, - from IN QUEUE through ARCHIVED. It can also take on the values - SUPERSEDED or SAFED, which indicate that the data set is not - part of the active archive. ACCUMULATING can be appended to some - values to indicate that the data set is incomplete and/or that - not all components have reached the stage given by the root - value; ACCUMULATING would be used, for example, when the archive - is being delivered incrementally, as from a mission that lasts - many months or years. - - - - - - - - - - The archive status note attribute provides a - comment about the archive status. - - - - - - - - - - The attribute_concept attribute provides the - type of information (classification) conveyed by the attribute - -- e.g., stop_date_time has attribute_concept = - date_time. - - - - - - - - - - The attribute_name attribute provides the common - name by which an attribute is known. - - - - - - - - - - The attribute_relative_xpath attribute provides - a location path for an attribute within a tree representation of - an XML document. The location path includes the attribute - name. - - - - - - - - - - The author_list attribute contains a - semi-colon-separated list of names of people to be cited as - authors of the associated product. The general format for - individual names is: SURNAME, GIVEN NAME(s). Initials may be - used in lieu of given name(s). If the name contains a suffix - ("Jr.", "Sr.", "III", etc.), the suffix is placed before the - comma (,) -- e.g., Johnson Jr., Earl P. Do not include the word - "and" before the final author. All authors should be listed - explicitly - do not elide the list using "et - al". - - - - - - - - - The axes attribute provides a count of the - axes. - - - - - - - - - - - The axis_index_order attribute provides the axis - index that varies fastest with respect to storage - order. - - - - - - - - - - The axis_name attribute provides a word or - combination of words by which the axis is - known. - - - - - - - - - - The band_number attribute provides a number - corresponding to the band in the spectral qube. The band number - is equivalent to the instrument band number. - - - - - - - - - - - - - - - - - - The band_width attributes provides the width, at - half height, of the band. - - - - - - - - - - - The bit_fields attribute provides the number of - defined bit fields (Field_Bit definitions) within the - Packed_Data_Field. - - - - - - - - - - - The bit mask attribute is a series of ASCII - binary digits identifying the active bits in a value; it has - exactly the same number of bits as the array element to which it - is applied. The bit mask must be specified from most significant - to least significant bit (left to right). - - - - - - - - - - - The bundle_type attribute provides a - classification for the bundle. - - - - - - - - - - The category attribute identifies the type of - function that the tool or service performs. - - - - - - - - - - - - - - - - - The center_wavelength attribute provides the - wavelength or frequency describing the center of a bin along the - band axis of a spectral qube. When describing data from a - spectrometer, the value corresponds to the peak of the response - function for a particular detector and/or grating - position. - - - - - - - - - - - The checksum manifest checksum provides the - checksum for the checksum manifest file. - - - - - - - - - - - - The checksum type attribute provides the name of - the checksum algorithm used to calculate the checksum - value. - - - - - - - - - - The citation_text attribute provides a character - string containing a literature or other citation in sufficient - detail that the material could be located in PDS or - elsewhere. - - - - - - - - - The class_name attribute provides the common - name by which the class is identified, as well as the class - within which the attribute is used. - - - - - - - - - - The collection_type attribute provides a - classification for the collection. - - - - - - - - - - The comment attribute is a character string - expressing one or more remarks or thoughts relevant to the - object. - - - - - - - - - The compile note attribute provides a brief - statement giving particulars about the compilation of the - software source. - - - - - - - - - The conceptual_domain attribute provides the - domain to which the value has been assigned. - - - - - - - - - - The confidence_level_note attribute is a text - field which characterizes the reliability of data within a data - set or the reliability of a particular programming algorithm or - software component. Essentially, this note discusses the level - of confidence in the accuracy of the data or in the ability of - the software to produce accurate results. - - - - - - - - - The constant value attribute provides the value - to be used if an attribute is static. - - - - - - - - - - The container type attribute indicates the - method used to package the components. - - - - - - - - - - The contributor_type attribute provides the type - of contribution made by the identified - resource. - - - - - - - - - - The coordinate_source attribute provides the - reference figure or datum. - - - - - - - - - - The copyright attribute is a character string - giving information about the exclusive right to make copies, - license, and otherwise exploit an object, whether physical or - digital. - - - - - - - - -country - - - - - - - - - - The creation_date_time attribute provides a date - and time when the object was created. - - - - - - - - - The curating_facility attribute provides a - unique name or identifier for the curating facility maintaining - the source product. - - - - - - - - - - The curating_node_id attribute provides the id - of the node currently maintaining the data set or volume and is - responsible for maintaining catalog - information. - - - - - - - - - - The data_regime attribute provides the - wavelength (or an analogous concept for things like particle - detectors) of the observations, stated as a - category. - - - - - - - - - - The data_set_desc attribute describes the - content and type of a data set and provides information required - to use the data (such as binning information). - - - - - - - - - The data set id provides a formal name used to - refer to a data set. - - - - - - - - - - The data_set_name attribute provides the full - name given to a data set or a data product. The data_set_name - typically identifies the instrument that acquired the data of - that instrument Example value data_set_id. Note This attribute - is defined in the AMMOS Magellan catalog as an alias for - file_name to provide backward compatibility - - - - - - - - - - The data_set_release_date attribute provides the - date when a data set is released by the data producer for - archive or publication. In many systems this represents the end - of a proprietary or validation period. Formation rule In AMMOS - identify the date at which a product may be released to the - general public from proprietary access. AMMOS-related systems - should apply this attribute only to proprietary - data. - - - - - - - - - - A one line description of the data - set - - - - - - - - - The data_type attribute provides the hardware - representation used to store a value in - Element_Array. - - - - - - - - - - The date_time attribute provides the date and - time of an event. - - - - - - - - - The definition attribute provides a statement, - picture in words, or account that defines the - term. - - - - - - - - - The description attribute provides a statement, - picture in words, or account that describes or is otherwise - relevant to the object. - - - - - - - - - The detector_number attribute provides the - spectrometer detector number corresponding to a band of a - spectral qube. Detector numbers are usually assigned - consecutively from 1, in order of increasing - wavelength. - - - - - - - - - - - The dictionary_type attribute provides the name - of a dictionary category. - - - - - - - - - - The directory_path_name attribute provides a - sequence of names that locates a directory in a hierarchy of - directories. - - - - - - - - - - The display_full_name attribute provides the - full name of the person being identified in a human readable - format inclusive of any suffixes or additional identifying - information -- e.g., Lord Andres Felipe Alzate Lopera, - Jr. - - - - - - - - - - The document_editions attribute provides a count - of the total number of complete, distinct editions of the - document. - - - - - - - - - - - The document_title attribute provides the full - name of the published document. This optional attribute is used - only if the title in the identification area of the document - product is not sufficient. - - - - - - - - - The document_standard_id attribute provides the - formal name of a standard used for the structure of a document - file. - - - - - - - - - - The doi attribute provides the Digital Object - Identifier for an object, assigned by the appropriate DOI System - Registration Agency. - - - - - - - - - - The radial "zone" or "shell" of the target for - which the observations were collected or which are represented - in the product(s). The value may depend on wavelength_range and - size of the target. - - - - - - - - - - The edition name attribute provides a name by - which the edition is known. - - - - - - - - - - The editor_list attribute contains a - semi-colon-separated list of names of people to be cited as - editors of the associated product. The general format for - individual names is: SURNAME, GIVEN NAME(s). Initials may be - used in lieu of given name(s). If the name contains a suffix - ("Jr.", "Sr.", "III", etc.), the suffix is placed before the - comma (,) -- e.g., Johnson Jr., Earl P. Do not include the word - "and" before the final author. All authors should be listed - explicitly - do not elide the list using "et - al". - - - - - - - - - The electronic mail address attribute provides a - multi-part email address: the first part (the user name), which - identifies a unique user, is separated by an "at sign" from the - host name, which uniquely identifies the mail - server. - - - - - - - - - - The element flag attribute indicates whether or - not the class is defined as a xs:element in XML - Schema. - - - - - - - - The elements attribute provides the count of the - number of elements along an array axis. - - - - - - - - - - - The encoding_standard_id attribute provides the - formal name of a standard used for the structure of an Encoded - Byte Stream digital object. - - - - - - - - - - The encoding_type attribute provides the storage - format (binary or character). - - - - - - - - - - The enumeration_flag attribute indicates whether - there is an enumerated set of permissible - values. - - - - - - - - The error_constant attribute provides a value - that indicates the original value was in - error. - - - - - - - - - - The external_namespace_id attribute provides a - namespace_id external to this context. - - - - - - - - - - The external_property_map_id attribute provides - the identifier of a property_map instance external to this - context. - - - - - - - - - - The external_property_maps_id attribute provides - the identifier of a property_maps instance external to this - context. - - - - - - - - - - The external_source_product_identifier provides - unique identifiers for one or more source products that are not - in the PDS4 Registry. For guidelines on the construction of this - identifier, refer to section E.2.6.1.2 of the Data Provider's - Handbook. - - - - - - - - - - The family_name attribute provides the last name - or patronymic (https://en.wikipedia.org/wiki/Personal_name) of - the person being identified. - - - - - - - - - - The field_delimiter attribute provides the - character that marks the boundary between two fields in a - delimited table. - - - - - - - - - - The field_format attribute gives the magnitude - and precision of the data value. This may specify the output - format for a binary value, or give a general indication of the - precision of a field, but is not used for validation. A subset - of the standard POSIX string formats is allowed. See the PDS - Standards Reference section “Field Formats” for - details. - - - - - - - - - - - - - - - - - - - The field_length attribute provides the number - of bytes in the field. - - - - - - - - - - - - - - - - - - - The field_location attribute provides the - starting byte for a field within a record or group, counting - from '1'. - - - - - - - - - - - The field_number attribute provides the position - of a field, within a series of fields, counting from 1. If two - fields within a record are physically separated by one or more - groups, they have consecutive field numbers; the fields within - the intervening group(s) are numbered separately. Fields within - a group separated by one or more (sub)groups, will also have - consecutive field numbers. - - - - - - - - - - - The fields attribute provides a count of the - total number of scalar fields directly associated with a group. - Fields within (sub) groups of the group are not included in this - count. - - - - - - - - - - - The file_URL holds a reference or link to a - version of the data that can be downloaded, streamed, or even - accessed/visualized via a Web service. URL stands for Uniform - Resource Locator and is the address of a given unique resource - on the Web, whether it is linked to an image, table, HTML page, - or other Web resource. - - - - - - - - - - The file_name attribute provides the name of a - file. - - - - - - - - - - - - - - - - - - The file_size attribute provides the size of the - file. - - - - - - - - - - - The files attribute provides the number of files - in the edition. - - - - - - - - - - - The filter_number attribute of a spectral qube - describes the physical location of a band (identified by the - band_number) in a detector array. Filter 1 is on the leading - edge of the array. - - - - - - - - - - - The first_sampling_parameter_value element - provides the first value in an ascending series and is therefore - the minimum value at which a given data item was - sampled. - - - - - - - - - - The formation_rule attribute provides a 'user - friendly' instruction for forming values. - - - - - - - - - The full_name attribute provides the complete - name for a person and includes titles and - suffixes. - - - - - - - - - - The funding_acknowledgement_text attribute - provides a text description of the relationship between the - funding source and the archival data. - - - - - - - - - - The funding_award attribute provides a unique - alphanumeric identifier of the funding award within the - funding_source. - - - - - - - - - - The funding_source attribute provides the - identifier for an agency or other entity that provided financial - assistance in the poroduction of the archival - data. - - - - - - - - - - The funding_year attribute provides the year - that funding was awarded. - - - - - - - - - - - The given_name attribute provides the forename, - first name, and/or other names or initials of the person being - identified. If the name contains a suffix ("Jr.", "Sr.", "III", - etc.), the suffix is placed after a comma (,) -- e.g., Earl P., - Jr. - - - - - - - - - - The grating_position attribute of a spectral - qube describes the grating position which corresponds to the - band. Grating positions are usually assigned consecutively from - 0, and increasing position causes increasing wavelength for each - detector. - - - - - - - - - - - - - - - - - - - The group_length attribute provides the total - length, in bytes, of a repeating field and/or group structure. - It is the number of bytes in the repeating fields/groups plus - any embedded unused bytes that are also repeated multiplied by - the number of repetitions. - - - - - - - - - - - - - - - - - - - The group_location attribute provides the - starting position for a Group_Field_Binary within the containing - Record_Binary or Group_Field_Binary class, in bytes. Location - '1' denotes the first byte of the containing - class. - - - - - - - - - - - The group_number attribute provides the position - of a group, within a series of groups, counting from 1. If two - groups within a record are physically separated by one or more - fields, they have consecutive group numbers; the intervening - fields are numbered separately. Groups within a parent group, - but separated by one or more fields, will also have consecutive - group numbers. - - - - - - - - - - - The groups attribute provides a count of the - number of (sub)groups within the repeating structure of a group. - (Subsub)groups within (sub)groups within the group are not - included in this count. - - - - - - - - - - - The high_instrument_saturation attribute - specifies a special value whose presence indicates the measuring - instrument was saturated at the high end. The value must be less - than the value of the valid_minimum attribute or more than the - value of the valid_maximum attribute. Values of this attribute - should be represented in the same data_type as the elements in - the object with which the Special_Constants class is - associated. - - - - - - - - - - The high_representative_saturation attribute - specifies a special value whose presence indicates the true - value cannot be represented in the chosen data type and length - -- in this case being above the allowable range -- which may - happen during conversion from another data type. The value must - be less than the value of the valid_minimum attribute or more - than the value of the valid_maximum attribute. Values of this - attribute should be represented in the same data_type as the - elements in the object with which the Special_Constants class is - associated. - - - - - - - - - - The id_reference_from provides the identifier of - the starting object in a one directional - relationship. - - - - - - - - - - The id_reference_to provides the identifier of - the ending object in a one directional - relationship. - - - - - - - - - - The id_reference_type attribute provides the - name of an association between two objects. - - - - - - - - - - The identifier attribute provides the formal - name used to refer to an object. - - - - - - - - - - The identifier_reference attribute provides the - value of an identifier. - - - - - - - - - - The information_model_version attribute provides - the version identification of the PDS Information Model on - which the label and schema are based. - - - - - - - - - - The install note attribute provides a brief - statement giving particulars about the installation of the - software. - - - - - - - - - The instance_id attribute provides an identifier - for the single occurrence of an object, for example an - XPath. - - - - - - - - - - The institution_name attribute provides the name - of the associated institution. - - - - - - - - - - - The instrument_desc attribute describes a given - instrument. - - - - - - - - - The instrument_host_desc provides a description - of an instrument host - - - - - - - - - The instrument_host_id attribute provides a - unique identifier for the host on which an instrument is - located. This host can be either a spacecraft or an earth base - (e.g. earth). - - - - - - - - - - The instrument_host_name attribute provides the - full name of the platform or facility upon which an instrument - or other device is mounted. For example, the host can be a - spacecraft, a ground-based telescope, or a - laboratory. - - - - - - - - - - The instrument_host_type attribute provides the - type of host on which an instrument is based. For example - instrument is located on a spacecraft instrument_host_type - attribute would have the value SPACECRAFT. - - - - - - - - - - The instrument_host_version_id attribute - provides the version of the instrument host. - - - - - - - - - - The instrument id provides a formal name used to - refer to an instrument. - - - - - - - - - - The instrument_name attribute provides a unique - name for an instrument. - - - - - - - - - - The instrument serial number element provides - the manufacturer's serial number assigned to an instrument. This - number may be used to uniquely identify a particular instrument - for tracing its components or determining its calibration - history, for example. - - - - - - - - - - The instrument_type attribute identifies the - type of an instrument. Example values: POLARIMETER - SPECTROMETER - - - - - - - - - - The Instrument_Version_Id element identifies the - specific model of an instrument used to obtain data. For - example, this keyword could be used to distinguish between an - engineering model of a camera used to acquire test data, and a - flight model of a camera used to acquire science data during a - mission. - - - - - - - - - - The interface type attribute identifies the - class of interconnection provided. - - - - - - - - - - The invalid_constant attribute provides a value - that indicates the original value was outside the valid range - for the parameter. - - - - - - - - - - The kernel_type attribute identifies the type of - SPICE kernel. - - - - - - - - - - The keyword attribute provides one or more words - to be used for keyword search. - - - - - - - - - - The language attribute provides the language - used for definition and designation of the - term. - - - - - - - - - - The last_modification_date_time attribute gives - the most recent date and time that a change was - made. - - - - - - - - - The last_sampling_parameter_value element - provides the last value in an ascending series and is therefore - the maximum value at which a given data item was - sampled. - - - - - - - - - - The ldd_version_id attribute provides the - version of the Local Data Dictionary. - - - - - - - - - - The lid_reference attribute provides the - logical_identifier for a product. - - - - - - - - - - - - The lidvid_reference attribute provides the - logical_identifier plus version_id, which uniquely identifies a - product. - - - - - - - - - - - - The line_display_direction element is the - preferred orientation of lines within an image for viewing on a - display device. Note that if this keyword is present in a label, - the sample_display_direction keyword must also be present and - must contain a value orthogonal to the value selected for this - keyword. - - - - - - - - - - The local_identifier attribute provides a - character string which uniquely identifies the containing object - within the label. - - - - - - - - - - The local_identifier_reference attribute - provides the value of the local_identifier of the entity - described by the referencing class. Note that a local_identifier - attribute, with the same value as this - local_identifier_reference, must be present within the - label. - - - - - - - - - - The local_mean_solar_time attribute provides the - hour angle of the fictitious mean Sun at a fixed point on a - rotating solar system body. - - - - - - - - - - The local_reference_type attribute provides the - name of an association between an entity identified by a - local_identifier_reference and another corresponding entity - identified by a local_identifier. The values for the - local_reference_type are expected to be enumerated for - appropriate contexts in the Schematron files of local (i.e., - discipline and mission) data dictionaries. - - - - - - - - - - The local_true_solar_time (LTST) attribute - provides the local time on a rotating solar system body where - LTST is 12 h at the sub-solar point (SSP) and increases 1 h for - each 15 degree increase in east longitude away from the SSP for - prograde rotation. - - - - - - - - - - A logical identifier identifies the set of all - versions of an object. It is an object identifier without a - version. - - - - - - - - - - - - The low_instrument_saturation attribute - specifies a special value whose presence indicates the measuring - instrument was saturated at the low end. The value must be less - than the value of the valid_minimum attribute. Values of this - attribute should be represented in the same data_type as the - elements in the object with which the Special_Constants class is - associated. - - - - - - - - - - The low_representative_saturation attribute - specifies a special value whose presence indicates the true - value cannot be represented in the chosen data type and length - -- in this case being below the allowable range -- which may - happen during conversion from another data type. The value must - be less than the value of the valid_minimum attribute. Values of - this attribute should be represented in the same data_type as - the elements in the object with which the Special_Constants - class is associated. - - - - - - - - - - The manifest checksum provides the checksum for - the manifest file. - - - - - - - - - - The manifest url provides the URL to the - manifest file. - - - - - - - - - - The mapping type attribute indicates how two - terms are related to each other. - - - - - - - - - - The maximum attribute provides the largest - stored value which appears in the field over all records (empty - fields and Special_Constants values are - excluded). - - - - - - - - - - The maximum_characters attribute provides the - upper, inclusive bound on the number of - characters. - - - - - - - - - - - - - - - - - - The maximum_field_length attribute sets an - upper, inclusive bound on the number of bytes in the - field. - - - - - - - - - - - The maximum occurrences attribute indicates the - number of times something may occur. It is also called the - maximum cardinality. The asterisk character is used as a value - to indicate that no upper bound exists. - - - - - - - - - - - - - - - - - - The maximum_record_length attribute provides the - maximum length of a record, including the record - delimiter. - - - - - - - - - - - The maximum_scaled_value attribute provides the - maximum value after application of scaling_factor and - value_offset (see their definitions; maximum_scaled_value is the - maximum of Ov). - - - - - - - - - - The maximum_value attribute provides the upper, - inclusive bound on the value. - - - - - - - - - - The md5_checksum attribute is the 32-character - hexadecimal number computed using the MD5 algorithm for the - contiguous bytes of single digital object (as stored) or for an - entire file. - - - - - - - - - - - - The mean attribute provides the sum of the - stored field values divided by the number of values in all - records (empty fields and Special_Constants values are excluded - from both the sum and the count). - - - - - - - - - - The median attribute provides the number - separating the larger half of stored field values from the - algebraically smaller half over all records (empty fields and - Special_Constants values are excluded from the - sort). - - - - - - - - - - The medium_type attribute identifies the - physical storage medium for a data volume. Examples: CD-ROM, - CARTRIDGE TAPE. - - - - - - - - - - The member_status attribute indicates whether - the collection is primary and whether the - file_specification_name has been provided for the - product_collection label. - - - - - - - - - - The minimum attribute provides the algebraically - smallest stored value which appears in the field over all - records (empty fields and Special_Constants values are - excluded). - - - - - - - - - - The minimum_characters attribute provides the - lower, inclusive bound on the number of - characters. - - - - - - - - - - The minimum occurrences attribute indicates the - number of times something may occur. It is also called the - minimum cardinality. - - - - - - - - - - The minimum_scaled_value attribute provides the - minimum value after application of scaling_factor and - value_offset (see their definitions; minimum_scaled_value is the - minimum of Ov). - - - - - - - - - - The minimum_value attribute provides the lower - inclusive bound on the value. - - - - - - - - - - The missing_constant attribute provides a value - that indicates the original value was missing, such as due to a - gap in coverage. - - - - - - - - - - The mission_desc attribute summarizes major - aspects of a planetary mission or project, including the number - and type of spacecraft, the target body or bodies and major - accomplishments. - - - - - - - - - The mission_name attribute identifies a major - planetary mission or project. A given planetary mission may be - associated with one or more spacecraft. - - - - - - - - - - The mission_objectives_summary attribute - describes the major scientific objectives of a planetary mission - or project. - - - - - - - - - The mission_start_date attribute provides the - date of the beginning of a mission in UTC system - format. - - - - - - - - - - The mission_stop_date attribute provides the - date of the end of a mission in UTC system - format. - - - - - - - - - - The model_id attribute helps discriminate - instrument hardware. For example "flight", "engineering", or - "proto" have been used. - - - - - - - - - - The model_object_id attribute provides the - unique identifier of a class, attribute, or value that is - defined in the information model. - - - - - - - - - - The model_object_type attribute provides a - classification for a modeled object. - - - - - - - - - - The modification_date attribute provides date - the modifications were completed - - - - - - - - - The naif_host_id element provides the numeric ID - used within the SPICE system to identify the spacecraft, - spacecraft structure or science instrument. - - - - - - - - - - The naif_instrument_id element provides the - numeric ID used within the SPICE system to identify the - spacecraft, spacecraft structure or science - instrument. - - - - - - - - - - The name attribute provides a word or - combination of words by which the Agency is - known. - - - - - - - - - - The namespace_id attribute provides the - abbreviation of the XML schema namespace container for this - logical grouping of classes and attributes. It is assigned by - the steward. - - - - - - - - - - The nillable_flag attribute indicates whether an - attribute is allowed to take on nil as a - value. - - - - - - - - The not_applicable_constant attribute provides a - value that indicates the parameter is not - applicable. - - - - - - - - - - An NSSDC Collection ID is an NSSDC assigned - identifier for a collection of PDS datasets. - - - - - - - - - - - - - - - - - - The object_length attribute provides the length - of the digital object in bytes. - - - - - - - - - - - - - - - - - - - The offset attribute provides the displacement - of the object starting position from the beginning of the parent - structure (file, record, etc.). If there is no displacement, - offset=0. - - - - - - - - - - - The orbit_direction element provides the - direction of movement along the orbit about the primary as seen - from the north pole of the 'invariable plane of the solar - system', which is the plane passing through the center of mass - of the solar system and perpendicular to the angular momentum - vector of the solar system orbit motion. PROGRADE for positive - rotation according to the right-hand rule, RETROGRADE for - negative rotation. - - - - - - - - - - The organization_name attribute provides the - name of the organization being identified. Do not include - commas. - - - - - - - - - - The organization_rorid attribute provides the - Research Organization Registry ID that reliably, unambiguously, - and permanently connects the organization’s name with its - citable research, publications, grants, and other information. - The RORID is expressed as a fully formed URI (e.g., - https://ror.org/027k65916). - - - - - - - - - - The original_band attribute of a spectral qube - provides the sequence of band numbers in the qube relative to - some original qube. In the original qube, the values are just - consecutive integers beginning with 1. In a qube which contains - a subset of the bands in the original qube, the values are the - original sequence numbers from that qube. - - - - - - - - - - - The OS version attribute indicates the version - of an operating system. - - - - - - - - - - The parent_organization_name attribute provides - the name of the parent organization of the identified - organization. Do not include commas. - - - - - - - - - - The parent_organization_rorid attribute provides - the Research Organization Registry ID of the identified parent - organization. The RORID is expressed as a fully formed URI - (e.g., https://ror.org/027k65916). - - - - - - - - - - The parsing_standard_id attribute provides the - formal name of a standard used for the structure of a Parsable - Byte Stream digital object. - - - - - - - - - - The pattern attribute provides a symbolic - instruction for forming values. - - - - - - - - - - The person_orcid attribute provides the Open - Researcher and Contributor ID that reliably, unambiguously, and - permanently connects a person’s name with citable research, - publications, grants, and other biographical information. The - ORCID is expressed as a fully formed URI (e.g., - http://orcid.org/0000-0000-0000-0000). - - - - - - - - - - The phone_book_flag attribute indicates whether - or not this person should be included in the phone - book. - - - - - - - - The postal address text attribute provides a - mailing address. - - - - - - - - - The preferred_flag indicates whether this entry - is preferred over all other entries. - - - - - - - - The primary_body_name attribute identifies the - primary body with which a given target body is associated as a - secondary body. - - - - - - - - - - The processing_level attribute provides a broad - classification of data processing level. - - - - - - - - - - The processing_level_id attribute provides a - broad indication of data processing level. - - - - - - - - - - The producer_full_name attribute provides the - full_name of the individual mainly responsible for the - production of the data set. This individual does not have to be - registered with the PDS. - - - - - - - - - - The product_class attribute provides the name of - the product class. - - - - - - - - - - The program notes id attribute provides an - identifier to a brief statement giving particulars about a - software program. - - - - - - - - - - The programmers manual id attribute provides an - identifier to a document giving instruction about the - programming of the software. - - - - - - - - - - The property_map_subtype attribute indicates the - subcategory of the property map. - - - - - - - - - - The property_map_type attribute indicates the - category of the property map. - - - - - - - - - - The property name attribute provides a word or a - combination of words by which a property is - known. - - - - - - - - - - The property value attribute provides the value - assigned to a property. - - - - - - - - - The provider site id attribute provides an - identifier for the provider. - - - - - - - - - - The publication_date attribute provides the date - on which an item was published. - - - - - - - - - - - The publication_year attribute provides the year - in which the product should be considered as published. - Generally, this will be the year the data were declared - "Certified" or "Archived". - - - - - - - - - The purpose attribute provides an indication of - the primary purpose of the observations - included. - - - - - - - - - - The record_delimiter attribute provides the - character or characters used to indicate the end of a - record. - - - - - - - - - - - - - - - - - - The record_length attribute provides the length - of a record, including a record delimiter, if - present. - - - - - - - - - - - The records attribute provides a count of - records. - - - - - - - - - - - The reference frame id attribute identifies a - reference frame, an origin and set of axes, the physical - realization of a reference system, i.e., the reference frame - orientation and axes are established by the reported coordinates - of datum points in the reference system. - - - - - - - - - - - The reference_text attribute provides a complete - bibliographic citation for a published work. - - - - - - - - - The reference_type attribute provides the name - of the association. - - - - - - - - - - The referenced identifier attribute provides the - identifier of the entify being referenced. - - - - - - - - - - The registered_by attribute provides the name of - the person or organization that registered the - object. - - - - - - - - - - The registration_authority attribute provides - the name of the group responsible for the terminological - entry. - - - - - - - - - - The registration_authority_id attribute provides - the name of the organization that registered the - object. - - - - - - - - - - The registration_date attribute provides the - date of registration within the PDS system. - - - - - - - - - The release_date attribute provides the date - that the product was released. - - - - - - - - - - The repetitions attribute provides the number of - times a set of repeating fields and, possibly, (sub)groups is - replicated within a group. - - - - - - - - - - - The revision_id attribute provides the revision - level of a document, which may be set outside PDS and may be - different from its version_id. - - - - - - - - - - The rotation_direction element provides the - direction of rotation as viewed from the north pole of the - 'invariable plane of the solar system', which is the plane - passing through the center of mass of the solar system and - perpendicular to the angular momentum vector of the solar - system. The value for this element is PROGRADE for counter - -clockwise rotation, RETROGRADE for clockwise rotation and - SYNCHRONOUS for satellites which are tidally locked with the - primary. Sidereal_rotation_period and rotation_direction_type - are unknown for a number of satellites, and are not applicable - (N/A) for satellites which are tumbling. - - - - - - - - - - The rule_assign attribute provides an assignment - statement for a schematron rule. - - - - - - - - - - The rule_context attribute provides the xpath - for the rule. - - - - - - - - - - The rule_description attribute provides a - description of the rule statement suitable for user - documentation. - - - - - - - - - The rule_message attribute provides a message to - be displayed by the schematron processor when the test condition - is met. - - - - - - - - - The rule_test attribute provides the body of the - statement to be executed by the schematron - processor. - - - - - - - - - The rule_type attribute indicates the type of - statement to be executed. - - - - - - - - - - The rule_value attribute provides values to be - used to complete certain schematon statements. - - - - - - - - - - The sample_display_direction attribute provides - the preferred orientation of samples within a line for viewing - on a display device. The attribute sample_display_direction must - be used with line_display_direction. - - - - - - - - - - The sampling_parameter_base attribute provides - the base b by which exponentials are calculated in the - definition of the attribute - sampling_parameter_interval. - - - - - - - - - - The sampling_parameter_interval attribute - provides the spacing of points at which data are sampled and at - which values for an instrument or other parameter are available. - If x1 and xn are the first and last sampling parameter values, - respectively, xn is larger than x1, n is the number of sampling - parameters, the caret symbol (^) denotes exponentiation, and b, - a positive real number, is the base for exponentiation, then the - value of sampling_parameter_interval is: (xn-x1)/(n-1) (for - sampling_parameter_scale = Linear), (xn/x1)^(1/(n-1)) (for - sampling_parameter_scale = Logarithmic), (b^xn-b^x1)/(n-1) (for - sampling_parameter_scale = Exponential). - - - - - - - - - - The sampling_parameter_name element provides the - name of the parameter which determines the sampling interval of - a particular instrument or dataset parameter. For example, - magnetic field intensity is sampled in time increments, and a - spectrum is sampled in wavelength or - frequency. - - - - - - - - - - The sampling_parameter_scale element specifies - whether the sampling interval is linear or something other such - as logarithmic. - - - - - - - - - - The sampling_parameter_unit element specifies - the unit of measure of associated data sampling - parameters. - - - - - - - - - - The sampling_parameters attribute provides the - total number of sampling parameter values between - first_sampling_parameter_value and last_sampling_parameter_value - (inclusive). - - - - - - - - - - - The saturated_constant attribute provides a - value that indicates the original value was invalid because of - sensor saturation. - - - - - - - - - - The scaling_factor attribute is the scaling - factor to be applied to each stored value in order to recover an - original value. The observed value (Ov) is calculated from the - stored value (Sv) thus: Ov = (Sv * scaling_factor) + - value_offset. The default value is 1. - - - - - - - - - - The sequence_number attribute provides a number - that is used to unambiguously order the Person and Organization - classes. - - - - - - - - - - - The serial number element provides the assigned - manufacturer's serial number. - - - - - - - - - - The service type attribute identifies the class - of system function provided. - - - - - - - - - - The attribute skos_relation_name provides a - meaning of the relationship between two associated - terms. - - - - - - - - - - The software dialect attribute indicates the - variety of a language used to write the - software. - - - - - - - - - - The software format type attribute classifies - the format of the software. - - - - - - - - - - The software id attribute provides a formal name - used to refer to the software. - - - - - - - - - - The software language attribute identifies the - language used to write the software. - - - - - - - - - - The software type attribute identifies the class - of which the software is a member. - - - - - - - - - - The software_version_id attribute provides the - version of the software. - - - - - - - - - - - - - - - - - The solar_longitude attribute provides the angle - between the body-Sun line at the time of interest and the - body-Sun line at its vernal equinox. - - - - - - - - - - - The sort name attribute provides a string to be - used in ordering. For people, the last name (surname) is - typically first, followed by a comma and then other - names. - - - - - - - - - - The specified_unit_id attribute provides the - unit chosen for maximum_value, minimum_value, and - permissible_value. - - - - - - - - - - The standard_deviation attribute provides the - standard deviation of values in the associated object; empty and - Special_Constants values are excluded. - - - - - - - - - - The start_bit attribute provides the position of - the first bit within an ordered sequence of - bits. - - - - - - - - - - - The start_bit_location attribute provides the - position of the first bit in a bit field relative to the first - bit in the parent packed data field. Bytes are sequential and - bits are numbered continuously across byte boundaries within a - single bit field. The first bit position in the packed data - field is "1". - - - - - - - - - - - The start_date attribute provides the date when - an activity began. - - - - - - - - - The start_date_time attribute provides the date - and time at the beginning of the data set. - - - - - - - - - - - The start_time attribute provides the date and - time of the beginning of an event or observation (whether it be - a spacecraft, ground-based, or system event) in - UTC. - - - - - - - - - - - The starting_point attribute provides the - local_identifier of the object to be accessed - first. - - - - - - - - - - The steward attribute indicates the person or - organization that manages a set of registered attributes and - classes. - - - - - - - - - - The stop-bit attribute provides the location of - the last bit in this bit field relative to the first bit in the - packed_data field. Bits are numbered continuously across byte - boundaries. The first bit location in the packed data field is - "1". - - - - - - - - - - - The stop_bit_location attribute provides the - position of the last bit in a bit field relative to the first - bit in the parent packed data field. Bytes are sequential and - bits are numbered continuously across byte boundaries within a - single bit field. The first bit position in the packed data - field is "1". - - - - - - - - - - - The stop_date attribute provides the date when - an activity ended. - - - - - - - - - - - The stop_date_time attribute provides the date - and time at the end of the data set. - - - - - - - - - - - The stop_time element provides the date and time - of the end of an observation or event (whether it be a - spacecraft, ground-based, or system event) in - UTC. - - - - - - - - - - - The submitter_name attribute provides the name - of the author, who submits the item to the - steward. - - - - - - - - - - The subscriber_id provides the identification of - a PDS subscription. - - - - - - - - - - The subtype attribute is a special type included - within the general type. It provides more specific clarifying - and/or supplemental information as to the nature of the - type. - - - - - - - - - - The supported architecture note attribute - identifies the hardware architecture that can process the - software. - - - - - - - - - The supported environment note attribute - identifies the environment that can process the - software. - - - - - - - - - The supported operating system note attribute - identifies the Operating System that supports the - software. - - - - - - - - - The system requirements note attribute - identifies what is necessary to process the - software. - - - - - - - - - The target_desc attribute describes the - characteristics of a particular target. - - - - - - - - - The target_name attribute provides a name by - which the target is formally known. - - - - - - - - - - The target_type attribute identifies the type of - a named target. - - - - - - - - - - The team_name attribute provides the name of a - group of individuals working together. - - - - - - - - - - The telephone_number attribute provides a - telephone number in international notation in compliance with - the E.164 telephone number format - recommendation. - - - - - - - - - - - - - - - - - The telescope_altitude attribute provides the - height of the telescope above a plane tangent to the reference - figure (or datum) at the telescope location. - - - - - - - - - - - - - - - - - - The telescope_latitude attribute provides the - angular distance of the telescope north (positive) from the - equator, measured on the meridian of the - telescope. - - - - - - - - - - - - - - - - - - The telescope_longitude attribute provides the - angular distance of the telescope east (positive), measured by - the angle contained between the meridian of the telescope and - the reference figure (or datum) prime - meridian. - - - - - - - - - - - The title attribute provides a short, - descriptive text string suitable for use as a title or brief - description in a display or listing of - products. - - - - - - - - - - The transfer manifest checksum provides the - checksum for the transfer manifest file. - - - - - - - - - - - - The type attribute provides a classification for - the resource. - - - - - - - - - - The type_description attribute provides a - description of the object's type. - - - - - - - - - - The unit attribute provides the unit of - measurement. - - - - - - - - - - The unit_of_measure_type attribute identifies - the class from which the attribute being defined in this data - dictionary draws its possible expressions for - units. - - - - - - - - - - The unknown_constant attribute provides a value - that indicates the original value was unknown. - - - - - - - - - - The update purpose attribute indicates the - intended objective of this update. - - - - - - - - - - The url attribute provides a Uniform Resource - Identifier (URI) that specifies where a resource is available - and the mechanism for retrieving it. - - - - - - - - The users manual id attribute provides a formal - name used to refer to a manual that describes how to use the - software. - - - - - - - - - - The valid_maximum attribute specifies the - maximum valid value in the field or digital object with which - the Special_Constants class is associated. Values above the - valid_maximum have a special meaning. Values of this attribute - should be represented in the same data_type as the elements in - the object or field described. (Note that PDS3 had no - qube-related valid_maximum values because all special constants - were set below the valid_minimum.) - - - - - - - - - - The valid_minimum attribute specifies the - minimum valid value in the field or digital object with which - the Special_Constants class is associated. Values below the - valid_minimum have a special meaning. Values of this attribute - should be represented in the same data_type as the elements in - the object or field described. - - - - - - - - - - The validation_format attribute gives the - magnitude and precision of the data value with the expectation - that both will be validated exactly. A subset of the standard - POSIX string formats is allowed. See the PDS Standards Reference - section "Field Formats" for details. - - - - - - - - - - - The value attribute provides a single, allowed - numerical or character string value. - - - - - - - - - - The value_begin_date attribute provides the - first date on which the permissible value is in - effect. - - - - - - - - - The value_data_type attribute is used in a data - dictionary to specify the data type of an attribute's - value. - - - - - - - - - - The value_end_date attribute provides the last - date on which the permissible value is in - effect. - - - - - - - - - The value_meaning attribute provides the - meaning, or semantic content, of the associated permissible - value. - - - - - - - - - The value_offset attribute is the offset to be - applied to each stored value in order to recover an original - value. The observed value (Ov) is calculated from the stored - value (Sv) thus: Ov = (Sv * scaling_factor) + value_offset. The - default value is 0. - - - - - - - - - - The vector_components attribute provides a count - of vector components. - - - - - - - - - - The version_id attribute provides the version of - the product, expressed in the PDS [m.n] - notation. - - - - - - - - - - - The volume_de_fullname attribute provide the - full name of the data engineer. - - - - - - - - - - The volume_format attribute identifies the - logical format used in writing a data volume. - - - - - - - - - - The volume_id attribute provides a unique - identifier for a data volume. Example: - MG_1001. - - - - - - - - - - The volume_name attribute contains the name of a - data volume. - - - - - - - - - - The volume_series_name element provides a full, - formal name that describes a broad categorization of data - products or data sets related to a planetary body or a research - campaign (e.g. International Halley Watch). A volume series - consists of one or more volume sets that represent data from one - or more missions or campaigns. - - - - - - - - - - The volume_set_id attribute identifies a data - volume or a set of volumes. Volume sets are normally considered - as a single orderable entity. Examples: USA_NASA_PDS_MG_1001, - USA_NASA_PDS_GR_0001_TO_GR_0009 - - - - - - - - - - The volume_set_name element provides the full, - formal name of one or more data volumes containing a single data - set or a collection of related data sets. Volume sets are - normally considered as a single orderable - entity. - - - - - - - - - - The volume size attribute provide the number of - bytes in the volume. - - - - - - - - - - - The volume_version_id attribute identifies the - version of a data volume. All original volumes should use a - volume_version_id of 'Version 1'. - - - - - - - - - - The volumes element provides the number of - physical data volumes contained in a volume - set. - - - - - - - - - - - The wavelength range attribute specifies the - wavelength range over which the data were collected or which - otherwise characterizes the observation(s). Boundaries are - vague, and there is overlap. - - - - - - - - - - - The x attribute provides the value of the x - coordinate in a position vector. - - - - - - - - - - The y attribute provides the value of the y - coordinate in a position vector. - - - - - - - - - - The z attribute provides the value of the z - coordinate in a position vector. - - - - - - - - - This section contains the base data types and any constraints those types - may have. These types should be reused across schemas to promote compatibility. This is one - component of the common dictionary and thus falls into the common namespace. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This section contains the base Units of Measure. - These Units of Measure should be reused across schemas to promote compatibility. This is one - component of the common dictionary and thus falls into the common namespace. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/model-lddtool/src/test/resources/github797/test_label1_FAIL.xml b/model-lddtool/src/test/resources/github797/test_label1_FAIL.xml index d9033a27..9ec42f95 100644 --- a/model-lddtool/src/test/resources/github797/test_label1_FAIL.xml +++ b/model-lddtool/src/test/resources/github797/test_label1_FAIL.xml @@ -3,16 +3,13 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?> - + http://pds.nasa.gov/pds4/geom/v1 ./PDS4_GEOM_1N00_1970.xsd"> urn:nasa:pds:uranus_occ_u5_lco_250cm:data:2200nm_counts-v-time_rings_egress 1.0 @@ -100,7 +97,7 @@ - + FOO ura111.bsp @@ -112,6 +109,7 @@ SPK earthstns_itrf93_040916.bsp + BPC earth_720101_031229.bpc @@ -123,41 +121,6 @@ These kernel files were used in the generation of the products in the parent bundle. Some or all of them may not have been used directly in the generation of this product. - - - stellar - both - egress - N - fair - equator - UCAC2 25775788 - 1.71 - 0.6000 - 0.0900 - 0.025000000 - single pole - 0.10000 - 0.00500 - 2000.00000 - 2400.00000 - 1978-04-10T00:00:00.0000Z - 22356.7275 - 22884.5625 - -685691194.0869 - -685690666.2519 - 1978-04-10T06:12:36.7275Z - 1978-04-10T06:21:24.5625Z - 42134.37081 - 51374.86328 - 137.3619 - 147.7060 - 323.7428 - 334.0870 - -57.32465 - 32.67535 - - @@ -214,7 +177,7 @@ - u5_lco_250cm_2200nm_counts-v-time_rings_egress.tab + No.Data ring-data 2021-04-04T17:53:00Z