W3C

Semantic Web Image Annotation - EXIF Overview

Status: Editor's Draft $Id: nasa-use-case.html,v 1.8 2005/10/25 11:10:34 chalasch Exp $

Overview

One of todays popular image format and metadata standard is the Exchangable Image File Format [EXIF]. This file format provides a standard specification for storing metadata regarding image files. Currently, such metadata elements are in the image file header. Recently there has been efforts to encode this EXIF metadata in RDF/XML. This will then provide a variety of benefits, namely:

EXIF Semantic Web Onotlogies

Recently, there have been various efforts to represent the EXIF metadata specification using RDFS. Below, we are the results of two of these efforts:

Sample EXIF Image
Figure 1: Sample EXIF Image

The [Kanzaki-EXIF] RDFS ontology provides an encoding of the basic EXIF metadata tags in RDFS. Essentially these are the tags defined from Section 4.6 of [EXIF]. We also note here that relevant domains and ranges are utilized as well.

The [Walsh-EXIF] RDFS ontology provides another encoding of the basic EXIF metadata tags in RDFS. Again, these are the tags defined from Section 4.6 of [EXIF].

We note here that both of these ontologies are semantically very similar, thus this issue is not addressed here. Essentially both are a straightforward encodings of the EXIF metadata tags for images (see [EXIF]). There are some syntactic differences, but again they are quite similar; they primarily differ in their naming conventions utilized.

EXIF Conversion Services

The creators of the previously mentioned EXIF RDFS ontologies ([Kanzaki-EXIF] and [Walsh-EXIF]) additionally provide conversion services to their defined schemas.

Exif-to-RDF Converter

EXIF-to-RDF ([Kanzaki-Converter] ) is a metadata extractor for EXIF images. In particular the service takes a URL to an EXIF image and extracts the embedded EXIF metadata. The service then converts this metadata to the [Kanzaki-EXIF] schema and returns this to the user.

To demonstrate this service, we have extracted the EXIF metadata from a sample image shown in Figure 1. The resulting RDF/XML is provided in Table 1.

Table 1: Generated RDF/XML by EXIF-to-RDF

<rdf:RDF
  xmlns:nikon="http://www.kanzaki.com/ns/exif/nikon#"
  xmlns="http://www.kanzaki.com/ns/exif#"
  xmlns:exif="http://www.kanzaki.com/ns/exif#"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:image="http://jibbering.com/vocabs/image/#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:foaf="http://xmlns.com/foaf/0.1/"
>

 <foaf:Image rdf:about="http://www.mindswap.org/~chris/alligator.jpg">
  <dc:date>2003-04-05T08:53:19</dc:date>
  <image:height>480</image:height>
  <image:width>640</image:width>
  <exifdata rdf:resource="#Primary_Image"/>
  <exifdata rdf:resource="#Thumbnail"/>
 </foaf:Image>
 <IFD rdf:ID="Primary_Image">
   <imageDescription></imageDescription>
   <make>NIKON</make>
   <model>E950</model>
   <orientation>top-left</orientation>
   <xResolution>300</xResolution>
   <yResolution>300</yResolution>
   <resolutionUnit>inch</resolutionUnit>
   <software>v981-76</software>
   <dateTime>2003-04-05T08:53:19</dateTime>
   <yCbCrPositioning>co-sited</yCbCrPositioning>
   <exif_IFD_Pointer>
    <IFD>
      <exposureTime>10/890</exposureTime>
      <fNumber>5.7</fNumber>
      <exposureProgram>Normal program</exposureProgram>
      <isoSpeedRatings>0</isoSpeedRatings>
      <exifVersion>2.10</exifVersion>
      <dateTimeOriginal>2003-04-05T08:53:19</dateTimeOriginal>
      <dateTimeDigitized>2003-04-05T08:53:19</dateTimeDigitized>
      <componentsConfiguration>YCbCr</componentsConfiguration>
      <compressedBitsPerPixel>4</compressedBitsPerPixel>
      <exposureBiasValue>3a</exposureBiasValue>
      <maxApertureValue>2.6</maxApertureValue>
      <meteringMode>Pattern</meteringMode>
      <lightSource>unknown</lightSource>
      <flash>Flash did not fire</flash>
      <focalLength>13.9</focalLength>
      <makerNote></makerNote>
      <userComment></userComment>
      <flashpixVersion>1.00</flashpixVersion>
      <colorSpace>sRGB</colorSpace>
      <pixelXDimension>1600</pixelXDimension>
      <pixelYDimension>1200</pixelYDimension>
      <fileSource>DSC (Digital Still Camera)</fileSource>
      <sceneType>A directly photographed image</sceneType>
      <interoperability_IFD_Pointer>
       <IFD>
         <interoperabilityIndex>R98</interoperabilityIndex>
         <interoperabilityVersion>1.00</interoperabilityVersion>
       </IFD>
      </interoperability_IFD_Pointer>
    </IFD>
   </exif_IFD_Pointer>
 </IFD>
