Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/content/60/9972860/html/smf/Sources/Load.php(225) : runtime-created function on line 3

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/content/60/9972860/html/smf/Sources/Load.php(225) : runtime-created function on line 3
Exiftool error duplicaet XMP property
The DAM Forum
Welcome, Guest. Please login or register.
December 03, 2020, 04:15:40 PM

Login with username, password and session length
Search:     Advanced search
28033 Posts in 5147 Topics by 2903 Members
Latest Member: kbroch
* Home Help Search Login Register
+  The DAM Forum
|-+  Software Discussions
| |-+  ImageIngester and ImageVerifier
| | |-+  Exiftool error duplicaet XMP property
« previous next »
Pages: [1] Print
Author Topic: Exiftool error duplicaet XMP property  (Read 7318 times)
hneuhaus
Newbie
*
Posts: 7


View Profile
« on: August 16, 2010, 01:19:09 PM »

Hi all,

I am currently trying to figure out how to get II and Geosetter up and running.
I am using II 3.4.10 on Windows XP SP3 and Geosetter 3.3.60 with Exiftool 8.28.

During my test runs, I ingested with II, where I did renaming and bulk metadata additions. I used some jpegs and some NEF raw files, I did not do any GPS stuff in II. Then I started Geosetter and experimented with pinpointing a location on the map, then assigning that location to, say, a NEF image.

When I hit the save-changes button, Exiftool (invoked from within Geosetter) brought up the following error message:
Code:
Duplicate XMP property: mediapro:CatalogSets/rdf:Bag/rdf:li 10 - K:/tmp/playground/test_raw_dev/ingester_out/PRV/test_raw_dev_multi/1899-1910/hnhs_090911_1908.xmp
I had a closer look at the XMP file created by II:
It seems to me that Exiftool does not like that the file had the following two entries:
Code:
<rdf:Description rdf:about=""
            xmlns:mediapro="http://ns.microsoft.com/expressionmedia/1.0/">
         <mediapro:Status></mediapro:Status>
         <mediapro:Event></mediapro:Event>
         <mediapro:People>
            <rdf:Bag>
               <rdf:li></rdf:li>
            </rdf:Bag>
         </mediapro:People>
         <mediapro:CatalogSets>
            <rdf:Bag>
               <rdf:li></rdf:li>
            </rdf:Bag>
         </mediapro:CatalogSets>
      </rdf:Description>
<rdf:Description rdf:about=""
            xmlns:mediapro="http://ns.iview-multimedia.com/mediapro/1.0/">
        <mediapro:Status></mediapro:Status>
         <mediapro:Event></mediapro:Event>
        <mediapro:People>
            <rdf:Bag>
               <rdf:li></rdf:li>
            </rdf:Bag>
         </mediapro:People>
       <mediapro:CatalogSets>
            <rdf:Bag>
               <rdf:li></rdf:li>
            </rdf:Bag>
         </mediapro:CatalogSets>
      </rdf:Description>

When I set Exiftool options to "ignore minor errors", it would update the xmp sidecar, but only one of the two mediapro sections would be in the new xmp (in fact the expressionmedia entry).

Now my question here would be:
1) Are the two mediapro sections created by II a bug or intentionally ?
2) Is there any way two keep both entries when using Geosetter ?
3) What would be the consequences of having just one left after Geosetter invocation ?

I am not really the XMP expert so I hope you can help me here.

BR,
Holger
Logged
ianw
Full Member
***
Posts: 162


View Profile
« Reply #1 on: August 16, 2010, 03:14:55 PM »

Holger,

The problem is not in GeoSetter but in whatever created the XMP file you are using as your ACR settings.

The XMP file is data in a structured format that can be understood by computers.  As XMP data is extensible - this means you can add to it without breaking it, provided it remains structured and follows certain rules - there needs to be a method of avoiding potential conflict.  What happens if two applications want to add data called 'Status'.  So that applications can know that this 'Status' was added by this tool and has a different mean to that 'Status' which was added by that tool something called a namespace is used.  The namespace is used as a prefix to the data item, without affecting it's name e.g. this:Status and that:Status.  To control namespaces they must be given a unique, within the document, definition which is usually in the format of a URL, although it does not have to be a valid one.

