Defining Custom XMP Metadata Fields

Is it possible (possibly through the export SDK?) to define a custom metadata field that Aperture can access?
Specifically, Adobe allows Photoshop users to create custom metadata panels to define new XMP namespaces allowing new metadata standards to be entered. This information is saved with the image file, just like the IPTC XMP fields.
However I am curious if there is any way Aperture can be customized to allow these custom fields to be read and set up as options in the metadata viewer.
I'm currently involved with a NASA/ESA project to bring more complete metadata annotations to astronomy images, but so far Photoshop/Bridge seem to be the only packages with defined support for custom metadata. It would be fantastic if such fields could be accessed from Aperture too!
PowerMac G5 2.3GHz   Mac OS X (10.4)  

Hi Robert,
Talk about timing! I just finished coding an export plugin for Aperture to do XMP metadata (beyond the built-in support that Aperture provides) that I'll be releasing as donation-ware in the next week and know all about this right now
What you could do is add custom keys within Aperture, define your own XMP namespace, and then, in the plugin, map from your custom keys to the XMP namespace. If you want, drop me an email (joshanon at mac dot com), and I might be able to send you the source to my plugin as a starting point.
Josh

Similar Messages

  • Exporting/Sharing Custom XMP metadata schema not possible?

    I've written a Python script which automatically encodes Quicktime files which I've mastered out of Premiere Pro CC with embedded custom XMP metadata (created using "New Schema" in the Metadata Display panel). I'm using the embedded custom metadata to drive the Python script (e.g. "Spot Title", "Client Name", fields etc etc), which encodes the source QT file to several different formats, based on the delivery specifications of various local TV broadcasters which the encoded files will go to.
    Everything about the XMP metadata entry/writing/parsing is fantastic. My only hitch is in the exporting/sharing of the custom metadata schema which I created for this purpose. I would like to roll the schema out to the other editors in our facility, so that they can also enter the XMP metadata on their own systems when they export out master timelines from Premiere.
    But unless I'm missing something, I can't figure out a way to "share" or export my custom schema for use on another system. Is this not possible in Premiere Pro CC?

    There's no feature for exporting and importing custom schemas, but it's entirely doable. Here are the path to the custom schemas
    MAC: Macintosh HD ▸ Users ▸ <username> ▸ Library ▸ Application Support ▸ Adobe ▸ XMP ▸ Custom File Info Panels ▸ 4.0 ▸ custom
    WIN: C:\Users\AppData\Roaming\Adobe\XMP\custom file info panels\4.0\panels [I can't vouch for this path as I'm on Mac at the moment and it's been ages since I poked around for custom schemas, but this should at least be the right neighborhood.]
    You might also be interested in sharing your custom metadata display profiles. They in Documents ▸ Adobe ▸ Premiere Pro ▸ 8.0 ▸ Profile-mapes ▸ Metadata Preferences.

  • Custom command for custom XMP metadata

    Hi
    I'm trying to create a custom command for setting and getting custom XMP metadata using InDesign CS3 SDK with Xcode.
    I think I got the step 1) to 3) ok. But not so sure about step 4).
    Please take a look and tell me if I have got anything wrong.
    1) Create 2 classes and 1 interface
    MyCustomMetadata
    MyCustomMetadataSetCmd
    IMyCustomMetadata
    2) Define class definitions in the resource file
    /** Boss class for kMyCustomMetadataBoss */
    Class
    kMyCustomMetadataBoss,
    kInvalidClass,
    IID_IMYCUSTOMMETADATA, kMyCustomMetadataImpl,
    /** Boss class for kMyCustomMetadataSetCmdBoss */
    Class
    kMyCustomMetadataSetCmdBoss,
    kInvalidClass,
    IID_ICOMMAND, kIQAdTicketMetaDataSetCmdImpl,
    IID_IMYCUSTOMMETADATA, kMyCustomMetadataImpl,
    3) Define functions for setting and getting values in MyCustomMetadata
    GetMyTitle()
    SetMyTitle()
    Within these functions, use IMetadataAccess interface to set/get values.
    4) Create Do() function in MyCustomMetadataSetCmd
    ??? I'm not sure what I'm supposed to do here ???
    Any help would be really appreciated.
    Thanks,
    JP

    m41miller42 wrote:
    I am attempting to create a custom RSS file (.mrss) that references XMP metadata from Premiere.
    I was basing the move on this statement. This was posted in the Adobe Connect forums.

  • [CS3 JS] Possible to Inspect Custom XMP Metadata With JavaScript?

    I am using custom XMP metadata in InCopy and InDesign docs in CS3 to hold custom metadata that can vary wildly. I know the full set of possible items but not what values will be in a particular document.
    Short of writing the XMP to a file and then processing that from my script, is there a way to inspect the custom properties from JavaScript. I didn't see a way to do it from the data model.
    Thanks,
    Eliot

    Here is another script to catch MetaData, some more than the basic:
    // metaDataOfLinks.jsx
    //DESCRIPTION: Catches MetaData of linked images and creates a report at the DeskTop.
    // Martin Fischer 10/2008
    var myLinkXmpArray = ["author", "copyrightInfoURL", "copyrightNotice", "copyrightStatus   ", "creationDate", "creator", "description", "documentTitle", "format", "jobName", "keywords", "modificationDate", "serverURL"];
    var myIPTCArray = ["CiAdrCity", "CiAdrCtry", "CiAdrExtadr", "CiAdrPcode", "CiAdrRegion", "CiEmailWork", "CiTelWork", "City", "CiUrlWork", "CopyrightNotice", "Country", "CountryCode", "Creator", "CreatorContactInfo", "CreatorJobtitle", "DateCreated", "Description", "DescriptionWriter", "Headline", "Instructions", "IntellectualGenre", "JobID", "Keywords", "Location", "Provider", "Province-State", "RightsUsageTerms", "Scene", "Source", "SubjectCode", "Title"];
    var myPSArray = ["photoshop:AuthorsPosition", "photoshop:CaptionWriter", "photoshop:Category", "photoshop:City", "photoshop:Country", "photoshop:Credit", "photoshop:DateCreated", "photoshop:Headline", "photoshop:Instructions", "photoshop:Source", "photoshop:State", "photoshop:SupplementalCategories", "photoshop:TransmissionReference", "photoshop:Urgency"];//var myPSArray = ["photoshop:AuthorsPosition", "CaptionWriter", "Category", "City", "Country", "Credit", "DateCreated", "Headline", "Instructions", "Source", "State", "SupplementalCategories", "TransmissionReference", "Urgency"];
    var myTiffArray = ["tiff:ImageWidth", "tiff:ImageLength", "tiff:BitsPerSample", "tiff:Compression", "tiff:PhotometricInterpretation", "tiff:Orientation", "tiff:SamplesPerPixel", "tiff:PlanarConfiguration", "tiff:YCbCrSubSampling", "tiff:YCbCrPositioning", "tiff:XResolution", "tiff:YResolution", "tiff:ResolutionUnit", "tiff:TransferFunction", "tiff:WhitePoint", "tiff:PrimaryChromaticities", "tiff:YCbCrCoefficients", "tiff:ReferenceBlackWhite", "tiff:DateTime", "tiff:ImageDescription", "tiff:MakeProperName", "tiff:Model", "tiff:Software", "tiff:Artist", "tiff:Copyright"];
    var myExifArray = ["exif:ExifVersion", "exif:FlashpixVersion", "exif:ColorSpace", "exif:ComponentsConfiguration", "exif:CompressedBitsPerPixel", "exif:PixelXDimension", "exif:PixelYDimension", "exif:UserComment", "exif:RelatedSoundFile", "exif:DateTimeOriginal", "exif:DateTimeDigitized", "exif:ExposureTime", "exif:FNumber", "exif:ExposureProgram", "exif:SpectralSensitivity", "exif:ISOSpeedRatings", "exif:OECF", "exif:ShutterSpeedValue", "exif:ApertureValue", "exif:BrightnessValue", "exif:ExposureBiasValue", "exif:MaxApertureValue", "exif:SubjectDistance", "exif:MeteringMode", "exif:LightSource", "exif:Flash", "exif:FocalLength", "exif:SubjectArea", "exif:FlashEnergy", "exif:SpatialFrequencyResponse", "exif:FocalPlaneXResolution", "exif:FocalPlaneYResolution", "exif:FocalPlaneResolutionUnit", "exif:SubjectLocation", "exif:ExposureIndex", "exif:SensingMethod", "exif:FileSource", "exif:SceneType", "exif:CFAPattern", "exif:CustomRendered", "exif:ExposureMode", "exif:WhiteBalance", "exif:DigitalZoomRatio", "exif:FocalLengthIn35mmFilm", "exif:SceneCaptureType", "exif:GainControl", "exif:Contrast", "exif:Saturation", "exif:Sharpness", "exif:DeviceSettingDescription", "exif:SubjectDistanceRange", "exif:ImageUniqueID", "exif:GPSVersionID", "exif:GPSLatitude", "exif:GPSLongitude", "exif:GPSAltitudeRef", "exif:GPSAltitude", "exif:GPSTimeStamp", "exif:DateTimeOriginal,", "exif:DateTimeDigitized.", "exif:GPSTimeStamp", "exif:GPSSatellites", "exif:GPSStatus", "exif:GPSMeasureMode", "exif:GPSDOP", "exif:GPSSpeedRef", "exif:GPSSpeed", "exif:GPSTrackRef", "exif:GPSTrack", "exif:GPSImgDirectionRef", "exif:GPSImgDirection", "exif:GPSMapDatum", "exif:GPSDestLatitude", "exif:GPSDestLongitude", "exif:GPSDestBearingRef", "exif:GPSDestBearing", "exif:GPSDestDistanceRef", "exif:GPSDestDistance", "exif:GPSProcessingMethod", "exif:GPSAreaInformation"];
    var myCameraRawArray = ["crs:AutoBrightness", "crs:AutoContrast", "crs:AutoExposure", "crs:AutoShadows", "crs:BlueHue", "crs:BlueSaturation", "crs:Brightness", "crs:CameraProfile", "crs:ChromaticAberrationB", "crs:ChromaticAberrationR", "crs:ColorNoiseReduction", "crs:Contrast", "crs:CropTop", "crs:CropLeft", "crs:CropBottom", "crs:CropRight", "crs:CropAngle", "crs:CropWidth", "crs:CropHeight", "crs:CropUnits", "crs:Exposure", "crs:GreenHue", "crs:GreenSaturation", "crs:HasCrop", "crs:HasSettings", "crs:LuminanceSmoothing", "crs:RawFileName", "crs:RedHue", "crs:RedSaturation", "crs:Saturation", "crs:Shadows", "crs:ShadowTint", "crs:Sharpness", "crs:Temperature", "crs:Tint", "crs:ToneCurve", "crs:ToneCurveName", "crs:Version", "crs:VignetteAmount", "crs:VignetteMidpoint", "crs:WhiteBalance"];
    var myInfo = new Array;
    var myDoc = app.activeDocument;
    var myLinks = app.documents[0].links;
    for ( i = 0; i < myLinks.length; i++)
       getMetaData ( myLinks[i] );
    writeData ( 'Metadaten zu ' + myDoc.name + '\r-----------\r\r' + myInfo.join ( '\r\r'), File ('~/Desktop/Metadaten_' + myDoc.name.replace(/.indd$/, '') + '.txt'));
    // ===============================================================
    //                                  Funktionen
    // ===============================================================
    function getMetaData ( aLink )
       var myLinkXmp = aLink.linkXmp.properties.toSource().replace( /^\(\{/,'' ).replace (/\)\}$/,'').replace( /parent.+$/,'').replace(/:/g, ':\t').split( ', ');
       var myString = aLink.name;
       myString += loopLinkXmp ( aLink, myLinkXmpArray );
       myString += loopArray ( aLink, "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/",  "Iptc4xmpCore:CreatorContactInfo/Iptc4xmpCore:",  myIPTCArray);
       myString += loopArray ( aLink, "http://ns.adobe.com/photoshop/1.0/",  "", myPSArray );
       myString += loopArray ( aLink, "http://ns.adobe.com/tiff/1.0/", "", myTiffArray );
       myString += loopArray ( aLink, "http://ns.adobe.com/exif/1.0/", "", myExifArray );
       myString += loopArray ( aLink, "http://ns.adobe.com/camera-raw-settings/1.0/",  "", myCameraRawArray );
       myInfo.push( myString.replace( /, $/,'') );
    function loopArray( aLink, s1, s2, anArray )
       var temp = '\r\t--- ' + s1 + ' ---\r\t';
       for ( var a = 0; a < anArray.length; a++)
          try {
             var theEvalString = 'aLink.linkXmp.getProperty(\"' + s1 + '\", \"' + s2 + anArray[a] + '\")';
             var myCode = eval( theEvalString );
             if ( myCode != '' )
                temp += '[' + anArray[a] + ']\t' +  myCode + '\r\t'; 
          } catch (e){ //temp +=e + '\r'
       return temp;
    function loopLinkXmp( aLink, anArray )
       var temp = '\r\t--- LinkMetadata ---\r\t';
       for ( var a = 0; a < anArray.length; a++)
          try {
             var theEvalString = 'aLink.linkXmp.' + anArray[a] ;
             var myCode = eval( theEvalString );
             if ( myCode != '' )
                temp += '[' + anArray[a] + ']\t' +  myCode + '\r\t'; 
          } catch (e){ //temp +=e + '\r'
       return temp;
    function writeData ( aData, theFile )
       theFile.open ( 'w', 'Text', 'R*ch' );
       theFile.encoding = 'UTF-8';
       theFile.write ( aData );
       theFile.close ();
    Ressources:
    Adobe XMP Developer Center: http://www.adobe.com/devnet/xmp/
    XMP Specification: http://www.adobe.com/devnet/xmp/pdfs/xmp_specification.pdf
    Martin Fischer

  • Incrementally appending  custom XMP metadata into PDF files

    I have a problem writing custom XMP metadata into a PDF document (I'm using the XMP Toolkit SDK).
    The problem is that I don't know whether is possible to expand the XMP packet in order to append metadata incrementally into the document, and, if it is possible, I don't know how to do it. The program I wrote succesfully appends an item to an array four times, but it fails when trying to append the fifth one. The reason obviously is that the packet gets full and there is not room for more metadata. The error message, if I force the PutXMP call, is:
    ERROR: Can't fit into specified packet size
    So, what can I do? How to enlarge the packet or make it expandable? Or, otherwise, have I to inject a new XMP packet with the up-to-date information in it? How?
    And a last question: Have I to scan for packets when dealing with PDF files? No smart handlers are available for this kind of files?
    Thanks in advance.
    Xabier Artola.
    Univ. of the Basque Country.

    Were you able to find a solution to this problem? I am having the same issue.
    Jason

  • Incrementally appending custom XMP metadata

    I have a problem writing custom XMP metadata into a PDF document (I'm using the XMP Toolkit SDK).
    The problem is that I don't know whether is possible to expand the XMP packet in order to append metadata incrementally into the document, and, if it is possible, I don't know how to do it. The program I wrote succesfully appends an item to an array four times, but it fails when trying to append the fifth one. The reason obviously is that the packet gets full and there is not room for more metadata. The error message, if I force the PutXMP call, is:
    ERROR: Can't fit into specified packet size
    So, what can I do? How to enlarge the packet or make it expandable? Or, otherwise, have I to inject a new XMP packet with the up-to-date information in it? How?
    And a last question: Have I to scan for packets when dealing with PDF files? No smart handlers are available for this kind of files?
    Thanks in advance.
    Xabier Artola.
    Univ. of the Basque Country.

    One of the known limitations of the XMPToolkit is that it is NOT smart about PDF documents - it treats them as "generic binary" and thus can not add beyond the pre-allocated whitespace already in the PDF.
    If you are doing any serious operations of XMP with PDF - I recommend that you look at licensing the Adobe PDFLibrary which is a full functioning PDF library and incorporates the XMPToolkit inside it (among many other things).

  • CS5 - Live Caption with Custom XMP Metadata?

    (I USE CS5 on WINDOWS 7)
    I currently have a custom panel (witch custom namespace) up and running, and have many of my photos correctly tagged.
    For this example, I opened a new Indesign document, placed a previously tagged JPEG
    Then I right-click the image from the Links panel and select "XMP File Info..."
    I see the custom XMP namespace tab, along with all of the data I previously entered (so I know the image is correctly tagged)
    BUT, when I go to Caption Setup, I only see legacy IPTC options from the metadata dropdown
    Am I missing something here? 

    I'd be interested to know the same thing.  I have metadata stored in a custom XMP namespace, populated through a custom File Info panel.  But I don't see if it's possible to edit the 'Metadata' list in the Live Captions Setup to access these or if it's limited to the default set that I can see when I access the feature?

  • Ideas about viewing/displaying XMP metadata from Reader ?

    Hi,
    We are using Acrobat 9 to add XMP metadata to PDF documents.
    These documents are viewed by the others employees with Acrobat Reader.
    Since "File->Properties->Advanced Metadata" and "Custom Info Panels" are not available in Reader, how can we display XMP metadata ?
    Do you know some ways or plug-ins to do this ?
    Our custom XMP metadata schema have more than 20 fields, so I don't want to put all these informations in the "Keywords" field of the document properties.
    Any idea would be greatly appreciated !
    Thank you !

    Michael... what you are describing above is not accurate.  The iPod Classic does NOT have the capability of using the "Album Artist" field from iTunes to sort music.  This particular metadata field is not even available to the iPod Classic.  Only the "Artist" field is available.  (It is the other way around with the iPod Touch, iPhone, and Ipad -- for these iOS devices, the "Album Artist" field is the one that is available, and not the "Artist" field.)  There are numerous posts here in the discussion forums from other folks who are frustrated by the same issue.  The iPod Classic can only sort and group songs together by "Artist" -- that is, the track artist.  And the track artist is often quite different from the album artist.  For example...  I have 29 different Barbra Streisand albums in iTunes.  For all of them, the album artist is "Barbra Streisand."  There are several different track artists however.  Most of them are just Barbra Streisand.  But she also does a duet or two on several albums.  So there are track artists like...  "Barbra Streisand with Kim Carnes," and "Barbra Streisand with Barry Gibb," and many more like that.  After syncing to my iPod Classic, when I sort on the iPod's "Artist" field, I get about 25 different iterations of "Barbra Streisand and .... " as the artist.  Yes, "Barbra Streisand" does appear among them.  But the only songs that are listed under "Barbra Streisand" are those that she sang by herself, and where she is the only track artist.  Given the setup of the iPod Classic as it is now, using firmware version 2.0.4, it is NOT possible to use the Album Artist field to sort and group songs together. 

  • Allow User to Create Metadata Fields

    There should be a way to allow user to define their own metadata fields - Bridge is the most logical place to do this.
    For example I'd like to add a field for color profile info:
    1 a boolean field which indicates whether or not a CP is embeded,
    1 text field for the name of the CP (This info should already be built into metadata - but until it is, I'd sure like a quick way to check)
    --Take a look at Portfolio for an example of how this could be done.
    thanks, xandr

    yes yes.. I want to do this also??

  • Automating XMP Metadata in Illustrator CS4

    How do I use actions or scripting within Illustrator CS4 on the Mac to automatically copy all of the text within an Illustrator pasteboard and paste it into the Keyword XMP Metadata field under File Info.
    I've tried Select/Text objects, then Copy (Cmd-C), File Info (Shift-Cmd-Opt-I), Paste (Cmd-V after clicking in the Keyword field), OK.
    It works fine manually, but the File Info sequences are not saved in the action.
    Thanks for any help I can get.

    I guess this is not feasible via Actions, but possible through JavaScripting. You may try that. Hope information helps.

  • Custom metadata fields used in file name?

    Hi,
    Is it possible to add to the list of meta data fields that are used as tokens for file names?
    I've been using Rob Cole's excellent custom meta data in the library module and now I want to use these fields to name the file during export...
    While at it, is it possible to add the same custom meta data fields to the info view overlay in develop mode?
    Cheers,
    Bonny

    1.  Its possible an export filter (post-process action) could be defined that supports the custom metadata for export filenaming (Lightroom itself does not have any other hooks I'm aware of) - dunno if anyone's done that, yet.
    2.  I think not (see PM).
    Rob

  • Custom metadata fields in ISCSSearchResponse

    Hi all,
    we are search UCM with CIS using the ISCSSearchAPI. The returned ISCSSearchResponse object contains most of our metadata fields as properties, but some are missing. Of course, we need one of the missing ones.
    When I call the GET_SEARCH_RESULTS service from UCM, the missing metadata field is returned.
    Does anybody know how I can configure the search to return my specific field as well?
    thanks,
    Harold

    Hi Ronen,
    you can
    If you have defined the properties working now, you know this path: System Administration - System Configuration - KM - Configuration - CM - Global Services - Property Structures.
    There you have the property structure DefaultPropertiesStructure using the property group all_groups.
    all_groups consists of system, custom ... etc. in the order the tab strips come up when using details for a resource. Within each group, under group items the property or the property group to be rendered appears (in the order they get rendered). This holds recursively for all groups.
    If you have defined your properties within group "custom", just arrange them in Group Items in the order you like.
    Hope it helps
    Detlev

  • Custom XMP panels don't show in Bridge CS4's Metadata palette

    I've got a CS4 custom XMP panel working (using the "Generic" panel in the SDK) but I can't get it to display in the metadata palette of Bridge CS4 (the thing normally bottom right in the default Bridge "essentials" view).
    In the old CS3 format, you could do this by adding an "fbname" attribute to fields of the custom panel. How do we now do this in the new SDK?
    The Bridge metadata palette is mentioned on page 25 of the SDK programmer's guide, but the example given is merely of Dublin Core keywords (i.e. dc:subject) so shows in the Bridge metadata palette by default already.

    Following on from this question, is it possible to build up a Metadata panel group of fields drawn from different namespaces? (by group I mean something like the IPTC Core label and arrow which expands into the IPTC fields).
    One would have a heading such as "My data", which when expanded shows x fields from one namespace #1 and y fields from namespace #2. I've tried to do this by leaving the namespace blank and hardcoding it and the prefix into the properties' name argument - eg http://ns.adobe.com/photoshop/1.0/photoshop:Urgency
    Hope this isn't a hijack!
    John

  • Referencing Single Metadata Fields in a Custom Web Template

    Is there a way to refer to a single metadata field in a custom web gallery template? I don't see a syntax for this in the files that define the templates that ship with Aperture. They appear to refer only to the metadata as a collection. Is there a way to refer to individual fields?

    The problem is that Web Templates are deployed to a gallery in a site collection and aren't available in Central Admin when creating a new site collection.  YOu have to create the site collection without choosing a template and then choose your web
    template when you first access the root site in the site collection.  Here's an article that discusses that process here:
    http://sharepointchick.com/archive/2011/02/10/using-web-templates-to-create-site-collections.aspx
    Other than that Vesa's article is still the best one and works essentially the same in 2013 as it does in 2010.
    Paul Stork SharePoint Server MVP
    Principal Architect: Blue Chip Consulting Group
    Blog: http://dontpapanic.com/blog
    Twitter: Follow @pstork
    Please remember to mark your question as "answered" if this solves your problem.

  • In adobe camera raw, what metadata field needs to be filled in so that if an image is uploaded to facebook by a customer, your copyright/info shows up?

    In adobe camera raw, what metadata field needs to be filled in so that if an image is uploaded to facebook by a customer, your copyright/info shows up?

    Facebook used to but now I believe it includes it. I also read that possible facebook adds metadata to images uploaded to albums but not wall posts. Regardless, what metadata field has to be filled in?

Maybe you are looking for

  • Using find/change in Indesign CS4

    I am needing to change date colors for a calendar.  That for instance for the Month of June the 1,4,7 &10 need to be in red, 2,5,8,11 need to be blue and 3,6,9, & 12 need to be green.  Does anyone know of a way to do this without having to enter each

  • Need help with Java Programming

    Hello All, I dont know how to save all the lines separatly and then work with the numbers? Example TxtIn: 2 5 0 9 2 3 4 // I dont know how many lines will appear, and dont know how many numbers in a line 1 2 3 9 1 5 4 2 0 0 5 6 2 5 1 9 4 6 1 5 4 9 1

  • Error while applying Mini-pack 11i.BNE.D

    I am in the process of applying ATG RUP6. For the above patch we need to apply reprequsite patch 3218526 (BNE: Patch 11i.BNE.D ) , We are already on We are on Web Applications Desktop Integrator 11i.BNE.C BUt while applying 3218526 (BNE: Patch 11i.BN

  • Iphone 4 suddenly dropped music on Motorokr S-9 HD headphones

    Hi there- I had been using my Motorokr s-9 HD & Verizon iphone 4 without problems for a few weeks until recently when I could suddenly no longer listen to music (but can still make/take calls). In a Motorola support group, someone was experiencing a

  • Keys for photoshop

    help where do i find the keys for photoshop and dreamweaver?