Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules appl
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
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".
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 http://lists.w3.org/Archives/Public/public-media-annotation/.
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.
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 |
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("http://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
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 |
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 |
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 |