Archive

Linked Data

I have been slowly taking the MARC codes lists and modeling them as linked data. I released a handful of them several months ago (geographic area codes, countries and languages) and have added more as I get inspired or have some free time. Most recently, I’ve added the Form of Item, Target Audience and Instruments and Voices terms.

The motivation behind modeling these lists is that they are extremely low-hanging fruit: they are controlled vocabularies that (usually) appear in the MARC fixed (or, at any rate, controlled) fields. What this means is that they should be pretty easy to link to from our source data. The identifiers are based on the actual code values in an effort to not actually have to look anything up when converting MARC into RDF.

I’ll go over each code list and explain what their function and how to link to them from MARC:

Geographic Area Codes

The purpose of these is a little vague:  they’re hard to classify as to what exactly they are; there are states (Tennessee), countries (India), continents (Europe), geographic features (Andes, Congo River, Great Rift Valley), areas or regions (Tropics, “Southwest, New” –whatever that means–, “Africa, French-speaking Equatorial“), hemispheres (Southern hemisphere), planets (Uranus) and then there are entries for things like “Outer Space” and “French Community” (which, as I understand it, is sort of the French analog to the British Commonwealth); in short, they are all over the map (literally).

I have modeled these things as wgs84:SpatialThings.  I don’t know if that is 100% appropriate (e.g. “French Community”) and am open to recommendations for other classes.  Given that they are somewhat hierarchical and are used to define the geographic “subject” of a work, it might be more appropriate to model them using SKOS.

The geographic area code is found in the MARC 043$a (which is a repeatable subfield in a non-repeatable field) and should be a 7 character string (although this may vary based on local cataloging practices).  Most codes will be much shorter than this: the specification requires right padding hyphens (“-“) to seven characters (“aa—–“).  To turn this into a MARC Codes URI, you’ll drop the trailing hyphens and append “#location”:

http://purl.org/NET/marccodes/gacs/aa#location

http://purl.org/NET/marccodes/gacs/n-us-md#location

I’m not sure what is actually the “best” property to use to link to these resources, but I have been using <http://purl.org/dc/terms/spatial> (although, admittedly, not consistently).  This would entail that these resources are also a <http://purl.org/dc/terms/Location> which is something I can live with.

Not all of the geographic area codes are linked to anything, but some are linked to the authorities at http://id.loc.gov/authorities/, dbpedia, geonames, etc.

Country Codes

These are a little more consistent than the geographic area codes, but they are definitely not all “countries”.  With a few exceptions (United States Misc. Caribbean Islands) they are actual “political entities”, with countries (Guatemala), and states/provinces/territories (Indiana, Nova Scotia, Gibraltar, Gaza Strip).

Like the geographic area codes, I’ve modeled these as wgs84:SpatialThings.

They can appear in several places in the MARC record:  they will almost always appear in the 008 in positions 15-17 as the “country of publication”.  If one code isn’t enough to convey the full story of the production of a particular resource (!), the code may also appear in the 044$a (repeatable subfield, non-repeatable field).  There are a couple of fields that the country codes could appear in:  the 535$g, 775$f and the 851$g; I have no idea how common it would be to find them there (and they have a different meaning — the 535/851 define the location of the item, for example).

To generate the country code URI, take the value from the MARC 008[15-17] or 044$a, strip any leading or trailing spaces and append “#location”.  The URIs look like:

http://purl.org/NET/marccodes/countries/aw#location

http://purl.org/NET/marccodes/countries/sa#location

To link to these resources, I’ve been using the RDA:placeOfPublication property, although I’m sure there are plenty of others that are appropriate (seems like a logical property for BIBO, for example).

The original code lists are also grouped by region, but there are no actual codes for this.  I created some for the purposes of linked data:

http://purl.org/NET/marccodes/countries/regions/1#location

http://purl.org/NET/marccodes/countries/regions/2#location

etc. (until 12).

Since we only use the country codes in MARC to note the place of publication, these are far less valuable than the geographic area codes (which are much more ambiguous in meaning), since it’s much more interesting when you can say that all of these things:

http://api.talis.com/stores/rsinger-dev4/services/sparql?query=SELECT+%3Fs%0D%0AWHERE+{%0D%0A%3Fs+%3Fp+%3Chttp%3A%2F%2Fpurl.org%2FNET%2Fmarccodes%2Fgacs%2Fe-ie%23location%3E%0D%0A}&output=json

are referring to the same place as all of these things:

http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&should-sponge=&query=select+distinct+%3Fs+where+%0D%0A{%3Fs+%3Chttp%3A%2F%2Fdbpedia.org%2Fontology%2Fcountry%3E+%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FIreland%3E}&debug=on&timeout=&format=text%2Fhtml

which, in turn, are referring to the same place as this:

http://www.freebase.com/view/en/ireland/-/book/book_subject/works

which, in my mind, has tremendous potential.

Language Codes

Unbeknownst to me prior to undertaking this project, the Library of Congress is actually the maintenance agency for ISO 639-2 and the ISO codes are actually a derivative of the MARC codes list.  They aren’t actually a 1:1 mapping (there are 22 codes that are different in the ISO list), but they’re extremely close.  What is particularly nice about this is that most locale/language libraries are aware of these codes so it’s fairly easy to map to other locales (notably ISO 639-1, which is used by xml:lang).

The Library of Congress publishes an XML version of the list which is what I used to model it as linked data.  One of the nice features of this list was that it has attributes on the name that denote whether or not there’s an authority record for it:

<name authorized=”yes”>Abkhaz</name>

which we can then take, tack the substring ” language” onto it and look it up in http://id.loc.gov/authorities:

http://id.loc.gov/authorities/sh85000169#concept

giving us a link between things created in a particular language and things created about that language.

To use the language codes, take the value of positions 35-37 of the 008 or the 041 (the different subfields all define a different place the text might have a different language, so check the spec on this one).  I doubt it hardly ever appears in actual data, but the 242$y might have the language of the translated title.

Take that value (be sure to strip any trailing/leading whitespace — it’s supposed to be 3 characters: no more, no less) and plug it into the following URI template:

http://purl.org/NET/marccodes/languages/{abc}#lang

for example:

http://purl.org/NET/marccodes/languages/tur#lang

http://purl.org/NET/marccodes/languages/myn#lang

etc.

The language resources link to id.loc.gov (as mentioned above) as well as Lingvoj/Lexvo (they link to both, where appropriate, since there are likely still many data sources out there still using the Lingvoj URIs).  There are a handful (for example, Swedish) that link to dbpedia, but since those links are available in Lexvo, it’s not essential they appear here.

Musical Composition Codes

There are two codes lists that are directly related to music-based resources (sound recordings, scores and video): the musical composition codes and the Instruments and Voices codes.  Given that there has been a lot of work put into modeling music data for the linked data cloud, I thought it would be most useful to orient both of these lists to be used with the Music Ontology.

