CARVIEW |
Implementation report for the API for Media Resources 1.0
- This version:
- https://www.w3.org/2008/WebVideo/Annotations/drafts/API/implementation-report.html
- Editors:
- Thierry Michel, W3C
- Florian Stegmaier, University of Passau
- Werner Bailer, JOANNEUM RESEARCH
- Authors:
- 이원석(WonSuk Lee), Samsung Electronics Co., Ltd.
- Thomas Kurz, Salzburg Research Forschungsgesellschaft m.b.H.
- Sebastian Schaffer, Salzburg Research Forschungsgesellschaft m.b.H.
Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules appl
Table of contents
1 Summary
This document reports the interoperability test results for multiple implementations of features of the API for Media Resources 1.0 specification and is maintained by the Media Annotations Working Group.
The purpose of the implementation report is to document that at least two independent implementers can independently read the same specification and produce two independent interoperable implementations for a given feature. This tests both the clarity of the specification, in that the specification language must be clear enough to sufficiently describe an interoperable implementation, as well as the implementability of the specification itself. This implementation test report is not meant to test conformance of any given API for Media Resources 1.0 implementation.
Implementations tested
- Implementation 1: Linked
Media Framework of Salzburg
Research Forschungsgesellschaft m.b.H.
The Linked Media Framework (LMF) is a general purpose framework for building Linked Data and Semantic Web applications. It provides commonly used services linked Linked Data Server, Linked Data Client, SPARQL Endpoint, Semantic Search, Rule-based Reasoner, Versioning, etc. that can be used for building custom Semantic Web applications using e.g. the LMF Client Libraries available on the project website. The Media-Module builds upon the LMF and provides special services for images and videos (e.g., fragmentation, metadata extraction, etc.). - Implementation 2: Firefox
extension of University
of Passau and JOANNEUM
RESEARCH
This showcase utilizes the API in a browser extension following the asynchronous mode of operation. The application enables a user to generate a video playlist, where videos and corresponding metadata informations from different platforms can be arranged in an unified way. As a proof of concept, the browser extension is able to handle YouTube and Vimeo videos. - Implementation 3: Web
service implementation of University of Passau and JOANNEUM RESEARCH
This implementation is integrated into an image gallery showing images as well as its metadata information. Here, the API is implemented as a Web service following the synchronous mode of operations abstracting from the actual underlying metadata formats. As a proof of concept, Dublin Core and MPEG-7 are used.
Note:
a) Availability of the code:
All implementations are open source projects. Linked
Media Framework (LMF) is hosted at Github, the browser extension
can be downloaded at the prototype page (the dpi includes the source
files and can be extracted similar to a ZIP file). The third
implementation (web service) can be downloaded at source forge.
b) Usage of the API
Two papers explain the implementations and provide details for the
browser extension and the server side implementation. The code pieces of
the API will soon be available in the LMF branch at Github (maybe with
the next major release). Currently it can be found here:
https://svn.salzburgresearch.at/svn/lmf-media/
This project needs the complete LMF as dependency. That´s why it seems
to be a little bit "tiny".
2 Results of the implementation report
The Implementation results are publicly released and are intended solely to be used as a proof of API for Media Resources 1.0 specification implementability. It is only a snap shot of the actual implementation behaviors at one moment of time, as these implementations may not be immediately available to the public. The interoperability data is not intended to be used for assessing or grading the performance of any individual implementation. Any feedback on implementation and use of this specification would be very welcome. To the extent possible, please provide a separate email message for each distinct comment.
The test cases are devided into two groups: test cases independent of metadata formats (see Section 4.1) and test cases, that need format specific information to be conducted (see Section 4.2 & 4.3). In terms of the metadata format specific test cases, every property has to be listed in two instantiations (core attributes vs. specific attributes). Here, an implementation has to at least behave correct for the core properties (specific properties are optional).
Results are "passed","failed", "not supported" (not executed) or "not tested".
All tests have fulfill the exit criteria of the API for Media Resources 1.0 CR version. Each test has at least two passing implementations which have been developed independently.
Comments on this document should be sent to public-media-annotation@w3.org. The archive of public comments is available at https://lists.w3.org/Archives/Public/public-media-annotation/.
3. Formats in scope
The following tables lists the formats that were selected as in-scope. We distinguish multimedia metadata formats that focus on the description of multimedia resources from multimedia container formats. In the case of the latter, only few technical properties are relevant, because of they widespread usage.
The API for Media Resources 1.0 specification defines a specific JSON response structure, to which a implementation has to be compliant. To enable an (automatic) evaluation, a normative JSON response for a example media resource for each metadata format has been created covering all properties defined in the corresponding mapping table. These files are available in Section 3.1 & 3.2.
Note: The example media resources have been taken from the in the Ontology for Media Resource 1.0 test suite. The normative JSON responses provided in sections 3.1 & 3.2 only consider the properties that have a corresponding property in the core vocabulary defined in the Ontology for Media Resource 1.0. An example for a response for a property wihout a corresponding partner in the core vocabulary can be found in the atomic examples, e.g., Y3-a in section 5.2.
Note: The example media resources have been taken from the Ontology for Media Resource 1.0 test suite.
3.1 Multimedia metadata formats in scope
3.2 Multimedia container formats
Metadata format | Example | Normative JSON response |
---|---|---|
3gp | 3GP
example |
JSON |
f4v | F4V
example |
JSON |
flv | FLV
example |
JSON |
mp4 | MP4
example |
JSON |
quicktime | Quicktime
example |
JSON |
4 General behaviour tests
For some of the general behaviour test cases no input data can be given. For this test cases, only a valid JSON response shall be produced.
test # | Metadata format | Coverage | relevant parameters of the method call | Implementation 1 | Implementation 2 | Implementation 3 | Normative JSON response |
---|---|---|---|---|---|---|---|
G1 | Format independent | Implemented Mode | n/a | passed | passed | passed | |
G2-incorrect G2-correct | Format independent | Not-existent property | propertyNames=["fakeIdentifier"] | passed | passed | passed | Not existant property Response G2 correct |
Format independent | Passing NULL value instead property array | propertyNames=NULL | passed | passed | passed | Passing NULL value instead property array Response | |
G4-incorrect G4-correct | Format independent | Property array filled with duplicates | propertyNames=["identifier","identifier"] | passed | passed | passed | Property array filled with duplicates Response |
G5 | Format independent | Multiple metadata sources specified | Two metadata sources need to be created | passed | passed | passed | Multiple metadata sources specified Response |
G6 | Format independent | No metadata source specified | metadataSources = NULL; | passed | passed | passed | No metadata source specified Response |
G7 | Format independent | Non-existent metadata source | metadataSources = new MetadataSource[1]; metadataSources[0] = new MetadataSource("https://a.non.existing.url/file.xml","dc") | passed | passed | passed | Non-existent metadata source Response |
Note: In the above general behaviour test cases, the following test cases
1- The following test cases need no input
- G1 (correct as is)
- for G2 and G3 this could be arbitrary source metadata files, but the abnormality being tested (NULL, duplicates) is in the parameter list being passed to the call, not in the source file.
- G5: multiple source files must be present, but they can be arbitrary.
- G6: by definition of the test case there is no source.
- G7: by definition of the test case the specified source is not there.
5 Test cases for specific metadata formats
5.1 Tests for DC format
test # | Metadata format | MA Property | coverage | Implementation 1 | Implementation 2 | Implementation 3 | Normative JSON response |
---|---|---|---|---|---|---|---|
D1-a | DC | identifier | core attributes | passed | not supported | passed | identifier core
response |
D1-b | DC | identifier | specific attributes | passed | not supported | passed | identifier
specific response |
D2-a | DC | title | core attributes | passed | not supported | passed | title core response |
D2-b | DC | title | specific attributes | passed | not supported | passed | title specific response |
D3-a | DC | language | core attributes | passed | not supported | passed | language core response |
D3-b | DC | language | specific attributes | passed | not supported | passed | language specific response |
D4-a | DC | locator | core attributes | passed | not supported | passed | No existing property mapped in DC |
D4-b | DC | locator | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D5-a | DC | contributor | core attributes | passed | not supported | passed | contributor core response |
D5-b | DC | contributor | specific attributes | passed | not supported | passed | contributor specific response |
D6-a | DC | creator | core attributes | passed | not supported | passed | creator core response |
D6-b | DC | creator | specific attributes | passed | not supported | passed | creator specific response |
D7-a | DC | date | core attributes | passed | not supported | passed | date core response |
D7-b | DC | date | specific attributes | passed | not supported | passed | date specific response |
D8-a | DC | location | core attributes | passed | not supported | passed | location core response |
D8-b | DC | location | specific attributes | passed | not supported | passed | location specific response |
D9-a | DC | description | core attributes | passed | not supported | passed | description core response |
D9-b | DC | description | specific attributes | passed | not supported | passed | description specific response |
D10-a | DC | keyword | core attributes | passed | not supported | passed | keyword core response |
D10-b | DC | keyword | specific attributes | passed | not supported | passed | keyword specific response |
D11-a | DC | genre | core attributes | passed | not supported | passed | genre core response |
D11-b | DC | genre | specific attributes | passed | not supported | passed | genre specific response |
D12-a | DC | rating | core attributes | passed | not supported | passed | No existing property mapped in DC |
D12-b | DC | rating | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D13-a | DC | relation | core attributes | passed | not supported | passed | relation core response |
D13-b | DC | relation | specific attributes | passed | not supported | passed | relation specific response |
D14-a | DC | collection | core attributes | passed | not supported | passed | collection core response |
D14-b | DC | collection | specific attributes | passed | not supported | passed | collection specific response |
D15-a | DC | copyright | core attributes | passed | not supported | passed | copyright core response |
D15-b | DC | copyright | specific attributes | passed | not supported | passed | copyright specific response |
D16-a | DC | policy | core attributes | passed | not supported | passed | No existing property mapped in DC |
D16-b | DC | policy | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D17-a | DC | publisher | core attributes | passed | not supported | passed | publisher core response |
D17-b | DC | publisher | specific attributes | passed | not supported | passed | publisher specific response |
D18-a | DC | targetAudience | core attributes | passed | not supported | passed | No existing property mapped in DC |
D18-b | DC | targetAudience | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D19-a | DC | fragment | core attributes | passed | not supported | passed | No existing property mapped in DC |
D19-b | DC | fragment | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D20-a | DC | namedFragment | core attributes | passed | not supported | passed | No existing property mapped in DC |
D20-b | DC | namedFragment | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D21-a | DC | frameSize | core attributes | passed | not supported | passed | No existing property mapped in DC |
D21-b | DC | frameSize | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D22-a | DC | compression | core attributes | passed | not supported | passed | No existing property mapped in DC |
D22-b | DC | compression | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D23-a | DC | duration | core attributes | passed | not supported | passed | No existing property mapped in DC |
D23-b | DC | duration | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D24-a | DC | format | core attributes | passed | not supported | passed | format core response |
D24-b | DC | format | specific attributes | passed | not supported | passed | format specific response |
D25-a | DC | samplingRate | core attributes | passed | not supported | passed | No existing property mapped in DC |
D25-b | DC | samplingRate | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D26-a | DC | frameRate | core attributes | passed | not supported | passed | No existing property mapped in DC |
D26-b | DC | frameRate | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D27-a | DC | averageBitRate | core attributes | passed | not supported | passed | No existing property mapped in DC |
D27-b | DC | averageBitRate | specific attributes | passed | not supported | passed | No existing property mapped in DC |
D28-a | DC | numTracks | core attributes | passed | not supported | passed | No existing property mapped in DC |
D28-b | DC | numTracks | specific attributes | passed | not supported | passed | No existing property mapped in DC |
test # | Metadata format | Function call | Implementation 1 | Implementation 2 | Implementation 3 | Normative JSON response |
---|---|---|---|---|---|---|
D29 | DC | getOriginalMetadata | passed | not supported | passed | getOriginalMetadata response |
5.1.2 Filter Tests for DC format
test # | Metadata format | MA Property | coverage | Implementation 1 | Implementation 2 | Implementation 3 | Normative JSON response |
---|---|---|---|---|---|---|---|
D2-f | DC | title | filter criteria "de" language | passed | not supported | passed | title filter response for "de" language |
D9-f | DC | description | filter criteria "de" language | passed | not supported | passed | title filter response for "de" language |
5.2 Tests for YouTube format
test # | Metadata format | MA Property | coverage | Implementation 1 | Implementation 2 | Implementation 3 | Normative JSON response |
---|---|---|---|---|---|---|---|
Y1-a | YouTube | identifier | core attributes | passed | passed | not supported | identifier core
response |
Y1-b | YouTube | identifier | specific attributes | passed | passed | not supported | identifier
specific response |
Y2-a | YouTube | title | core attributes | passed | passed | not supported | title core response |
Y2-b | YouTube | title | specific attributes | passed | passed | not supported | title specific response |
Y3-a | YouTube | language | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y3-b | YouTube | language | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y4-a | YouTube | locator | core attributes | passed | passed | not supported | locator core response |
Y4-b | YouTube | locator | specific attributes | passed | passed | not supported | locator specific response |
Y5-a | YouTube | contributor | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y5-b | YouTube | contributor | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y6-a | YouTube | creator | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y6-b | YouTube | creator | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y7-a | YouTube | date | core attributes | passed | passed | not supported | date core response |
Y7-b | YouTube | date | specific attributes | passed | passed | not supported | date specific response |
Y8-a | YouTube | location | core attributes | passed | passed | not supported | location core response |
Y8-b | YouTube | location | specific attributes | passed | passed | not supported | location specific response |
Y9-a | YouTube | description | core attributes | passed | passed | not supported | description core response |
Y9-b | YouTube | description | specific attributes | passed | passed | not supported | description specific response |
Y10-a | YouTube | keyword | core attributes | passed | passed | not supported | keyword core response |
Y10-b | YouTube | keyword | specific attributes | passed | passed | not supported | keyword specific response |
Y11-a | YouTube | genre | core attributes | passed | passed | not supported | genre core response |
Y11-b | YouTube | genre | specific attributes | passed | passed | not supported | genre specific response |
Y12-a | YouTube | rating | core attributes | passed | passed | not supported | rating core response |
Y12-b | YouTube | rating | specific attributes | passed | passed | not supported | rating specific response |
Y13-a | YouTube | relation | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y13-b | YouTube | relation | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y14-a | YouTube | collection | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y14-b | YouTube | collection | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y15-a | YouTube | copyright | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y15-b | YouTube | copyright | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y16-a | YouTube | policy | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y16-b | YouTube | policy | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y17-a | YouTube | publisher | core attributes | passed | passed | not supported | publisher core response |
Y17-b | YouTube | publisher | specific attributes | passed | passed | not supported | publisher specific response |
Y18-a | YouTube | targetAudience | core attributes | passed | passed | not supported | targetAudience core response |
Y18-b | YouTube | targetAudience | specific attributes | passed | passed | not supported | targetAudience specific response |
Y19-a | YouTube | fragment | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y19-b | YouTube | fragment | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y20-a | YouTube | namedFragment | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y20-b | YouTube | namedFragment | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y21-a | YouTube | frameSize | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y21-b | YouTube | frameSize | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y22-a | YouTube | compression | core attributes | passed | passed | not supported | compression core response |
Y22-b | YouTube | compression | specific attributes | passed | passed | not supported | compression specific response |
Y23-a | YouTube | duration | core attributes | passed | passed | not supported | duration core response |
Y23-b | YouTube | duration | specific attributes | passed | passed | not supported | duration specific response |
Y24-a | YouTube | format | core attributes | passed | passed | not supported | format core response |
Y24-b | YouTube | format | specific attributes | passed | passed | not supported | format specific response |
Y25-a | YouTube | samplingRate | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y25-b | YouTube | samplingRate | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y26-a | YouTube | frameRate | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y26-b | YouTube | frameRate | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y27-a | YouTube | averageBitRate | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y27-b | YouTube | averageBitRate | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y28-a | YouTube | numTracks | core attributes | passed | passed | not supported | No existing property mapped in YouTube |
Y28-b | YouTube | numTracks | specific attributes | passed | passed | not supported | No existing property mapped in YouTube |
test # | Metadata format | Function call | Implementation 1 | Implementation 2 | Implementation 3 | Normative JSON response |
---|---|---|---|---|---|---|
Y29 | YouTube | getOriginalMetadata | passed | passed | not supported | getOriginalMetadata
response |
A References
- [3GP]
- 3GPP Specifications. Available for download at https://www.3gpp.org/specifications.
- [DIG35]
- DIG35 Specification - Metadata for Digital Image. April 2001. Available for download at https://www.bgbm.org/TDWG/acc/Documents/DIG35-v1.1WD-010416.pdf .
- [DMS-1]
- DMS-1 (SMPTE 380M-2004). April 2001. Available for download at https://www.smpte.org/standards .
- [Dublin Core]
- DCMI Metadata Terms. January 2008. Available for download at https://dublincore.org/documents/2008/01/14/dcmi-terms/ . The latest version of DCMI Metadata Terms is available at https://dublincore.org/documents/dcmi-terms/ .
- [EBUCore]
- EBUCore v.1.0. December 2008. Available for download at https://tech.ebu.ch/publications/tech3293.
- [EXIF]
- EXIF 2.2. Specification by JEITA, April 2002. Available for download at https://www.exif.org/Exif2-2.PDF .
- [Flash]
- Adobe Flash Video File Format Specification Version 10.1. 2010. Available for download at https://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf.
- [LOM]
- Draft Standard for Learning Object Metadata. July 2002. Available for download at https://ltsc.ieee.org/wg12/files/LOM_1484_12_1_v1_Final_Draft.pdf .
- [ID3]
- ID3 tag version 2.4.0. February 1999. Available for download at https://www.id3.org/Developer_Information .
- [IPTC]
- IPTC Standard Photo Metadata 2008. IPTC Core Specification Version 1.1, IPTC Extension Specification 1.0, Document Revision 2, June 2008. Available for download at https://www.iptc.org/std/photometadata/2008/specification/IPTC-PhotoMetadata-2008.pdf
- [IPTC NewsML]
- IPTC NewsML-G2. Available for download at https://www.iptc.org/cms/site/ .
- [METS]
- Metadata Encoding & Transmission Standard 1.7. Available for download at https://www.loc.gov/standards/mets/ .
- [Media RDF]
- Media RDF. Available for download at https://digitalbazaar.com/.
- [Media RSS]
- Yahoo! Media RSS Module - RSS 2.0 Module. March 2008. Available for download at https://video.search.yahoo.com/mrss .
- [MP4]
- ISO/IEC 14496-14 MP4 file format. date 2003. Available for download at https://www.iso.org/iso/catalogue_detail.htm?csnumber=38538.
- [MPEG-7]
- Information technology Multimedia content description interface Part 10: Schema definition. Available for download at https://www.chiariglione.org/mpeg/working_documents/mpeg-07/schema_def/cd.zip.
- [OWL2 Profiles]
- OWL 2 Web Ontology Language Profiles. W3C OWL Working Group. Available for download at https://www.w3.org/TR/owl2-profiles/.
- [RDF]
- Resource Description Framework (RDF). W3C RDF Working Group. Available for download at https://www.w3.org/RDF/ .
- [SMPTE]
- SMPTE Metadata. Available for download at https://www.smpte-ra.org/mdd/RP210v11-pub-20080415.2048.xls .
- [TTML]
- Glenn Adams. Timed Text Markup Language (TTML) 1.0. W3C Recommendation 18 November 2010. Available for download at https://www.w3.org/TR/2010/REC-ttaf1-dfxp-20101118/.
- [TXFeed]
- TXFeed standard 0.9. December 2007. Available for download at https://clearerchannel.org/docs/tx_metadata_standard_0_9.pdf .
- [TV-Anytime]
- ETSI 102 822-3-1 V1.4.1. November 2007. Broadcast and On-line Services: Search, select, and rightful use of content on personal storage systems("TV-Anytime"). Part 3: Metadata, Sub-part 1: Phase 1 - Metadata schemas .
- [XML Schema 2]
- Biron, P. V. and A. Malhotra. XML Schema Part 2: Datatypes Second Edition. W3C Recommendation, October 2004. Available for download at https://www.w3.org/TR/2004/REC-xmlschema-2-20041028/ . The latest version of XML Schema Part 2 is available for download at https://www.w3.org/TR/xmlschema-2/ .
- [XMP]
- XMP Specification Part 1 - Standard Schemas. Adobe, 2010. Available for download at https://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart1.pdf.
- XMP Specification Part 2 - Standard Schemas. Adobe, 2010. Available for download at https://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart2.pdf.
- [YouTube Data API Protocol]
- YouTube Data API Protocol. April 2008. Available for download at https://code.google.com/intl/en/apis/youtube/2.0/reference.html .