diff --git a/Gemfile.lock b/Gemfile.lock
index be931c90..7001bb95 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -71,9 +71,7 @@ GEM
nokogiri (>= 1.12.0)
minitest (5.23.1)
mutex_m (0.2.0)
- nokogiri (1.16.6-arm64-darwin)
- racc (~> 1.4)
- nokogiri (1.16.6-x86_64-darwin)
+ nokogiri (1.16.7-x86_64-linux)
racc (~> 1.4)
parallel (1.25.1)
parser (3.3.3.0)
@@ -124,6 +122,7 @@ GEM
PLATFORMS
arm64-darwin-23
x86_64-darwin-23
+ x86_64-linux
DEPENDENCIES
adiwg-mdtranslator!
diff --git a/lib/adiwg/mdtranslator/readers/iso19115_2/modules/module_metadata.rb b/lib/adiwg/mdtranslator/readers/iso19115_2/modules/module_metadata.rb
index 39c5dbb7..3b1773a1 100644
--- a/lib/adiwg/mdtranslator/readers/iso19115_2/modules/module_metadata.rb
+++ b/lib/adiwg/mdtranslator/readers/iso19115_2/modules/module_metadata.rb
@@ -11,6 +11,8 @@ module Iso191152
module Metadata
@@identificationInfoXPath = 'gmd:identificationInfo'
@@dataIdentificationXPath = 'gmd:MD_DataIdentification'
+ @@fileIdentifierXPath = 'gmd:fileIdentifier//gco:CharacterString'
+ @@parentIdentifierXPath = 'gmd:parentIdentifier//gco:CharacterString'
def self.unpack(xMetadata, hResponseObj)
intMetadataClass = InternalMetadata.new
intMetadata = intMetadataClass.newMetadata
@@ -42,6 +44,12 @@ def self.unpack(xMetadata, hResponseObj)
intMetadata[:resourceInfo] = ResourceInformation.unpack(xDataIdentification, hResponseObj)
+ fileIdentifier = xMetadata.xpath(@@fileIdentifierXPath)[0]
+ intMetadata[:fileIdentifier] = fileIdentifier.text unless fileIdentifier.nil?
+
+ parentIdentifier = xMetadata.xpath(@@parentIdentifierXPath)[0]
+ intMetadata[:parentIdentifier] = parentIdentifier.text unless parentIdentifier.nil?
+
# :distributorInfo
# :associatedResources
# :additionalDocuments
diff --git a/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_identifier.rb b/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_identifier.rb
index 040981a0..a7f4f15f 100644
--- a/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_identifier.rb
+++ b/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_identifier.rb
@@ -5,19 +5,20 @@ module Dcat_us
module Identifier
def self.build(intObj)
+ fileIdentifier = intObj.dig(:metadata, :fileIdentifier)
+ return fileIdentifier unless fileIdentifier.nil?
+
citation = intObj.dig(:metadata, :resourceInfo, :citation)
identifiers = citation&.dig(:identifiers)
onlineResources = citation&.dig(:onlineResources)
uri = onlineResources.dig(0, :olResURI)
- # return uri if it exists, or the first identifier found
+ # uri is supposed to be more descriptive than identifiers
return uri unless uri.nil?
return identifiers[0][:identifier] unless identifiers.nil? || identifiers.empty?
nil
end
-
-
end
end
end
diff --git a/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_is_part_of.rb b/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_is_part_of.rb
index c0986fd0..26ff232e 100644
--- a/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_is_part_of.rb
+++ b/lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_is_part_of.rb
@@ -7,6 +7,9 @@ module Dcat_us
module IsPartOf
def self.build(intObj)
+ parentIdentifier = intObj.dig(:metadata, :parentIdentifier)
+ return parentIdentifier unless parentIdentifier.nil?
+
associatedResources = intObj.dig(:metadata, :associatedResources)
associatedResources.each do |resource|
diff --git a/test/readers/iso19115_2/testData/iso19115-2.xml b/test/readers/iso19115_2/testData/iso19115-2.xml
index 320780fe..d7046048 100644
--- a/test/readers/iso19115_2/testData/iso19115-2.xml
+++ b/test/readers/iso19115_2/testData/iso19115-2.xml
@@ -20,7 +20,12 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.isotc211.org/2005/gmi
ftp://ftp.ncddc.noaa.gov/pub/Metadata/Online_ISO_Training/Intro_to_ISO/schemas/ISObio/schema.xsd">
-
+
+ ISO19115-2-ID-123456
+
+
+ ISO19115-2-ID-123456-parent
+
diff --git a/test/translator/tc_iso19115_2_to_dcatus.rb b/test/translator/tc_iso19115_2_to_dcatus.rb
index ba17cfa6..b9f29e6a 100644
--- a/test/translator/tc_iso19115_2_to_dcatus.rb
+++ b/test/translator/tc_iso19115_2_to_dcatus.rb
@@ -9,7 +9,6 @@
require 'adiwg/mdtranslator'
require 'adiwg/mdtranslator/readers/iso19115_2/modules/module_iso19115_2'
require 'adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_dcat_us'
-require 'debug'
# these tests are organized according to how data is processed in
# the dcat_us writer lib/adiwg/mdtranslator/writers/dcat_us/sections/dcat_us_dcat_us.rb
@@ -92,5 +91,16 @@ def test_theme
dcatusNS = ADIWG::Mdtranslator::Writers::Dcat_us::Theme
res = dcatusNS.build(@@intMetadata)
assert_equal('biota farming', res)
+
+ def test_identifier
+ expected = 'ISO19115-2-ID-123456'
+
+ assert_equal(expected, @@intMetadata[:metadata][:fileIdentifier])
+ end
+
+ def test_is_part_of
+ expected = 'ISO19115-2-ID-123456-parent'
+
+ assert_equal(expected, @@intMetadata[:metadata][:parentIdentifier])
end
end
diff --git a/test/translator/testData/iso19115-2.xml b/test/translator/testData/iso19115-2.xml
index 320780fe..d7046048 100644
--- a/test/translator/testData/iso19115-2.xml
+++ b/test/translator/testData/iso19115-2.xml
@@ -20,7 +20,12 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.isotc211.org/2005/gmi
ftp://ftp.ncddc.noaa.gov/pub/Metadata/Online_ISO_Training/Intro_to_ISO/schemas/ISObio/schema.xsd">
-
+
+ ISO19115-2-ID-123456
+
+
+ ISO19115-2-ID-123456-parent
+