- 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