It appears that I had wandered off on a tangent in regards to array data structure namespace definition. My implementation using MetaGrove defines the LocationDetails structure in a unique namespace (related to Iptc4xmpExt). It produces the following for Dave's example:
<?xpacket begin="Ôªø" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Public XMP Toolkit Core 4.0">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:Iptc4xmpExt="http://iptc.org/std/Iptc4xmpExt/2008-02-29/"
xmlns:LocationDetails="http://iptc.org/std/Iptc4xmpExt/2008-02-29/LocationDetails/">
<Iptc4xmpExt:LocationShown>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<LocationDetails:Sublocation>Buckingham Palace</LocationDetails:Sublocation>
<LocationDetails:City>London</LocationDetails:City>
<LocationDetails:ProvinceState>London</LocationDetails:ProvinceState>
<LocationDetails:CountryName>United Kingdom</LocationDetails:CountryName>
<LocationDetails:CountryCode>GB</LocationDetails:CountryCode>
<LocationDetails:WorldRegion>Europe</LocationDetails:WorldRegion>
</rdf:li>
</rdf:Bag>
</Iptc4xmpExt:LocationShown>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>
I also implemented
ArtworkOrObjectDetails (http://iptc.org/std/Iptc4xmpExt/2008-02-29/ArtworkOrObjectDetails/) and RegistryEntryDetails (http://iptc.org/std/Iptc4xmpExt/2008-02-29/RegistryEntryDetails/) as unique namespaces.
These is consistent with the XMP specification where most (array) structure XMP properties have unique namespaces.
Colorant -- http://ns.abobe.com/xap/1.0/g/
Dimensions -- http://ns.adobe.com/xap/1.0/sType/Dimensions#
Thumbnail -- http://ns.adobe.com/xap/1.0/g/img/
ResourceEvent -- http://ns.adobe.com/xap/1.0/sType/ResourceEvent#
ResourceRef -- http://ns.adobe.com/xap/1.0/sType/ResourceRef
Version -- http://ns.adobe.com/xap/1.0/sType/Version#
However, there is one example in the XMP specification, XMP Dynamic Media, where array structures use the same prefix and namespace as the schema.
XMP Dynamic Media schema -- http://ns.adobe.com/xap/1.0/DynamicMedia/
Markers -- http://ns.adobe.com/xap/1.0/DynamicMedia/
ContributedMedia -- http://ns.adobe.com/xap/1.0/DynamicMedia/
Further, the PLUS schema and its array structures are all defined in one namespace.
******** Conclusion:
Dave's example is faithful to the IPTC Photo Metadata specification. I will change my MetaGrove schema definition to avoid the extra namespaces and match.
Regards,
Carl Rambert, Pound Hill Software
P.S. The <rdf:li rdf:parseType="Resource"> statement is consistent with Pound Hill Software's MetaGrove XMP array implementation. It is an acceptable implementation for Dave.
On May 11, 2009, at 3:22 AM, Michael Steidl (IPTC) wrote:
Hi Dave
yes, the property structure in XMP looks quite well.
As I'm not a top RDF expert I can not make statements if the <rdf:li rdf:parseType="Resource"> is correct at this point or if the parseType has to be indicated with the LocationShown element. But I have found examples with the ParseType in the <li>
Michael
On 11 May 2009 at 9:48 someonenickedmyid wrote:
> Hi Michael
>
> Before I start encoding the location details into my images' metadata, I
> just wanted to check that the xmp being created is correct, e.g.:
>
> <Iptc4xmpExt:LocationShown>
> <rdf:Bag>
> <rdf:li rdf:parseType="Resource">
> <Iptc4xmpExt:Sublocation>Buckingham
> Palace</Iptc4xmpExt:Sublocation>
> <Iptc4xmpExt:City>London</Iptc4xmpExt:City>
>
> <Iptc4xmpExt:ProvinceState>London</Iptc4xmpExt:ProvinceState>
> <Iptc4xmpExt:CountryName>United
> Kingdom</Iptc4xmpExt:CountryName>
> <Iptc4xmpExt:CountryCode>GB</Iptc4xmpExt:CountryCode>
> <Iptc4xmpExt:WorldRegion>Europe</Iptc4xmpExt:WorldRegion>
> </rdf:li>
> </rdf:Bag>
> </Iptc4xmpExt:LocationShown>
>
> Thanks
>
> Dave
>
>
> --- In iptc4xmp@yahoogroups.com, "Michael Steidl (IPTC)" <mdirector@...>
> wrote:
> >
> > Hi Dave
> >
> > the Locations in the IPTC Extension schema are simply an array of a
> structure.
> >
> > In terms of a programming lanaguage this would be equivalent:
> >
> > struct LocationDetails
> > {
> > string Sublocation
> > string City
> > string ProvinceState
> > string CountryName
> > string CountryCode
> > string WorldRegion
> > }
> >
> > LocationShown array of LocationDetails
> > LocationCreated array of LocationDetails
> >
>
>