In the extract of your XMP file there are two namespaces defined, however they have the same prefix i.e. mediapro - the definitions are 'http://ns.microsoft.com/expressionmedia/1.0/' and 'http://ns.iview-multimedia.com/mediapro/1.0/'.  This is something that breaks the rules of an XML document i.e. you can't re-define a namespace like this.  Exiftool is correctly throwing this out as an error, although GeoSetter then allows you around this by treating it is an ignorable minor error.  In fact GeoSetter is sweeping the problem under the carpet for something later down the processing line to fail.

Unfortunately when Microsoft bought iView they changed the namespace without really thinking things through.  They wanted to put their mark on the software.  It will be interesting to see what PhaseOne do - will they fix this or compound the problem by having a new and third namespace?  The consequence of Microsoft's clumsiness is that if you had synced data to images using iView then they were stored under the 'mediapro' namespace.  If you synced the data again using Expression Media the data was added again, this time under the 'expressionmedia' namespace.  This duplication up of meta data isn't clever.  Fortunately Expression Media was badly coded so that if you removed a catalog set and synced the meta data to the image it removed the details from both namespaces.  However other software might not know that these two namespaces are 'linked' and this could lead to problems.

Anyway back to your questions:

1) Are the two 'mediapro' sections created by II a bug or intentionally ?
Neither and both!  I reckon that the Camera Raw settings you are using contain more than they should.  You need to edit these and remove both the iView and Expression Media details.  On XP these files should be in C:\Documents and Settings\your name\Application Data\Adobe\CameraRaw\Settings, although this may vary if you have CS4 or CS5, as Adobe might have changed locations (again!).

The XMP files should really only contain data about camera raw settings.  This data is held in the 'crs' namespace, although there will be some 'rdf' data as well.  Make a copy of these files before editing as if done wrong the file will become invalid.  Below is an example of one of my ACR settings files.  Your may vary depending on setting chosen and the version of


