This is part two of my Linked Data Series. You can find the first post here. Linked Data is still a very abstract concept to many. My goal in this series is to demystify the notion. To that end I thought “wouldn’t it be cool to put Linked Data to practice, to build a proof-of-concept record”, so I did. I decided to create a Linked Data catalog record, because I wanted to write something relatively quickly, though I later found out that even writing a simple catalog record in Linked Data was going to be more effort than I anticipated.
About the Record
Link to display record: link
Link to visual graph of record: link
Link to code: link
First, here’s a link to the display record. It might take a second to load, as it is pulling in a bit of data. At first glance it doesn’t seem to be anything special. It just looks like a normal HTML display. However, under the hood there’s a lot of Linked Data magic going on. Almost all of the data you see on the page, including text values and links, are coming from RDF files (RDF is a framework for representing Linked Data. I’ll go into more detail on RDF in a future post). There’s actually multiple levels of Linked Data in the record. The first level of data is coming from an RDF file I wrote to represent the resource, in this case the book Moby-Dick. The second level of data, labels such as
Melville, Herman, 1819-1891 and any data nested under
more info, is coming from third party resources that I am linking to in my RDF file. For example,
Subject labels are being pulled from the Library of Congress’ Linked Data Service.
Since all of the data is being pulled from online resources (using PHP), there is no duplication of data that we currently see in traditional catalogs. One big advantage to this is that when one of the linked-to sources updates its metadata, that metadata is automatically updated on the page I created!
In case this still seems foreign to you, I would recommend taking a look at a visual graph representation of the record. All of the little bubbles represent RDF resources that I am linking to. Clicking on one of the bubbles will expand that resource and will show other metadata about the linked-to resource. This is what Linked Data is about!
Here’s a screenshot example of the visual graph:
There are a few challenges that I ran into during this adventure. First, I had to write a fair amount of PHP code to pull in the Linked Data from RDF files. I will admit that I’m a novice PHP coder, so this is most likely due to my limited knowledge of PHP and the EasyRDF PHP library that is being used. I challenge any coders out there to hack at my code and provide a cleaner solution! Here’s a link to the code (hosted on GitHub).
The second challenge is that in order to pull in third party Linked Data, I had to familiarize myself with each source’s data model (ex. Dublin Core, MADS). Almost every source’s metadata that I linked to had its own model, which reminds me of tales about the early days of library XML metadata before interoperability standards were designed. We need more interoperability in the Linked Data world! The third challenge is the main caveat of Linked Data: dependency on stable URLs. If any of the sources I link to decide to remove a URL or alter a domain without providing a URL redirection, that data is unreachable. Linked Data adds more power to metadata, but with great power… In all seriousness, stable URLs are needed in order for the Web of Data to become a reality.
All of these challenges are things developers and metadata professionals will need to face, not necessarily the catalogers, reference librarians, and archivists.
I hope this proof-of-concept example helped demystify Linked Data (at least to a small extent). If you have any questions or want to talk about the code, don’t hesitate to contact me! I will continue my efforts in future posts. Up next in my series will be a few interviews with librarians in various aspects of digital libraries who are working on or with Linked Data. Until next time!