The composition codes basically denote the “genre” of the music contained in the resource.  It’s extremely classical-centric and sometimes lumps a lot of different forms into one genre code (try Divertimentos, serenades, cassations, divertissements, and notturni on for size), but they are definitely a start for finding like resources.

They are modeled as mo:Genre resources and include links to id.loc.gov, dbpedia and wikipedia.  To get the code, either use positions 17-19 of the MARC 008 field or the 047$a (both a repeating field and subfield).  The normalized code should always be two alpha characters long, and downcased.

They go into a URI template like:

http://purl.org/NET/marccodes/muscomp/{ab}#genre

such as:

http://purl.org/NET/marccodes/muscomp/sy#genre

or

http://purl.org/NET/marccodes/muscomp/mz#genre

It would be really useful to find other datasources that use mo:Genre to link these to.

Form of Item Codes

This is a very small list that broadly describes the format of the resource being described.  This is probably most useful to use with dcterms:format, so they’ve all been modeled with the rdf:type dcterms:MediaType.  A full third of the codes describe microforms (granted, out of 9 total), which should give you some some sense of how relevant these are.

Getting the code from the MARC record is dependent on the kind of record you’re looking at.  For books, serials, sound recordings, scores, computer files and mixed materials, take the 23rd position from the 008.  For visual materials and maps use the 29th position.  They should be one, lowercase alpha character.

URIs look like:

http://purl.org/NET/forms/{a}#form

The resources link to http://id.loc.gov/authorities (think Genre/Form terms), http://id.loc.gov/vocabulary/graphicMaterials and (for a couple) dbpedia.

Ideally, these will eventually link to whatever is analogous is RDA (if somebody can point that out to me).

Frequency of Issue Codes

Unlike the previous code list, this one seems much more useful.  It is used to define how often a continuing resource is updated.  Unfortunately, it is extremely print-centric (the only term more frequent than “daily” is “Continuously updated” which is defined as “Updated more frequent than daily.”), but some of the terms would seem to hold value even outside of the library context (Annual, Biweekly, Quarterly, etc.).  It doesn’t take a tremendous leap of the imagination see how these might be useful for events calendars (Monthly, etc.) or for GoodRelations-type datasets (“Semi-annual Blowout Sale!”).

To get the code from the MARC record, check the 008[18] or the 853-855$w.  Presumably, this should only appear for continuing resources (SER).  It’s a one letter code, lower cased.

The URIs look like:

http://purl.org/NET/marccodes/frequency/{x}#term

They are modeled as dcterms:Frequency resources and link to dbpedia where available.

Target Audience Codes

This is another fairly short, extremely generalized list.  It is primarily useful to determining the age-level of children’s resources, most likely (5 of the 8 terms are for juvenile age groups).  They are of rdf:type dcterms:AgentClass.  Resources are linked (where appropriate — and maybe even a few that aren’t) to dbpedia and http://id.loc.gov/authorities/.

For books, music (scores, sound recordings), computer files and visual materials, get the code from the 008[22].  It is one letter, lower cased.  URIs follow the fairly consistent form we’ve seen thus far:

http://purl.org/NET/marccodes/target/{x}#term

http://purl.org/NET/marccodes/target/c#term

http://purl.org/NET/marccodes/target/f#term

Instruments and Voices Codes

The terms describe the instruments or vocal groups that either appear (for sound recordings, for example) or are intended (scores) for a particular resource.  Like many of the other codes lists, these are quite general and maddeningly biased towards classical music (Continuo, Celeste, Viola d’amore, but no banjo or sitar, for instance).  Like the form of musical composition terms, I modeled these to use with the Music Ontology, namely as the object of mo:instrumentmo:Instrument has this note:

Any taxonomy can be used to subsume this concept. The default one is one extracted by Ivan Herman
from the Musicbrainz instrument taxonomy, conforming to SKOS. This concept holds a seeAlso link
towards this taxonomy.

so these terms have been modeled as skos:Concepts.  There are skos:exactMatch relationships to the Musicbrainz taxonomy where appropriate (as well as links to id.loc.gov/authorities and dbpedia).  The original code lists had an implication of hierarchy (“Larger ensemble – Dance orchestra” should be thought of as “Dance orchestra” with broader term “Larger ensemble”), but that’s not actually used in MARC.  I broke these broader terms out on their own for this vocabulary, since it seemed useful in a linked data context and wouldn’t actually hurt anything (the codes are two letters, so the “broader terms” are just using the first letter).

To get the code, use the MARC 048 subfield a or b (for ensemble or solo parts, respectively) and take the first two characters (which must be letters).  This code may be followed by two digit number (left padded with zeroes) signifying how many parts.  Drop this number, if present.

URI template:

http://purl.org/NET/marccodes/musperf/{xx}#term

http://purl.org/NET/marccodes/musperf/cd#term

http://purl.org/NET/marccodes/musperf/ed#term

Other Codes

I am not sure when or if I will model any more codes lists.  Ideally, the Library of Congress should be doing these (they’ve done the relator codes, and preservation events lists).  The only other lists I can see much value in are the Specific Material Form Terms (the MARC 007) and the MARC Organization codes.