Code:
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Public XMP Toolkit Core 3.5">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:crs="http://ns.adobe.com/camera-raw-settings/1.0/">
   <crs:Version>4.1</crs:Version>
   <crs:WhiteBalance>Custom</crs:WhiteBalance>
   <crs:Temperature>5500</crs:Temperature>
   <crs:Tint>+10</crs:Tint>
   <crs:Exposure>0.00</crs:Exposure>
   <crs:Shadows>5</crs:Shadows>
   <crs:Brightness>+60</crs:Brightness>
   <crs:Contrast>+30</crs:Contrast>
   <crs:Saturation>0</crs:Saturation>
   <crs:Sharpness>25</crs:Sharpness>
   <crs:LuminanceSmoothing>0</crs:LuminanceSmoothing>
   <crs:ColorNoiseReduction>25</crs:ColorNoiseReduction>
   <crs:ChromaticAberrationR>0</crs:ChromaticAberrationR>
   <crs:ChromaticAberrationB>0</crs:ChromaticAberrationB>
   <crs:VignetteAmount>0</crs:VignetteAmount>
   <crs:ShadowTint>0</crs:ShadowTint>
   <crs:RedHue>0</crs:RedHue>
   <crs:RedSaturation>0</crs:RedSaturation>
   <crs:GreenHue>0</crs:GreenHue>
   <crs:GreenSaturation>0</crs:GreenSaturation>
   <crs:BlueHue>0</crs:BlueHue>
   <crs:BlueSaturation>0</crs:BlueSaturation>
   <crs:FillLight>5</crs:FillLight>
   <crs:Vibrance>0</crs:Vibrance>
   <crs:HighlightRecovery>5</crs:HighlightRecovery>
   <crs:Clarity>0</crs:Clarity>
   <crs:Defringe>0</crs:Defringe>
   <crs:HueAdjustmentRed>0</crs:HueAdjustmentRed>
   <crs:HueAdjustmentOrange>0</crs:HueAdjustmentOrange>
   <crs:HueAdjustmentYellow>0</crs:HueAdjustmentYellow>
   <crs:HueAdjustmentGreen>0</crs:HueAdjustmentGreen>
   <crs:HueAdjustmentAqua>0</crs:HueAdjustmentAqua>
   <crs:HueAdjustmentBlue>0</crs:HueAdjustmentBlue>
   <crs:HueAdjustmentPurple>0</crs:HueAdjustmentPurple>
   <crs:HueAdjustmentMagenta>0</crs:HueAdjustmentMagenta>
   <crs:SaturationAdjustmentRed>0</crs:SaturationAdjustmentRed>
   <crs:SaturationAdjustmentOrange>0</crs:SaturationAdjustmentOrange>
   <crs:SaturationAdjustmentYellow>0</crs:SaturationAdjustmentYellow>
   <crs:SaturationAdjustmentGreen>0</crs:SaturationAdjustmentGreen>
   <crs:SaturationAdjustmentAqua>0</crs:SaturationAdjustmentAqua>
   <crs:SaturationAdjustmentBlue>0</crs:SaturationAdjustmentBlue>
   <crs:SaturationAdjustmentPurple>0</crs:SaturationAdjustmentPurple>
   <crs:SaturationAdjustmentMagenta>0</crs:SaturationAdjustmentMagenta>
   <crs:LuminanceAdjustmentRed>0</crs:LuminanceAdjustmentRed>
   <crs:LuminanceAdjustmentOrange>0</crs:LuminanceAdjustmentOrange>
   <crs:LuminanceAdjustmentYellow>0</crs:LuminanceAdjustmentYellow>
   <crs:LuminanceAdjustmentGreen>0</crs:LuminanceAdjustmentGreen>
   <crs:LuminanceAdjustmentAqua>0</crs:LuminanceAdjustmentAqua>
   <crs:LuminanceAdjustmentBlue>0</crs:LuminanceAdjustmentBlue>
   <crs:LuminanceAdjustmentPurple>0</crs:LuminanceAdjustmentPurple>
   <crs:LuminanceAdjustmentMagenta>0</crs:LuminanceAdjustmentMagenta>
   <crs:SplitToningShadowHue>0</crs:SplitToningShadowHue>
   <crs:SplitToningShadowSaturation>0</crs:SplitToningShadowSaturation>
   <crs:SplitToningHighlightHue>0</crs:SplitToningHighlightHue>
   <crs:SplitToningHighlightSaturation>0</crs:SplitToningHighlightSaturation>
   <crs:SplitToningBalance>0</crs:SplitToningBalance>
   <crs:ParametricShadows>0</crs:ParametricShadows>
   <crs:ParametricDarks>0</crs:ParametricDarks>
   <crs:ParametricLights>0</crs:ParametricLights>
   <crs:ParametricHighlights>0</crs:ParametricHighlights>
   <crs:ParametricShadowSplit>25</crs:ParametricShadowSplit>
   <crs:ParametricMidtoneSplit>50</crs:ParametricMidtoneSplit>
   <crs:ParametricHighlightSplit>75</crs:ParametricHighlightSplit>
   <crs:SharpenRadius>+1.0</crs:SharpenRadius>
   <crs:SharpenDetail>25</crs:SharpenDetail>
   <crs:SharpenEdgeMasking>0</crs:SharpenEdgeMasking>
   <crs:ConvertToGrayscale>False</crs:ConvertToGrayscale>
   <crs:ToneCurveName>Medium Contrast</crs:ToneCurveName>
   <crs:ToneCurve>
    <rdf:Seq>
     <rdf:li>0, 0</rdf:li>
     <rdf:li>32, 22</rdf:li>
     <rdf:li>64, 56</rdf:li>
     <rdf:li>128, 128</rdf:li>
     <rdf:li>192, 196</rdf:li>
     <rdf:li>255, 255</rdf:li>
    </rdf:Seq>
   </crs:ToneCurve>
   <crs:CameraProfileDigest>37F3A58E6CDCF040FE3DFDF7FC3F2CE4</crs:CameraProfileDigest>
   <crs:CameraProfile>ACR 2.4</crs:CameraProfile>
   <crs:HasSettings>True</crs:HasSettings>
  </rdf:Description>
 </rdf:RDF>
