- From: Gregg Kellogg <gregg@greggkellogg.net>
- Date: Mon, 25 Jun 2012 14:33:26 -0400
- To: Manu Sporny <msporny@digitalbazaar.com>
- CC: Daniel Leja <wolfbiter@gmail.com>, "public-linked-json@w3.org" <public-linked-json@w3.org>, Yves Raimond <Yves.Raimond@bbc.co.uk>
On Jun 24, 2012, at 6:34 PM, Manu Sporny wrote: > On 06/22/2012 02:57 PM, wolfbiter@gmail.com wrote: >> My question is this: Can someone point me in the direction of anyone >> who's already implementing a json-ld standard for music >> (specifically, songs)? If it doesn't exist, then I would definitely >> like input as to how to go about starting it! > > Hi Daniel, > > Yves Raimond (cc'd) and Frédérick Giasson have done a /ton/ of work in > this area and you could easily build on top of what they have created - > The Music Ontology. Here's a link to get you started: > > http://musicontology.com/ Also check out the work done by Alexandre Passant on Seevl: http://blog.seevl.net/2011/08/18/about-json-ld-and-content-negotiation/ > Also, Gregg Kellogg - who is one of the editors and authors of the > JSON-LD spec - was involved with a big music industry initiative to > express music using Linked Data, so he might have some good pointers for > you. Yes, this was broadly influenced by the Music Ontology, but sadly, didn't go anywhere. I blogged about it, and it may be useful for what you want to do. The transformation from a Turtle representation should be straightforward in JSON-LD: http://greggkellogg.net/2011/05/07/cme-and-the-semantic-web Gregg > You may also want to check out MusicBrainz, who releases all of their > data in Linked Data form (for free), using the Music Ontology among > other ontologies/vocabularies, - specifically, RDFa page markup. Check out: > > http://musicbrainz.org/release/591a8885-6b0c-437c-8546-1a4398f483c2 > > If you "view source" you can see a bunch of RDFa markup that points out > the data in the page... search for "mo:" and you will see the Music > Ontology markup in the page. You can extract the data in the page by > going here: > > http://rdf.greggkellogg.net/distiller?format=turtle&in_fmt=rdfa&uri=http://musicbrainz.org/release/591a8885-6b0c-437c-8546-1a4398f483c2 > >> I'm looking for something similar to the following (which is modeled >> after the "What is JSON-LD?" video): >> >> { "@context" : "http://example.com/sample.jsonld", "@id" : >> "http://example2.com/hotelcalifornia", "title" : "Hotel California", >> "artist" : "The Eagles", ... } >> >> But then, what is included by the ellipsis? The genre, track, >> length, and all other normal song identifiers? What about play count, >> rating, etc? > > Much of this is covered by the Music Ontology... you would have to > create a JSON-LD context that would map the simple 'terms' to full > URLs... then you could reference that context in your application and > make your music player a full-blown Linked Data music player. Here's an > outline of how you'd do it. The JSON-LD context file would look > something like this: > > { > "@context": { > "mo": "http://purl.org/ontology/mo/", > "dc": "http://purl.org/dc/terms/", > "foaf": "http://xmlns.com/foaf/0.1/", > "xsd": "http://www.w3.org/2001/XMLSchema#", > "Track": { > "@id": "mo:Track" > }, > "title": { > "@id": "dc:title", > }, > "trackNumber": { > "@id": "mo:track_number", > "@type": "xsd:positiveInteger" > }, > "duration": { > "@id": "mo:duration", > "@type": "xsd:duration" > }, > "publicationOf": { > "@id": "mo:publication_of", > "@type": "@id" > }, > "maker": { > "@id": "foaf:maker", > "@type": "@id" > }, > ... and so on > } > } > > Then you could use the context above like so in a JSON-LD document: > > { > "@context": "http://mysite.com/myMusicAppContext.jsonld", > "@type": "Track", > "title": "Paparazzi", > "trackNumber": 3, > "duration": "PT3M28S", > "publicationOf": > "http://musicbrainz.org/recording/7a1040dc-bac0-479c-9921-f43797ed0b81#_", > "maker": > "http://musicbrainz.org/artist/650e7db6-b795-4eb5-a702-5ea2fc46c848#_", > ... and so on > } > > The data above matches what the following page publishes as HTML+RDFa, btw: > > http://musicbrainz.org/release/591a8885-6b0c-437c-8546-1a4398f483c2 > >> It seems like those would be a good basis, and i would >> assume that users could create their own categories within this same >> context. It almost has to be extensible in that way, so users can >> write programs based off their own notation. > > This is easy with JSON-LD... your users would just do this: > > { > "@context": [ > "http://mysite.com/myMusicAppContext.jsonld", > "http://extensionsite.com/myMusicAppExtension.jsonld" > ], > ... > } > > Note that the first context is loaded, then the second one. Any term > defined in the second one overrides terms defined in the first one - > last declared wins. > >> For example, someone could write a program that cares about >> particular places in songs - say, the beginning of the chorus. The >> program could use some sort of notation to mark a location in the >> song in a way that both computers and humans can understand. Going >> with the theme above, the program would then only need to add to the >> sample's metadata a line like: >> >> "chorus" : ["127.03", "180.45"] > > Yep, easy to do in JSON-LD. > >> wherein the values are the timestamps (in seconds) of the sample (to >> which this particular data is attached) when the chorus begins. I >> would need to address the conflict when two different programs use >> the same name "chorus", and it is my understanding that use of >> json-ld would be appropriate. > > Yes, you can prefix the app name to differentiate which "chorus" you > mean, like so: > > { > ..., > "app1:chorus": ["127.03", "180.45"], > "app2:chorus": "Best Chorusss Evarrr!" > } > > or you could use two different terms: > > { > ..., > "chorusTimestamps": ["127.03", "180.45"], > "chorusTitle": "Best Chorusss Evarrr!" > } > > JSON-LD is very flexible in this respect. Hope this helps, keep asking > questions if you have more. :) > > -- manu > > -- > Manu Sporny (skype: msporny, twitter: manusporny) > Founder/CEO - Digital Bazaar, Inc. > blog: PaySwarm Website for Developers Launched > http://digitalbazaar.com/2012/02/22/new-payswarm-alpha/ >
Received on Monday, 25 June 2012 18:34:19 UTC