I have done a bit of work on the specific material forms list, but it’s fairly complicated.  My current approach is a hybrid of controlled vocabularies and RDF schema (after all, it makes sense for a globe to be rdf:type <http://purl.org/NET/marccodes/smd/terms/Globe> rather than that be some property set on an untyped resource).  For an RDF schema, though, I would prefer a “better” namespace than purl.org/NET/, although perhaps it doesn’t really matter much.

No matter what, it would certainly push the limits of my freebie Heroku account that this is currently running on.

I am definitely open to any ideas or recommendations people might have for these (and requests for other lists to be converted).  I’d also be interested to see if are able to use them with your data.

I’ve been accused of several things in the Linked Data community this week:  a circular reasoner, a defender of the status quo “just because that’s how we’ve always done it”, and (implicitly) an httpRange-14 apologist.  Quite frankly, none of these are true or quite what I mean (and I’m, of course, over dramatizing the accusations), but let’s focus on the last point for now (which may clear up some of the other points, as well).

Ed’s post (as he explains at the end) is a reference to me calling bullshit on his claim that “[he] think[s] httpRange-14 is an elaborate scholarly joke“.  Let me be clear from the outset that I am not particularly dogmatic on this issue.  That is, I don’t think the internet will break if the resource and carrier are conflated, but I also don’t think it’s that hard to keep them separated and that the value in doing so outweighs any perceived costs.

First off, let me explain what httpRange-14 is to the uninitiated (skip on ahead if you feel pretty comfortable with this).  In linked data (or semantic web, you can choose the words that feel best to you), we run into a problem with identifiers and what, exactly, they are identifying.  Let’s say I want to talk about Chattanooga.  Well, “Chattanooga” is not a web resource, but if I want talk about it unambiguously, it needs an identifier, preferably an HTTP URI, so other people can refer to it unambiguously and say things about it and discover it.  Ideally, this web representation would also have human readable (HTML) and machine readable (RDF, XML, etc.) versions.  But the important distinction here is that the city of Chattanooga cannot be retrieved on the web, only these HTML, RDF, XML surrogates.  If the surrogate has the same URI (identifier) as the resource it’s describing it starts to get difficult to figure out what we’re talking about.

So to try to make this a little clearer, let’s say I am making this representation of Chattanooga for people to use:

<http://dilettantes.code4lib.org/resources/Chattanooga_Tennessee.rdf>
    rdf:type <http://www.geonames.org/ontology#P.PPL> ;
    <http://www.geonames.org/ontology#population> "155554"^^xsd:integer.

But I also feel I need to let people know some administrative data about it, so they know when it was last modified and by whom, etc., so:

<http://dilettantes.code4lib.org/resources/Chattanooga_Tennessee.rdf>
    rdf:type <http://www.geonames.org/ontology#P.PPL> ;
    <http://www.geonames.org/ontology#population> "155554"^^xsd:integer ;
    dcterms:creator <http://dilettantes.code4lib.org/about#me> ;
    dcterms:created "2010-07-09"^^xsd:date ;
    dcterms:modified "2010-07-09T11:25:00-6"^^xsd:dateTime .

Now things get confusing.  My new assertions (dcterms:creator/created/modified) are being applied to the same resource as my city, so I am saying that I created a city of 155,554 people today (what have you done today, chump?).

The way we get around this is through a layer of indirection, basically we just use two URIs: you request an RDF document from http://dilettantes.code4lib.org/resources/Chattanooga_Tennessee.rdf and it has something like:

<http://dilettantes.code4lib.org/resources/Chattanooga_Tennessee#place>
  rdf:type <http://www.geonames.org/ontology#P.PPL> ;
  <http://www.geonames.org/ontology#population> "155554"^^xsd:integer.
<http://dilettantes.code4lib.org/resources/Chattanooga_Tennessee.rdf>
    rdf:type <http://xmlns.com/foaf/0.1/Document> ;
    <http://xmlns.com/foaf/0.1/primaryTopic> <http://dilettantes.code4lib.org/resources/Chattanooga_Tennessee#place> ;
    dcterms:creator <http://dilettantes.code4lib.org/about#me> ;
    dcterms:created "2010-07-09"^^xsd:date ;
    dcterms:modified "2010-07-09T11:25:00-6"^^xsd:dateTime .

And this keeps things a little clearer.  I created the document you’re looking at today, not the resource that the document is describing.  So this way when you say that my RDF is terrible (fair accusation) you’re not necessarily saying that about the city of Chattanooga (and vice versa).  You can read more about this at Cool URIs for the Semantic Web (by the way, I tend to favor the “hash URI” approach, for simplicity’s sake).

Now back to Ed’s post.  His argument is that if he uses http://en.wikipedia.org/wiki/William_Shakespeare as his identifier (referent, really) we should be smart enough to know when we say that this URI is a foaf:Person and that it was dcterms:created on “2001-10-14” that we’re referring to two different things.

The first comment is from Ian (full disclosure: my boss, fuller disclosure: this doesn’t mean I agree with him) who simultaneously “completely agrees” with Ed and yet supplies an argument that punches a gigantic hole in the side of Ed’s thesis.

To put it another way, sure, maybe we can tell that dcterms:created is a strange assertion for a foaf:Person and we have other ways to tell that Shakespeare was born in 1564 (via a bio:Birth resource or something), but this breaks down for books and all sorts of other entities.  So you have dcterms:created “2003-09-04” and dcterms:creator <http://en.wikipedia.org/wiki/Douglas_Coupland> on http://en.wikipedia.org/wiki/Girlfriend_in_a_Coma_%28novel%29 and we’ve now sown some confusion.  This ambiguity becomes more problematic down the road when the context changes (that is, assumptions I can make about wikipedia and wikipedia’s model don’t necessarily apply elsewhere).

Right around the time I graduated from high school, the guitarist in my band at the time made me a cassette copy of Jimi Hendrix’s “Jimi Plays Monterey“.  The sound quality was pretty terrible and, as I recall, my tape player ate it once making it even worse.  Still, I loved that album (Jimi, while playing Dylan’s “Like a Rolling Stone” says “I know I missed a verse, it’s alright, baby.”): I love the songs, I love the playing, I love the energy of the performance.  The medium that album came to me on, however, was subpar.  There are general attributes of “cassette tapes” and then there was “this particular recording on this particular cassette”.

At the same time in my life, I had a compact disc of the BulletBoys’ eponymous album.  Fidelity-wise, the sound of this album was orders of magnitude better than my copy of “Jimi Plays Monterey”, but pretty much everything else about it sucked.

The carrier is not the content.  Being able to refer to the quality of my dilapidated cassette without dragging the Jimi Hendrix Experience into it is useful.  I should be able to say that my BulletBoys CD sounded better than my Hendrix tape without that being a staggering example of bad taste.

In libraries, we have a long history of data ambiguity.  We have struggled enough to figure out the semantics in our AACR2/ISBD data that when we have the chance to easily and concretely identify the things we are talking about, we should take it.  I am not proposing abstracting things into oblivion with resources on top of resources – just sensibly being sure you’re talking about what you say you are.

Unfortunately, one of my problems with the new RDA vocabularies is that in several instances it schmushes multiple statements together to avoid the modeling the “hard parts” (this is precisely the same issue I have with Ian’s later comment).  For example, RDA has a bunch of properties that are intended to “hand wave” around the complexities of FRBR, such as http://RDVocab.info/Elements/otherDistinguishingCharacteristicOfTheExpression.  So you’d have something like:

<http://example.org/1>
    <http://RDVocab.info/Elements/title> "Something: a something something" ;
    <http://RDVocab.info/Elements/titleOfTheWork> "Something" .

What you’ve done here with “titleOfTheWork” is say that <http://example.org/1> has a work, is itself not a work and the work’s title is “Something”.   That’s some attribute!  But if we can say all of that, why would we not just model the work?! Even if we don’t know where in the WEMI chain <http://example.org/1> falls, if we did something like this:

<http://example.org/1>
    dcterms:title "Something: a something something" ;
    ex:hasWork <http://example.org/works/1234> .

<http://example.org/works/1234>
    a <http://RDVocab.info/uri/schema/FRBRentitiesRDA/Work>;
    dcterms:title "Something" .

we’ve now done something useful, unambiguous and reusable (and not ignoring FRBR while simultaneously defining it).  The closed nature of IFLA’s development of these vocabularies don’t lead to me have much hope, though.

But, again, back to Ed.  Like I said, I really don’t think the internet will fall apart and satellites will come crashing to the earth if we don’t adhere consistently to httpRange-14.  No, the reason why I call bullshit on Ed’s statement is because he finds the use of owl:sameAs on resources such as http://purl.org/NET/marccodes/muscomp/sn#genre to be inappropriate.  While in his post he claims it’s fine that we conflate the resource of William Shakespeare as a foaf:Person and foaf:Document that was modified on “2010-06-28T17:02:41-04:00”, he on the other hand questions the appropriateness of <http://purl.org/NET/marccodes/muscomp/sn#genre> owl:sameAs <http://dbpedia.org/resource/Sonatas> because by doing so it infers that <http://purl.org/NET/marccodes/muscomp/sn#genre> has a photo collection at <http://www4.wiwiss.fu-berlin.de/flickrwrappr/photos/Sonata> (which, in fact, has little to do with the musical genre and actually has a lot of pictures of Hyundais, among other things).

This is a perfectly fair, valid and important point (and one that absolutely needs to be addressed), but doesn’t this also mean he actually cares that we say what we really mean?

A couple of months ago, I hacked up a really simple proof-of-concept Sinatra that took an LCCN, called the Library of Congress’ LCCN Permalink service’s MARCXML output for that particular LCCN and tried to model it into linked data. It was really basic: it only returned RDF/XML and had no persistence layer to it, so I ran it using Heroku’s free hosting plan.

It worked pretty well but as I applied more and more functionality to it (looking for matches in Musicbrainz, LinkedMDB, DBpedia, Freebase, etc. — especially inefficient SPARQL regex queries), I kept running into execution timeout errors on Heroku. These are the exact same sorts of problems that the Umlaut ran into years ago and the solution required complicated threading and, eventually, AJAX requests to offload some of the response time of waiting for synchronous web services requests to return (or timeout or fail).

One thing I began doing with LinkedLCCN was persisting the graph into a Platform store, so once stored, any subsequent request for a resource was quite speedy. The problem was the initial request, the one that gathered all of the data to fill out the graph before it stored. Quite often this would timeout or throw an error (which, given that this was still very much a work in progress, would result a 500 error) meaning the resource was never saved to the Platform meaning all of the following requests would have to go through the same process until one of them finally succeeded. Since the freebie access on Heroku lets you run one process at a time, these long running (and timing out) requests would cause a backlog which would throw more errors.

It was becoming the embodiment of the phrase I used during my Code4Lib presentation: “Amateur Hour on the Internet”.

What was obviously needed was some asynchronous mechanism for giving back part of the graph, indicating to the requester that this was a partial response, and firing off a background task to complete the rest of the processing. Because there was no HTML interface, AJAX wasn’t an option. Even if there was an HTML interface (as there is now), AJAX still wouldn’t have been an option, because this was a service intended for web agents following their nose, not human surfers, so even if the agent is satisfied with the HTML response (for instance, when it eventually gets RDFa), curl (and its ilk) don’t have javascript, so the background process would never even have a chance to be called, anyway.

This meant the only viable solution to this problem was going to be via multiple processes. This also meant that Heroku wasn’t an option anymore (at least, not without a price), so I was going to migrate to my personal web host. In Ruby web frameworks, asynchronous processing comes in one of two forms:

  1. Threads/forks/etc.
  2. Queue schedulers

Based on my experience with the Umlaut, I wanted to avoid #1, if at all possible, or at the very least, use an existing, packaged solution that could drop fairly painlessly into Sinatra. I found a port of Merb’s run_later, but I could only ever get it to run once. Any succeeding request never seemed to fire off the process.

The queue schedulers generally required their own set of baggage: namely their own running daemon and a RDBMS. Since almost all of these projects originally started out as Rails plugins, they expect the application to have ActiveRecord and an RDBMS to store their jobs in. I didn’t have either.

I had settled on using Delayed Job, since there was, again, a Sinatra port. It took quite a bit of hacking to get this to work right (mainly around marshaling/unmarshaling objects), and I never could get the job logging to work very well, but it was successfully queuing and executing jobs in the background.

It was hard to manage, though. I use Capistrano for deployment and it was very difficult to control the Delayed Job daemon so that it would stop and start with the regular webservice. Again, it worked, but it felt very fragile. The sort of thing I could see breaking and having to spend hours trying to figure out how to fix it.

Last night, while I was trying to pull together my thoughts and links and whatnot for this post, I ran across Spork, which is a Sinatra port of Spawn. A couple hours later, LinkedLCCN was refactored to use Spork instead, and that’s how it’s running now.

So, LinkedLCCN now works like this:
$ curl -v -H “accept: application/rdf+xml” http://lccn.lcsubjects.org/93707283#i

* About to connect() to lccn.lcsubjects.org port 80 (#0)
*   Trying 208.83.140.6... connected
* Connected to lccn.lcsubjects.org (208.83.140.6) port 80 (#0)
> GET /93707283#i HTTP/1.1
> User-Agent: curl/7.19.6 (i386-apple-darwin9.8.0) libcurl/7.19.6 zlib/1.2.3
> Host: lccn.lcsubjects.org
> accept: application/rdf+xml
>
< HTTP/1.1 206 Partial Content
< Date: Fri, 12 Mar 2010 20:19:50 GMT
< Server: Apache/2.2.12 (Ubuntu)
< X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.2.11
< Content-Length: 6472
< Status: 206
< Content-Type: application/rdf+xml
<
<rdf:RDF xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:bibo="http://purl.org/ontology/bibo/" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:umbel="http://umbel.org/umbel#" xmlns:rda="http://RDVocab.info/Elements/"><rdf:Description rdf:about="http://purl.org/NET/lccn/93707283#i"><rda:placeOfPublication><rdf:Description rdf:about="http://purl.org/NET/marccodes/countries/nyu#location"></rdf:Description></rda:placeOfPublication><rda:titleProper>The freewheelin' Bob Dylan</rda:titleProper><foaf:isPrimaryTopicOf><rdf:Description rdf:about="http://lccn.loc.gov/93707283"></rdf:Description></foaf:isPrimaryTopicOf><bibo:uri>http://hdl.loc.gov/loc.mbrsrs/lp0001.dyln</bibo:uri><bibo:lccn>93707283</bibo:lccn><dcterms:title>The freewheelin' Bob Dylan</dcterms:title><dcterms:creator><rdf:Description rdf:about="http://purl.org/NET/lccn/people/n50030190#i"><owl:sameAs><rdf:Description rdf:about="http://dbpedia.org/resource/Bob_Dylan"></rdf:Description></owl:sameAs><foaf:name>Dylan, Bob, 1941-</foaf:name><umbel:isAbout><rdf:Description rdf:about="http://viaf.org/viaf/46946176.rwo"><foaf:name>Dylan, Bob, pseud</foaf:name><foaf:name>Dylan, Bob, 1941-</foaf:name><foaf:page rdf:resource="http://dbpedia.org/page/Wikipedia:WikiProject_Bob_Dylan" /><foaf:page rdf:resource="http://www.worldcat.org/wcidentities/lccn-n50-030190" /><foaf:page rdf:resource="http://en.wikipedia.org/wiki/Wikipedia:WikiProject_Bob_Dylan" /><skos:altLabel>Thomas, Robert Milkwood,</skos:altLabel><skos:altLabel>Dylan, B.</skos:altLabel><skos:altLabel>Thomas, Robert Milkwood</skos:altLabel><skos:altLabel>Landy, Bob,</skos:altLabel><skos:altLabel>Landy, Bob</skos:altLabel><skos:altLabel>Zimmermann, Robert Allen</skos:altLabel><skos:altLabel>Zimmerman, Roberto Allen</skos:altLabel><skos:altLabel>Zimmerman, Robert,</skos:altLabel><skos:altLabel>Porterhouse, Tedham,</skos:altLabel><skos:altLabel>Petrov, Sergei</skos:altLabel><skos:altLabel>Zimmerman, Robert Allen,</skos:altLabel><skos:altLabel>Blind Boy Grunt,</skos:altLabel><skos:altLabel>Gook, Roosevelt,</skos:altLabel><skos:altLabel>Dylan, Bob, 1941-</skos:altLabel><skos:altLabel>Zimmerman, Robert</skos:altLabel><skos:altLabel>Alias,</skos:altLabel><skos:altLabel>Zimmerman, Roberto Allen,</skos:altLabel><skos:altLabel>Dylan, Bob, pseud</skos:altLabel><skos:altLabel>Zimmerman, Robert Allen</skos:altLabel><skos:inScheme rdf:resource="http://viaf.org/viaf-scheme/#personalNames" /><skos:inScheme rdf:resource="http://viaf.org/viaf-scheme/#concept" /><skos:changeNote xml:lang="en">Modified by agency: OCoLC</skos:changeNote><skos:changeNote xml:lang="en">Transcribed by agency: OCoLC</skos:changeNote><skos:exactMatch rdf:resource="http://viaf.org/viaf/46946176.viaf" /><skos:exactMatch rdf:resource="http://libris.kb.se/auth/184248" /><skos:exactMatch rdf:resource="http://viaf.org/viaf/46946176.m21" /><skos:exactMatch rdf:resource="http://id.loc.gov/authorities/n50030190#concept" /><skos:exactMatch rdf:resource="http://en.wikipedia.org/wiki/Wikipedia:WikiProject_Bob_Dylan" /><skos:exactMatch rdf:resource="http://viaf.org/viaf/46946176.unimarc" /><skos:exactMatch rdf:resource="http://viaf.org/processed/BNF%7C13893566" /><skos:exactMatch rdf:resource="http://viaf.org/processed/NKC%7Cjn20000700458" /><skos:exactMatch rdf:resource="http://d-nb.info/gnd/118528408" /><skos:exactMatch rdf:resource="http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&amp;authority_id=XX821701" /><skos:exactMatch rdf:resource="http://viaf.org/processed/NLA%7C000035052711" /><skos:exactMatch rdf:resource="http://viaf.org/processed/NLIlat%7C000041704" /><skos:exactMatch rdf:resource="http://dbpedia.org/page/Wikipedia:WikiProject_Bob_Dylan" /><skos:exactMatch rdf:resource="http://viaf.org/processed/LAC%7C0008D6165" /><skos:exactMatch rdf:resource="http://viaf.org/processed/PTBNP%7C1270067" /><rdf:type rdf:resource="http://www.w3.org/2004/02/skos/core#Concept" /><dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2010-02-22T06:44:10+00:00</dcterms:modified><dcterms:type>person</dcterms:type><dcterms:identitifer>46946176</dcterms:identitifer><dcterms:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2009-03-03T12:03:19+00:00</dcterms:created></rdf:Description></umbel:isAbout><rdf:type><rdf:Description rdf:about="http://xmlns.com/foaf/0.1/Person"></rdf:Description></rdf:type></rdf:Description></dcterms:creator><dcterms:language><rdf:Description rdf:about="http://purl.org/NET/marccodes/languages/eng#lang"></rdf:Description></dcterms:language><dcterms:subject><rdf:Description rdf:about="http://id.loc.gov/authorities/sh87003307#concept"><owl:sameAs><rdf:Description rdf:about="info:lc/authorities/sh87003307"></rdf:Description></owl:sameAs><skos:inScheme><rdf:Description rdf:about="http://id.loc.gov/authorities#topicalTerms"></rdf:Description></skos:inScheme><skos:inScheme><rdf:Description rdf:about="http://id.loc.gov/authorities#conceptScheme"></rdf:Description></skos:inScheme><skos:prefLabel>Popular music--1961-1970</skos:prefLabel><rdf:type><rdf:Description rdf:about="http://www.w3.org/2004/02/skos/core#Concept"></rdf:Description></rdf:type><dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">1987-07-14T11:37:03-04:00</dcterms:modified><dcterms:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">1987-05-22T00:00:00-04:00</dcterms:created></rdf:Description></dcterms:subject><dcterms:subject><rdf:Description rdf:about="http://id.loc.gov/authorities/sh87003285#concept"><owl:sameAs><rdf:Description rdf:about="info:lc/authorities/sh87003285"></rdf:Description></owl:sameAs><skos:inScheme><rdf:Description rdf:about="http://id.loc.gov/authorities#topicalTerms"></rdf:Description></skos:inScheme><skos:inScheme><rdf:Description rdf:about="http://id.loc.gov/authorities#conceptScheme"></rdf:Description></skos:inScheme><skos:prefLabel>Blues (Music)--1961-1970</skos:prefLabel><rdf:type><rdf:Description rdf:about="http://www.w3.org/2004/02/skos/core#Concept"></rdf:Description></rdf:type><dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">1987-07-14T16:41:41-04:00</dcterms:modified><dcterms:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">1987-05-22T00:00:00-04:00</dcterms:created></rdf:Description></dcterms:subject></rdf:Description></rdf:RDF>
* Connection #0 to host lccn.lcsubjects.org left intact
* Closing connection #0

The important thing to note here is the HTTP status code sent back. LinkedLCCN sends back a 206, partial content because it wants the agent to try again later. “Thank you for waiting, here is some data to get you started. If you come back, it’s possible I might have some more.”

And, indeed, if the agent came back:
$ curl -v -H “accept: application/rdf+xml” http://lccn.lcsubjects.org/93707283#i

* About to connect() to lccn.lcsubjects.org port 80 (#0)
*   Trying 208.83.140.6... connected
* Connected to lccn.lcsubjects.org (208.83.140.6) port 80 (#0)
> GET /93707283#i HTTP/1.1
> User-Agent: curl/7.19.6 (i386-apple-darwin9.8.0) libcurl/7.19.6 zlib/1.2.3
> Host: lccn.lcsubjects.org
> accept: application/rdf+xml
>
< HTTP/1.1 200 OK
< Date: Fri, 12 Mar 2010 20:26:18 GMT
< Server: Apache/2.2.12 (Ubuntu)
< X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 2.2.11
< Content-Length: 40807
< Status: 200
< Content-Type: application/rdf+xml
<
<rdf:RDF xmlns:n0="http://dbtune.org/musicbrainz/resource/vocab/" xmlns:mo="http://purl.org/ontology/mo/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:n1="http://www.holygoat.co.uk/owl/redwood/0.1/tags/" xmlns:n2="http://purl.org/vocab/bio/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:bibo="http://purl.org/ontology/bibo/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:umbel="http://umbel.org/umbel#" xmlns:rda="http://RDVocab.info/Elements/"><rdf:Description rdf:about="http://purl.org/NET/lccn/93707283#i"><mo:label><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/label/011d1192-6f65-45bd-85c4-0400dd45693e"><n0:label_sortname>Columbia Records</n0:label_sortname><n0:label_name>Columbia Records</n0:label_name><n0:label_labelcode>162</n0:label_labelcode><n0:tag_count>1</n0:tag_count><n0:label_type>4</n0:label_type><n0:alias>Columbia Phonograph Company</n0:alias><n0:alias>Columbia</n0:alias><n0:alias>Colombia Records</n0:alias><n0:alias>Columbia d (Sony BMG)</n0:alias><n0:alias>Columbia Records</n0:alias><n0:alias>Columbia US</n0:alias><rdfs:label>Columbia Records</rdfs:label><n1:taggedWithTag><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/tag/20"></rdf:Description></n1:taggedWithTag><n1:taggedWithTag><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/tag/748"></rdf:Description></n1:taggedWithTag><n1:taggedWithTag><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/tag/1584"></rdf:Description></n1:taggedWithTag><n1:taggedWithTag><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/tag/111"></rdf:Description></n1:taggedWithTag><n1:taggedWithTag><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/tag/273"></rdf:Description></n1:taggedWithTag><n1:taggedWithTag><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/tag/343"></rdf:Description></n1:taggedWithTag><n1:taggedWithTag><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/tag/7179"></rdf:Description></n1:taggedWithTag><n1:taggedWithTag><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/tag/284"></rdf:Description></n1:taggedWithTag><n2:event><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/label/011d1192-6f65-45bd-85c4-0400dd45693e/birth"></rdf:Description></n2:event><foaf:based_near><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/country/US"></rdf:Description></foaf:based_near><dc:description>1931-1990: only USA, Canada&amp;Japan. 1990 to present: worldwide</dc:description><rdf:type><rdf:Description rdf:about="http://purl.org/ontology/mo/Label"></rdf:Description></rdf:type></rdf:Description></mo:label><mo:catalogue_number>CS 8786</mo:catalogue_number><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/5857b092-93ae-434d-b3f1-3f959396732b"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/98846b10-8951-43bc-ab24-c960e330cec8"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/88621637-8f03-427e-855f-4f52f712e80e"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/6d2b3714-478f-4fb1-9dfb-4a70c266453e"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/b654f8ad-071a-41c1-a1f7-1134de178ee8"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/9b08a5da-da77-4df8-b3ad-dcb481959013"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/f96f9b50-959d-4ef0-adc0-2995d179e6c8"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/2160818f-ce54-4502-a480-535389abef61"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/2f528602-ea36-480a-b1df-f7a5af36598e"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/19f571b4-b396-4113-9858-ab032074a3c7"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/00e37446-2e4c-409a-a8a1-ed94f1b01a57"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/536247b1-a87a-40c7-93e8-dd02fe3f3d54"></rdf:Description></mo:track><mo:track><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/track/67a68273-fa05-4ecf-aa85-648868a91b01"></rdf:Description></mo:track><rda:placeOfPublication><rdf:Description rdf:about="http://purl.org/NET/marccodes/countries/nyu#location"></rdf:Description></rda:placeOfPublication><rda:titleProper>The freewheelin' Bob Dylan</rda:titleProper><foaf:isPrimaryTopicOf><rdf:Description rdf:about="http://lccn.loc.gov/93707283"></rdf:Description></foaf:isPrimaryTopicOf><bibo:uri>http://hdl.loc.gov/loc.mbrsrs/lp0001.dyln</bibo:uri><bibo:lccn>93707283</bibo:lccn><rdf:type><rdf:Description rdf:about="http://purl.org/ontology/mo/Recording"></rdf:Description></rdf:type><dcterms:title>The freewheelin' Bob Dylan</dcterms:title><dcterms:creator><rdf:Description rdf:about="http://purl.org/NET/lccn/people/n50030190#i"><owl:sameAs><rdf:Description rdf:about="http://dbpedia.org/resource/Bob_Dylan"></rdf:Description></owl:sameAs><foaf:name>Dylan, Bob, 1941-</foaf:name><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r64001976#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007568523#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700813#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700816#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/unk84175336#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/95769390#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/99567433#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2002560219#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2002603175#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/72343809#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/78762560#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700762#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700760#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r64001986#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2001036739#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700847#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/76762320#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93727595#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93726950#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/00536083#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/unk84158135#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93727467#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2003636870#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93723725#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/88753098#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2008640899#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700841#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r65000579#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93705362#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700812#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700817#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007642887#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93711197#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700805#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700771#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700763#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/72762075#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2002042823#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700818#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700774#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/72763265#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/00717921#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/72761611#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93707558#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2002578760#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2010616561#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r68000463#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007657614#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/00725480#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/95776698#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2004304721#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/77760065#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700843#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700775#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/94771432#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700807#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r65001916#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/91759862#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2004593548#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/74217252#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/68128332#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700811#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2003696014#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/91762191#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700770#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007657624#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/71224759#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/71763700#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/74760392#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007659104#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93726958#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/98028826#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/74760100#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700748#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/unk84196471#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93712912#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/94023183#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700777#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/91759844#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/91759501#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/74762095#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2005045677#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93712878#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2009602196#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/85161136#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/99580439#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700758#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2001536938#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93703756#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700751#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700806#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700756#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700819#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/90750957#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/95701312#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2005434462#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/unk84219598#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/95786124#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93703149#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/99573938#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/79761946#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2002572371#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700804#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/66041425#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93710188#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/78056239#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93712977#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r67001398#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700244#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/66025502#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/86463558#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700815#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700768#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93727732#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/72002339#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93703465#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700844#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2005560717#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700753#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/91759880#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2008643295#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/unk84085959#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/76013692#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700800#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/92776389#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93711016#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93851416#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007657612#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/95129257#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700801#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700840#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700761#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/76760788#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007656198#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/70761002#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2003385743#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700765#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700755#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2008655199#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/73762412#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700242#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/92755348#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r64000162#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700846#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/77275475#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700769#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/80760343#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/97751545#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2006656398#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2008038164#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93715284#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700837#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700764#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700752#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700759#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2006657054#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/94770754#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93712995#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/00584949#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2004590181#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93729841#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/00717773#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2004592553#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2010616562#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2008300626#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/79761354#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93707283#i"><mo:label rdf:resource="http://dbtune.org/musicbrainz/resource/label/011d1192-6f65-45bd-85c4-0400dd45693e" /><mo:catalogue_number>CS 8786</mo:catalogue_number><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/5857b092-93ae-434d-b3f1-3f959396732b" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/98846b10-8951-43bc-ab24-c960e330cec8" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/88621637-8f03-427e-855f-4f52f712e80e" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/6d2b3714-478f-4fb1-9dfb-4a70c266453e" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/b654f8ad-071a-41c1-a1f7-1134de178ee8" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/9b08a5da-da77-4df8-b3ad-dcb481959013" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/f96f9b50-959d-4ef0-adc0-2995d179e6c8" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/2160818f-ce54-4502-a480-535389abef61" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/2f528602-ea36-480a-b1df-f7a5af36598e" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/19f571b4-b396-4113-9858-ab032074a3c7" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/00e37446-2e4c-409a-a8a1-ed94f1b01a57" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/536247b1-a87a-40c7-93e8-dd02fe3f3d54" /><mo:track rdf:resource="http://dbtune.org/musicbrainz/resource/track/67a68273-fa05-4ecf-aa85-648868a91b01" /><rda:placeOfPublication rdf:resource="http://purl.org/NET/marccodes/countries/nyu#location" /><rda:titleProper>The freewheelin' Bob Dylan</rda:titleProper><foaf:isPrimaryTopicOf rdf:resource="http://lccn.loc.gov/93707283" /><bibo:uri>http://hdl.loc.gov/loc.mbrsrs/lp0001.dyln</bibo:uri><bibo:lccn>93707283</bibo:lccn><rdf:type rdf:resource="http://purl.org/ontology/mo/Recording" /><dcterms:title>The freewheelin' Bob Dylan</dcterms:title><dcterms:creator rdf:resource="http://purl.org/NET/lccn/people/n50030190#i" /><dcterms:language rdf:resource="http://purl.org/NET/marccodes/languages/eng#lang" /><dcterms:subject rdf:resource="http://id.loc.gov/authorities/sh87003307#concept" /><dcterms:subject rdf:resource="http://id.loc.gov/authorities/sh87003285#concept" /><dcterms:isVersionOf rdf:resource="http://dbtune.org/musicbrainz/resource/record/942be4b0-12a2-4264-93a3-b45fa94c95c0" /></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/99583697#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93724609#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/75766013#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/66041424#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2008273503#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/96789283#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700776#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700820#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93711987#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700839#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2004585875#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/94162315#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700808#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/80772269#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r68000263#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700754#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2010616563#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2004577731#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/94770756#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2004571741#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/97109960#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r62000368#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/76353124#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93711249#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93037274#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/86753728#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/72760404#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700749#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700772#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/77018965#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700809#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/75762080#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r67001399#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2003643362#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/78531019#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2010617063#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93701439#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r68000262#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2003577486#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700766#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/76762851#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/unk84126692#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/94762678#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007657649#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700243#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93728350#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/92750713#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/94762887#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/95769054#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/72373613#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/99571326#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/91755140#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/92774846#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/77761257#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93711137#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2003643131#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2009015567#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/76770532#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/91761855#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93721323#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700803#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700810#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2010615421#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/94746592#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/72373606#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/92757783#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2002603171#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93712772#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700767#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2004056454#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r65000580#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/91759726#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93712861#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/81047774#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2005048013#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93702899#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/unk84096809#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700245#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/85040408#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/92754060#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/66052234#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/72251264#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700757#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700845#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/91761627#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700814#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2002556777#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700750#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/87754788#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/94770755#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700773#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/91760389#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r62000369#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2004560796#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/94750639#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2006571042#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r65001917#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/92754813#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700802#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2003574417#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93707133#i"></rdf:Description></foaf:made><foaf:made>
<rdf:Description rdf:about="http://purl.org/NET/lccn/2007700842#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/95769314#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r67001260#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2003573910#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/87752098#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2004462312#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/r64000161#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/unk85066726#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/71763246#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/99567232#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2006530396#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2001545149#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/91761930#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/2007700799#i"></rdf:Description></foaf:made><foaf:made><rdf:Description rdf:about="http://purl.org/NET/lccn/93709800#i"></rdf:Description></foaf:made><umbel:isAbout><rdf:Description rdf:about="http://viaf.org/viaf/46946176.rwo"></rdf:Description></umbel:isAbout><rdf:type><rdf:Description rdf:about="http://xmlns.com/foaf/0.1/Person"></rdf:Description></rdf:type></rdf:Description></dcterms:creator><dcterms:language><rdf:Description rdf:about="http://purl.org/NET/marccodes/languages/eng#lang"></rdf:Description></dcterms:language><dcterms:subject><rdf:Description rdf:about="http://id.loc.gov/authorities/sh87003307#concept"><owl:sameAs><rdf:Description rdf:about="info:lc/authorities/sh87003307"></rdf:Description></owl:sameAs><skos:inScheme><rdf:Description rdf:about="http://id.loc.gov/authorities#conceptScheme"></rdf:Description></skos:inScheme><skos:inScheme><rdf:Description rdf:about="http://id.loc.gov/authorities#topicalTerms"></rdf:Description></skos:inScheme><skos:prefLabel>Popular music--1961-1970</skos:prefLabel><rdf:type><rdf:Description rdf:about="http://www.w3.org/2004/02/skos/core#Concept"></rdf:Description></rdf:type><dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">1987-07-14T11:37:03-04:00</dcterms:modified><dcterms:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">1987-05-22T00:00:00-04:00</dcterms:created></rdf:Description></dcterms:subject><dcterms:subject><rdf:Description rdf:about="http://id.loc.gov/authorities/sh87003285#concept"><owl:sameAs><rdf:Description rdf:about="info:lc/authorities/sh87003285"></rdf:Description></owl:sameAs><skos:inScheme><rdf:Description rdf:about="http://id.loc.gov/authorities#conceptScheme"></rdf:Description></skos:inScheme><skos:inScheme><rdf:Description rdf:about="http://id.loc.gov/authorities#topicalTerms"></rdf:Description></skos:inScheme><skos:prefLabel>Blues (Music)--1961-1970</skos:prefLabel><rdf:type><rdf:Description rdf:about="http://www.w3.org/2004/02/skos/core#Concept"></rdf:Description></rdf:type><dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">1987-07-14T16:41:41-04:00</dcterms:modified><dcterms:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">1987-05-22T00:00:00-04:00</dcterms:created></rdf:Description></dcterms:subject><dcterms:isVersionOf><rdf:Description rdf:about="http://dbtune.org/musicbrainz/resource/record/942be4b0-12a2-4264-93a3-b45fa94c95c0"></rdf:Description></dcterms:isVersionOf></rdf:Description></rdf:RDF>
* Connection #0 to host lccn.lcsubjects.org left intact
* Closing connection #0

There is a much richer graph waiting for it.

Now, I have no idea if this is a valid application of the 206 response. The only references I see to it on the web deal with either cache proxies or range requests, but this seems like best way to alert the client that they aren’t getting the entire graph on this request.

So try it out and enjoy the new (and very basic) HTML interface.

Any comments, suggestions or criticisms on this approach are extremely welcome.

There were three main reasons that I took the old lcsh.info data that I had lying around and made http://lcsubjects.org:

  1. There were projects (including internal Talis ones) that really wanted to use that data and impatience was growing as to when the Library of Congress would launch id.loc.gov.
  2. Leigh Dodds had just released Pho and needed testers.  I had also, to date, done virtually nothing interesting with the Platform and wanted a somewhat turnkey operation to get started with it.
  3. While it’s great that the Library of Congress has made this data available, what is really interesting is seeing how this stuff relates to other data sets.  It’s unlikely that LoC will be too open to experimentation in this regard, these are, after all, authorities, so LCSubjects.org seemed a good place to provide both this experimentation and community-driven editing (which will, hopefully, be coming soon — Per an idea proposed by Chris Clarke, I would like to store user-added changes into their own named graphs, but that support needs to be added to the Platform) – which will, hopefully, make it more dynamic and interesting, while still deferring “authority” to the Library of Congress.

In the pursuit of number three, I had a handful of what I hoped were fairly “low hanging fruit” projects to help kickstart this process and actually make LCSubjects linked data instead of just linkable data (since that was fairly redundant to id.loc.gov/authorities/, anyway).  I have rolled out the first of these, which was an attempt to provide some sense of geocoding to the geographic headings.

There are just over 58,000 geographic subject headings in the current dump that LoC makes available.  11,362 of these have a ⁰ symbol in them (always in a non-machine readable editorial note).  I decided to take this subset and see how many I could identify as a single geographic “point” (i.e. a single, valid latitudinal and longitudinal coordinate pair), converted those from degree, minute, second format to decimal format and then saw how many of those had a direct match to points in Geonames.

Given that these are entered as prose notes, the matching was fairly spotty.  I was able to identify 9,127 distinct “points”.  837 concepts had either too many coordinates (concepts like this one or this one, for example) or only 1.  It’s messy stuff.  This also means there are about another 1,000 that missed my regex completely (/[0-9]*⁰[^NSEW]*[NSEW]\b/), but I haven’t had time to investigate what these might look like.  Given that these are just text notes, though, I was pretty surprised at the number of actual positive matches I got.  These are now available in the triples using the Basic Geo (WGS84 lat/long) vocabulary.

Making the links to Geonames wasn’t nearly as successful.  Only about 197 points matched.  Some of those that did could be considered questionable (click on the geonames link to see what I mean).  Others are pretty perfect.

All in all, a pretty successful experiment.  I’d like to take another pass at it and see how many prefLabels or altLabels match to the Geonames names and add those, as well.  Also, just after I added the triples, there was an announcement for LinkedGeoData.org, which will probably provide much better wgs84:location coverage (I can do searches like http://linkedgeodata.org/triplify/near/%latitude%,%longitude%/1 which would find points of interest within 1 meter of my coordinate pair).  So stay tuned for those links.

Lastly, one of the cooler by-products of adding these coordinates is functionality like this which roughly gives you all of the LCSH with coordinates found roughly inside the geographic boundaries of Tennessee (TN is a parallelogram, so this box style query isn’t perfect).

For Ian Davis‘ birthday, Danny Ayers sent out an email asking people to make some previously unavailable datasets accessible as linked data as Ian’s present.  It was a pretty neat idea.  One that I wish I had thought of.

Given that Ian is my boss (prior to about a month ago, Ian was just nebulously “above me” somewhere in the Talis hierarchy, but I now report to him directly) one could cynically make the claim that by providing Ian a ‘linked data gift’ that I would just be currying favor by being a kiss-ass.  You could make that claim, sure, but evidently you are not aware of how I hurt the company.

Anyway, as my contribution, I decided to take the data dumps from LibraryThing that Tim Spalding pretty graciously makes available [whoa, in the time that I first started this post until now, the data has gone AWOL, I suppose I did this just in time].  The data isn’t always very current and not all of the files are terribly useful (the tags one, for example, doesn’t offer much since the tags aren’t associated with anything — it’s just words and their counts), but it’s data and between ThingISBN and the WikipediaCitations I thought it would be worth it.

I wanted to take a very pragmatic approach to this: no triple store, no search, no rdf libraries, minimal interface.  Mostly this was inspired by Ed Summers‘ work with the Library of Congress Authorities, but, also, if Tim (or, whoever at LibraryThing) saw that making LibraryThing linked data was as easy as a few template tweaks (as opposed to a major change in their development stack) this exercise was much more likely to actually make its way into LibraryThing.

What I ended up with (the first pass released before the end of Ian’s birthday, I might add) was LODThing: a very simple application written in Ruby’s Sinatra framework, DataMapper and SQLite.  The entire application is less than 230 lines of Ruby (including the web app and data loader) plus 2 HAML templates and 2 builder templates for the HTML/RDFa and RDF/XML, respectively.  The SQL database has three tables, including the join table.  This is really simple stuff.  The only real reason it took a couple days to create was trying to get the data loaded into SQLite from these huge XML files.  Nokogiri is fast (well, Ruby fast), but a 200 MB XML file is pretty big.  It was nice to get acquainted with Nokogiri’s pull parser, though.

There are a few things to take away from this exercise.

  1. When data is freely available, it’s really quite simple to reconstitute it into linked data without any need to depart from your traditional technology stack.  There is nothing even remotely semantic-webby about LODThing except its output.
  2. We now have an interesting set of URIs and relationships to start to express and model FRBR relationships.
  3. The Wikipedia citations data is extremely useful and could certainly be fleshed out more.  One could imagine querying DBpedia or Freebase on these concepts and identifying if the Wikipedia article is actually referring to the work itself and use that.  Right now LODThing makes no claims about the relationships except that it’s a reference from Wikipedia.

LODThing isn’t really intended for human consumption, so there’s no real “default way in”.  The easiest way to use it is to make a URI from an ISBN:

If you know the LibraryThing ‘work ID’, you can get in that way, too:

Also, you can all of these resources as RDF/XML by replacing the .html with .rdf.

So, Tim, you wrote on the LT API page that you would love to see what people are doing with your data, here you go.  It would be even more awesome if it made it’s way back into LT — after all, it would alleviate some of the need for you to have a special API for this stuff.

Also, special thanks to Toby Inkster for providing a ton of help in getting this to resemble something that a linked data aware agent would actually want and finally turning the httpRange-14 light bulb on over my head.  He also immediately linked to it from his Amazon API LODifiier, which is sort of cool, too.

I’ll be happy to throw the sources into a github repository if anybody’s interested in them.