</x:xmpmeta>

2) Is there any way two keep both entries when using GeoSetter ?
You don't need or want both entries in the ACR settings files.  ImageIngester will add this data as appropriate.  However I'm not sure how ImageIngester knows which namespace to use - seems to always use the iView namespace for my ingestions and I don't know whether this is hard-wired in ImageIngester or is a setting that I can't trace.

3) What would be the consequences of having just one left after GeoSetter invocation ?
If you do as suggested for question 1 then you should only have one of these sections of data - and GeoSetter, or actually ExifTool, won't complain.

Hope this helps.

Ian
Logged
hneuhaus
Newbie
*
Posts: 7


View Profile
« Reply #2 on: August 17, 2010, 11:48:06 AM »

Ian,

thank you very much for the detailed answer.

Having read your reply, I started to track down where the two entries might come from. I was pretty sure that I hadn't applied ACR development settings at all.

It turns out, that the very new version of II I used has both entries in its XMP template (at the end of the XMP file it says where it took the template from), while the template of the previous version had only the iview-multimedia section. From your explanation ("breaking XMP rules"), this might be a bug. I guess this is what you can end up with using deliberately a version with maturity marked as "low" :-).

As a solution, I could switch back to an old II version (which I wouldn't really like) or I could adapt the new II XMP template to only contain one of these sections.

If I do so which one should I keep ?
I am neither using ExpressionMedia nor Iview, just Bridge ?

BR,
Holger
Logged
ianw
Full Member
***
Posts: 162


View Profile
« Reply #3 on: August 17, 2010, 03:10:13 PM »

Holger,

If you are not using Expression Media or iView then you don't need either of these sections.  These are there in case you add details with Image Ingester that are specific to either of these applications i.e. catalogue sets, status, event and people.

I haven't got around to trying the latest version of Image Ingester.  If this problem has arisen from the ACR settings supplied with that then it is a bug.  The namespace for the first section should be "expressionmedia" and the chunk of code you put in the original post should read as follows.

Code:
<rdf:Description rdf:about="" xmlns:expressionmedia="http://ns.microsoft.com/expressionmedia/1.0/">
  <expressionmedia:Status></mediapro:Status>
  <expressionmedia:Event></mediapro:Event>
  <expressionmedia:People>
    <rdf:Bag>
      <rdf:li></rdf:li>
    </rdf:Bag>
  </expressionmedia:People>
  <expressionmedia:CatalogSets>
    <rdf:Bag>
      <rdf:li></rdf:li>
    </rdf:Bag>
  </expressionmedia:CatalogSets>
</rdf:Description>
<rdf:Description rdf:about="" xmlns:mediapro="http://ns.iview-multimedia.com/mediapro/1.0/">
  <mediapro:Status></mediapro:Status>
  <mediapro:Event></mediapro:Event>
  <mediapro:People>
    <rdf:Bag>
      <rdf:li></rdf:li>
    </rdf:Bag>
  </mediapro:People>
  <mediapro:CatalogSets>
    <rdf:Bag>
      <rdf:li></rdf:li>
    </rdf:Bag>
  </mediapro:CatalogSets>
</rdf:Description>

As I said when Phase One get around to their first release I'm sure they will use their own namespace and this problem will come back as there will be 3 possible values!

Ian
Logged
Pages: [1] Print 
« previous next »
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!