<!-- thumbnail -->
 <IFD rdf:ID="Thumbnail">
   <compression>6</compression>
   <xResolution>300</xResolution>
   <yResolution>300</yResolution>
   <resolutionUnit>inch</resolutionUnit>
 </IFD>
</rdf:RDF>



JPEGRDF - EXIF-RDF Manipulater

JPEGRDF ([JPEGRDF-Converter]) is a Java applications written by Norm Walsh which provides an API to read and manipulate EXIF meatadata stored in JPEG images. Currently, JPEGRDF can can extract, query, and augment the EXIF/RDF data stored in the file headers. In particular, we note that the API can be used to convert existing EXIF metadata in file headers to the [Walsh-EXIF] schema. The resulting RDF can then be stored in the image file header, etc. (Note here that the API's functionality greatly extends that which was briefly presented here).

To demonstrate this service, we have again extracted the EXIF metadata from a sample image shown in Figure 1, however this time used the JPEGRDF API. The resulting RDF/XML is provided in Table 2.

Table 2: Generated RDF/XML by JPEGRDF


<rdf:RDF
    xmlns:foaf="http://xmlns.com/foaf/0.1/"
    xmlns:wn="http://xmlns.com/wordnet/1.6/"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:gps="http://nwalsh.com/rdf/exif-gps#"
    xmlns:exif="http://nwalsh.com/rdf/exif#"
    xmlns:nikon950="http://nwalsh.com/rdf/exif-nikon950#"
    xmlns:dctype="http://dublincore.org/2003/03/24/dctype#"
    xmlns:canon="http://nwalsh.com/rdf/exif-canon#"
    xmlns:nikon="http://nwalsh.com/rdf/exif-nikon5700#"
    xmlns:jpegrdf="http://nwalsh.com/rdf/jpegrdf#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:exifi="http://nwalsh.com/rdf/exif-intrinsic#">

  <rdf:Description rdf:about="file:/Users/chalaschek/Desktop/jpegrdf-2.3.0/src//Users/chalaschek/alligator.jpg">
    <exifi:bitsPerPixel>8</exifi:bitsPerPixel>
    <exif:isoSpeedRatings>0</exif:isoSpeedRatings>
    <exifi:numberOfColorComponents>3</exifi:numberOfColorComponents>
    <exif:dateTime>2003:04:05 08:53:19</exif:dateTime>
    <nikon950:digitalZoom>16777985/33554432</nikon950:digitalZoom>
    <nikon950:ccdSensitivity>0</nikon950:ccdSensitivity>
    <exif:model>E950</exif:model>
    <exif:focalLength>139/10</exif:focalLength>
    <exif:make>NIKON</exif:make>
    <nikon950:whiteBalance>0</nikon950:whiteBalance>
    <nikon950:converter>0</nikon950:converter>
    <exif:maxApertureValue>13/5</exif:maxApertureValue>
    <exif:lightSource>0</exif:lightSource>
    <exif:exposureProgram>2</exif:exposureProgram>
    <nikon950:colorMode>1</nikon950:colorMode>
    <nikon950:imageAdjustment>0</nikon950:imageAdjustment>
    <exif:sceneType>%01</exif:sceneType>
    <nikon950:focus>436207616/16778497</nikon950:focus>
    <exif:fNumber>57/10</exif:fNumber>
    <exifi:width>640</exifi:width>
    <exif:exposureTime>1/89</exif:exposureTime>
    <exif:compressedBitsPerPixel>4</exif:compressedBitsPerPixel>
    <exifi:compression>Baseline</exifi:compression>
    <exif:exposureBiasValue>0</exif:exposureBiasValue>
    <exif:flash>0</exif:flash>
    <exifi:height>480</exifi:height>
    <nikon950:quality>12</nikon950:quality>
    <exif:meteringMode>5</exif:meteringMode>
  </rdf:Description>
<colorSpace/rdf:RDF>



References

[EXIF]
EXIF 2.2 Specification
[Kanzaki-EXIF]
Kanzaki.com EXIF RDFS Schema
[Walsh-EXIF]
Norm Walsh EXIF RDFS Schema
[Kanzaki-Converter]
Kanzaki.com EXIF Converter
[JPEGRDF-Converter]
JPEGRDF - Norm Walsh EXIF Converter