<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Steven Carl Anderson&#039;s Blog &#187; Digital Commonwealth</title>
	<atom:link href="http://scande3.com/category/digital-commonwealth/feed/" rel="self" type="application/rss+xml" />
	<link>http://scande3.com</link>
	<description>The melody of logic always plays the notes of truth.</description>
	<lastBuildDate>Thu, 20 Apr 2017 02:46:43 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>The Importance of Regional Aggregation Hubs for Digital Collections Part 2</title>
		<link>http://scande3.com/2017/04/the-importance-of-regional-aggregation-hubs-for-digital-collections-part-2/</link>
		<comments>http://scande3.com/2017/04/the-importance-of-regional-aggregation-hubs-for-digital-collections-part-2/#comments</comments>
		<pubDate>Thu, 20 Apr 2017 02:46:43 +0000</pubDate>
		<dc:creator><![CDATA[scande3]]></dc:creator>
				<category><![CDATA[Digital Commonwealth]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://scande3.com/?p=103</guid>
		<description><![CDATA[Recap, Caveats, and Decisions Last time I broke down some top level statistics comparing the traffic through the DPLA pipeline. As the notice above that post reads, there may be an issue with the DPLA numbers. It is worth noting &#8230; <a href="http://scande3.com/2017/04/the-importance-of-regional-aggregation-hubs-for-digital-collections-part-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Recap, Caveats, and Decisions</h2>
<p><a title="The Importance of Regional Aggregation Hubs for Digital Collections Part 1" href="http://scande3.com/2017/04/the-importance-of-regional-aggregation-hubs-p1/">Last time</a> I broke down some top level statistics comparing the traffic through the DPLA pipeline. As the notice above that post reads, there may be an issue with the DPLA numbers. It is worth noting that this isn&#8217;t directly the HTTP to HTTPS conversion: after all, none of the DPLA traffic for those statistics ever hits our site and the numbers come from DPLA&#8217;s Google Analytics. However, Michael Bitta of DPLA still feels there were broader statistical issues caused by some of their recent changes that could have affected their internal numbers as well.</p>
<p>With the above in mind, it is hard to do deep analysis of the dataset. It has become apparent that I don&#8217;t have it in me to complete a real &#8220;part 2&#8243; of this series&#8230; but that doesn&#8217;t mean that you can&#8217;t dig into the numbers as they exist! I&#8217;ve decided that I&#8217;ll provide the source data for anyone who might be curious.</p>
<p>All the qualifications from my part 1 blog post apply to these numbers. Additionally:</p>
<ul>
<li>Not all items have a DPLA ID listed because those items had no clickthroughs or views in the report from DPLA. I could have still scripted a way to look them up but never implemented that piece. You should be able to get the DPLA ID from the DPLA API using the Digital Commonwealth PID though.</li>
<li>Some DPLA items show a clickthrough but no item view. This is not a bug. On the DPLA site, is possible to click through to the place hosting an item without visiting the detailed item page on <a href="https://dp.la">https://dp.la</a>. Essentially the lack of a view means they did a search on DPLA and just clicked to view the item at its source location directly in the search results view.</li>
</ul>
<h2>The Dataset Download</h2>
<p>Download the dataset here: <a href="https://drive.google.com/open?id=0B398Bp3fT9A0YlNjSk42ZWw2Z0k">dpla_stats_2017_01_14-2017_03_14.xlsx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://scande3.com/2017/04/the-importance-of-regional-aggregation-hubs-for-digital-collections-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Importance of Regional Aggregation Hubs for Digital Collections Part 1</title>
		<link>http://scande3.com/2017/04/the-importance-of-regional-aggregation-hubs-p1/</link>
		<comments>http://scande3.com/2017/04/the-importance-of-regional-aggregation-hubs-p1/#comments</comments>
		<pubDate>Wed, 05 Apr 2017 17:33:25 +0000</pubDate>
		<dc:creator><![CDATA[scande3]]></dc:creator>
				<category><![CDATA[Digital Commonwealth]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://scande3.com/?p=96</guid>
		<description><![CDATA[Disclaimer: From DPLA&#8217;s Michael Bitta, their stats may be off a bit. To quote the twitter exchange: &#8220;I guess the issue here is that we know that the mechanism that was tracking outlinks and exposing the referrer data was broken. &#8230; <a href="http://scande3.com/2017/04/the-importance-of-regional-aggregation-hubs-p1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<blockquote>
<h6><strong>Disclaimer</strong>: From DPLA&#8217;s Michael Bitta, their stats may be off a bit. To quote the twitter exchange: &#8220;I guess the issue here is that we know that the mechanism that was tracking outlinks and exposing the referrer data was broken. We’re not 100% sure that that got fixed, so we would like to see a change in the data over time to verify. In any case, I think your general point about the value of hubs is is important, didn’t mean to distract from that conversation. In the nearish-term, we plan to add an interstitial redirection page to make sure we’re getting the best stats about outlinks.&#8221;</h6>
</blockquote>
<h2></h2>
<h2>Background</h2>
<p>Getting into Digital Public Library of America (DPLA) is seen as an important goal by many institutions within the United States. At the <a href="https://www.digitalcommonwealth.org/">Digital Commonwealth</a>, it is one of the &#8220;carrots&#8221; we use to convince people to contribute to the Massachusetts regional repository (Digital Commonwealth itself). Some institutions even have managed to bypass their regional hubs and force DPLA to harvest directly from them. But I&#8217;d argue that ignoring the &#8220;middle man&#8221; is a mistake in this case and that everyone in the library world is vastly underestimating the value of a well run regional hub.</p>
<h2>The Data Setup</h2>
<p>What follows is a look at statistics from DPLA and Digital Commonwealth for the two month period of January 14, 2017 to March 14, 2017. That may appear to be an odd date range but the DPLA had only just re-harvested our system the previous week of that January. As such, at the time of generating these statistics, that range made the most sense to ensure an apples to apples comparison.</p>
<p>Furthermore, these statistics only use items that Digital Commonwealth has harvested itself. All hosted items from Digital Commonwealth have been removed. Why? To keep things similar once again and compare only records that both DPLA and Digital Commonwealth have only metadata for. To be more specific, metadata that they cannot directly control and must be placed into an aggregate system. Removing hosted items also mostly eliminates any traffic from repeat visitors of that object since what is hot-linked or cited is the page with the actual object on it.</p>
<p>I should clarify that none of these objects actually link to Digital Commonwealth. There is no &#8220;double dipping&#8221; as we provide DPLA with the link directly the the source object and do not force the traffic through our application. After all, it would be a horrendous user experience if one found an object on DPLA, clicked to go to Digital Commonwealth, and then had to click another link to get to the actual object a user was looking for. So while we act like a &#8220;middle man&#8221;, we don&#8217;t steal any traffic from our members objects and there is no worry that DPLA clickthroughs are affecting the Digital Commonwealth numbers.</p>
<p>The final note is the sample size. There  were 239,051 harvested objects that existed in Digital Commonwealth as of January 14th.</p>
<h2>The Initial TLDR Takeaway</h2>
<p>During that two month period, the following are the aggregate view statistics:</p>
<table class="alignleftSTEVEN" style="border-color: #000000; width: 100%;">
<caption><strong>Term Clarifications</strong>:<br />
&#8220;Total Views&#8221; column refers to people viewing the detail page of the item on their respective site over a two month period.<br />
&#8220;Total Records&#8221; column refer to the number of harvested items in Digital Commonwealth that DPLA has in its system.<br />
&#8220;Average Views Per Item&#8221; column is the mean average of the previous two columns.</caption>
<tbody>
<tr class="head_table_fields">
<td width="28%"></td>
<td style="text-align: center;" width="24%"><b>Total Views</b></td>
<td style="text-align: center;" width="24%"><b>Total Records</b></td>
<td style="text-align: center;" width="24%"><b>Average Views Per Item</b></td>
<td style="text-align: center;" width="24%"><b> </b></td>
</tr>
<tr>
<td><b>Digital Commonwealth</b></td>
<td style="text-align: center;">23,375</td>
<td style="text-align: center;">239,051</td>
<td style="text-align: center;">0.0978</td>
<td style="text-align: center;"></td>
</tr>
<tr class="alt_table_row">
<td><b>DPLA</b></td>
<td style="text-align: center;">2,337</td>
<td style="text-align: center;">239,051</td>
<td style="text-align: center;">0.0098</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td><b>Both Sources</b></td>
<td style="text-align: center;">25,712</td>
<td style="text-align: center;">239,051</td>
<td style="text-align: center;">0.1076</td>
<td style="text-align: center;"></td>
</tr>
</tbody>
</table>
<p>For a Massachusetts institute, we can see that about 10X of the eyeballs on the institution&#8217;s digital objects comes from the Digital Commonwealth! To put this in perspective, it would take about 2 years for each harvested item in Digital Commonwealth to have an average of one view each. For those same items, we are looking at a 20 year timeframe here.</p>
<p>But views are only one metric&#8230; what kind of traffic is this aggregation giving my digital repository? To understand that, we would need the metric known as clickthroughs, which I just do happen to have for you! The following chart takes a look at clickthroughs:</p>
<table class="alignleftSTEVEN" style="border-color: #000000; width: 100%;">
<caption><strong>Term Clarifications</strong>:<br />
&#8220;Total Clickthroughs&#8221; column refers to people who clicked on the link to go to the original source repository view page of the digital object over a two month period.<br />
&#8220;Total Records&#8221; column refer to the number of harvested items in Digital Commonwealth that DPLA has in its system.<br />
&#8220;Average Views Per Item&#8221; column is the mean average of the previous two columns.</caption>
<tbody>
<tr class="head_table_fields">
<td width="28%"></td>
<td style="text-align: center;" width="24%"><b>Total Clickthroughs</b></td>
<td style="text-align: center;" width="24%"><b>Total Records</b></td>
<td style="text-align: center;" width="24%"><b>Average Clickthroughs Per Item</b></td>
<td style="text-align: center;" width="24%"></td>
</tr>
<tr>
<td><b>Digital Commonwealth</b></td>
<td style="text-align: center;">4,495</td>
<td style="text-align: center;">239,051</td>
<td style="text-align: center;">0.0188</td>
<td style="text-align: center;"></td>
</tr>
<tr class="alt_table_row">
<td><b>DPLA</b></td>
<td style="text-align: center;">343</td>
<td style="text-align: center;">239,051</td>
<td style="text-align: center;">0.0014</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td><b>Both Sources</b></td>
<td style="text-align: center;">25,712</td>
<td style="text-align: center;">239,051</td>
<td style="text-align: center;">0.0202</td>
<td style="text-align: center;"></td>
</tr>
</tbody>
</table>
<p>The division here is even more drastic than it was previously with Digital Commonwealth making up over 1,300% of the clickthroughs. That is more clickthroughs in Digital Commonwealth than views of this set of harvested items in DPLA! Interesting statistics, I think.</p>
<p>I&#8217;ll leave one with one final chart as a teaser for next time: what is we only include items that had both a subject topic and subject geographic in our views table? What impact does that have on our average?</p>
<table class="alignleftSTEVEN" style="border-color: #000000; width: 100%;">
<caption><strong>Term Clarifications</strong>:<br />
&#8220;Total Views w/ Topic and Geo&#8221; column refers to people viewing the detail page of an item containing both a subject topic and subject geographic on their respective site over a two month period.<br />
&#8220;Total Records w/ Topic and Geo&#8221; column refer to the number of harvested items in Digital Commonwealth that DPLA has in its system and that have both a subject topic and a subject geographic.<br />
&#8220;Average Views Per Item&#8221; column is the mean average of the previous two columns.</caption>
<tbody>
<tr class="head_table_fields">
<td width="28%"></td>
<td style="text-align: center;" width="24%"><b>Total Views w/ Topic and Geo</b></td>
<td style="text-align: center;" width="24%"><b>Total Records w/ Topic and Geo</b></td>
<td style="text-align: center;" width="24%"><b>Average Views Per Item</b></td>
<td style="text-align: center;" width="24%"><b> </b></td>
</tr>
<tr>
<td><b>Digital Commonwealth</b></td>
<td style="text-align: center;">14,534</td>
<td style="text-align: center;">52,455</td>
<td style="text-align: center;">0.2771</td>
<td style="text-align: center;"></td>
</tr>
<tr class="alt_table_row">
<td><b>DPLA</b></td>
<td style="text-align: center;">1,138</td>
<td style="text-align: center;">52,455</td>
<td style="text-align: center;">0.0217</td>
<td style="text-align: center;"></td>
</tr>
<tr>
<td><b>Both Sources</b></td>
<td style="text-align: center;">15,672</td>
<td style="text-align: center;">52,455</td>
<td style="text-align: center;">0.2988</td>
<td style="text-align: center;"></td>
</tr>
</tbody>
</table>
<p>That is quite an improvement to our average! It shouldn&#8217;t be unexpected that records with better quality metadata end up being more discoverable. Despite being only 22% of the total records, this subset of items makes up 62% of the views in Digital Commonwealth and 49% of the views in DPLA! The numbers don&#8217;t lie: quality metadata matters. But are there any reasons why the increase was slightly more dramatic in Digital Commonwealth compared to DPLA? The setup to this post ate up more time than I expected so we will delve into more breakdowns and analysis of these numbers next time!</p>
<h2>Final Notes and Part 2</h2>
<p>These numbers do seem small but I want to stress that is doesn&#8217;t included the harvested items from Digital Commonwealth. For example, during a two month period, Digital Commonwealth would have nearly 200,000 views of it 214,138 hosted objects which is quite a step up from the harvested statistics. However, much of that difference would be from &#8220;repeat bookmarked / shared / etc&#8221; traffic&#8230; and I just want to state don&#8217;t evaluate the entire system based on this subset comparison. Blog posts about some of the other Digital Commonwealth comparisons will come in the future.</p>
<p>Additionally, the DPLA numbers are only a subset of one hub in their system and overall are much more impressive when looking at their system as a whole. We are but one small waterway feeding into their large ocean.</p>
<p>Lastly I feel I should mention that the above is more of a &#8220;team discoverability effort&#8221;. As a DPLA service hub, the benefit of regional hubs like Digital Commonwealth is just part of what one gets by being in the Digital Public Library of America infrastructure. This analysis just breaks down the DPLA pipeline to its component parts. Hopefully this analysis is useful for showing that it isn&#8217;t to one&#8217;s benefit to attempt to by a special snowflake that skips the smaller regional aggregation and that regional aggregation systems should have a user facing front-end. The latter is something that I feel I need to stress since so many DPLA hubs just view the goal as getting the data to DPLA (ie. don&#8217;t build a front-end) and fail to offer their members the boost that local aggregation can have on harvested items discoverability.</p>
<p>Part 2 will take a look at the more granular level of this dataset. For example, what items get the most views in both systems? Do those most viewed items share similarities? What about clickthrough similarities? What affect does subjects have on the average views and clickthroughs of an item? Etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://scande3.com/2017/04/the-importance-of-regional-aggregation-hubs-p1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Engineer Interview Experiences</title>
		<link>http://scande3.com/2017/03/software-engineer-interview-experiences/</link>
		<comments>http://scande3.com/2017/03/software-engineer-interview-experiences/#comments</comments>
		<pubDate>Sun, 26 Mar 2017 19:43:53 +0000</pubDate>
		<dc:creator><![CDATA[scande3]]></dc:creator>
				<category><![CDATA[Digital Commonwealth]]></category>
		<category><![CDATA[Job Search]]></category>
		<category><![CDATA[Software Engineering Profession]]></category>

		<guid isPermaLink="false">http://scande3.com/?p=93</guid>
		<description><![CDATA[Background So&#8230; last Friday (March 24th) was sadly my last day with the Boston Public Library. I start at Akamai tomorrow (March 27th) as a Senior Software Engineer. I will deeply miss the Boston Public Library and the work my &#8230; <a href="http://scande3.com/2017/03/software-engineer-interview-experiences/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Background</h2>
<p>So&#8230; last Friday (March 24th) was sadly my last day with the Boston Public Library. I start at <a href="https://www.akamai.com/">Akamai</a> tomorrow (March 27th) as a Senior Software Engineer. I will deeply miss the Boston Public Library and the work my colleague and I completed building the <a href="https://www.digitalcommonwealth.org/">Digital Commonwealth</a> system.  But unfortunately all things must end and I felt it was time to move on to a new opportunity. The following are some interview experiences that I believe might be interesting from my recent search.</p>
<h2>The New HR Phone Screen Question</h2>
<p>A 30 minute initial call from a HR representative has been in practice for quite some time now. However, what I did find new was how aggressively one will be required to give one&#8217;s salary requirements at this time. Nearly every place I applied required me to state the salary I was looking for and refused to allow me to weasel out of giving a number.</p>
<p>From the HR point of view, this is a smart move. With the interviewee not having interacted with the team yet, the interviewee loses the leverage of being the &#8220;first choice&#8221; in such a negotiation. It doesn&#8217;t matter how amazing of a match one is for the job or how much unexpected value above and beyond the job posting one might bring since those aren&#8217;t the HR representative&#8217;s primary concern. They are focused at filling X position for Y salary and they can make the cold calculation to eliminate the candidate up front by forcing this simple question.</p>
<p>I&#8217;m quite unsure of how to best handle the moving of the salary negotiation from the end of the interview process up to the forefront. A talk on negotiating salary was given recently at Code4Lib but lacked any advice on this situation. For example, does one give a low number to keep one in the running and then surprise them with a higher requirement at the end? After all, I had a few HR representatives from potential position thank me for my time once my number was outside of their range &#8211; including one job that they won&#8217;t likely ever find a better match for. In these cases, they mostly didn&#8217;t even bother to ask if I might be willing to work for less than the number I gave. Or does one start off with a high number on the expectation they could offer a slight bit below that in the end and just give up on those that one will be eliminated from immediately? Beyond just doing one&#8217;s research and being prepared to give a number, I can&#8217;t really give further advice on how to handle this.</p>
<h2>Assembly Line Programming</h2>
<p>Let&#8217;s say one had a questionnaire with responses about where people live. If one wanted a report for all those who responded from Massachusetts, one would want to include those that responded with &#8220;Massachusetts&#8221; obviously. But, due to hierarchy, one would also want to include those that were more specific and answered &#8220;Boston&#8221; or &#8220;Cambridge&#8221;. That makes sense, right?</p>
<p>So when I was to do a code sample for a medical crowdsourcing site, I quickly saw what I wanted to do. Their site had little knowledge of medical hierarchy that looked to be an obvious flaw. Those that responded with a symptom of &#8220;Myocardial Infarction&#8221; (commonly known as Heart Attack) were the only ones being included on a report for that symptom. Those the reported more specific versions of &#8220;Heart Attack&#8221; like &#8220;Non-STI Myocardial Infarction&#8221; would not show up. Similar to the location example above, this seemed to be a problem. Beyond coding up a sample of how to fix this, I came armed to talk about it during the in-person interview.</p>
<p>Only throughout the in-person interview process, I was the only one who considered this an issue. The argument against it generally boiled down to the fact they got their requirements from a group of medical scientists. I seriously cannot figure out a counter-argument beyond that since they could fix their system with about a week of a single developer&#8217;s time that would make the data much more usable. Further questioning about conferences that developers generally attended there were devoid of anything to do with the medical field. They were hired to implement checkboxes from a requirements document &#8211; to handle just the translation from pages of paper to digital ones and zeroes. Ability to understand what it is they are implementing and taking action to make the system work well? Not a desired skill.</p>
<p>Of course, perhaps I&#8217;m incorrect in my assessment of how medical hierarchy can be used and there is some valid reason that makes it different than my initial location analogy. I cannot come up with one and it frustrates me to this day how it makes so much sense to me but how much it bombed talking about it with people at that organization. (There were other things wrong with that place as well. Such as being told that making their data shareable wasn&#8217;t a priority they cared about since others can just deal with their custom format, how they didn&#8217;t like to collaborate with others in the medical world because they viewed themselves as doing things better than everyone else, etc).</p>
<p>This wasn&#8217;t just a one-off situation but rather the norm. Another position I interviewed for would have dealt with anti-virus protection. When I asked what conferences the team lead interviewing me attended, he seemed to be confused. I repeated it and clarified it being security conferences to keep up on the latest trends, and he responded that he didn&#8217;t attend any. Developers there just don&#8217;t go to those. This lack of specialist knowledge really showed in their answer to how their product differed from the competition. Both him and another I interviewed with touted a single killer feature that they claimed no other product on the market had. Only that had already been added to other security products recently &#8211; including one suite my girlfriend sells. I didn&#8217;t bother to correct their lack of domain knowledge.</p>
<p>This trend towards an assembly line where developers aren&#8217;t expected nor desired to understand the product is disturbing to me. I will never understand how one can create anything truly exceptional from such a philosophy. Of course, part of that is fueled by my own preferences that bias my opinion, but valid improvements can come from more than just product managers or researchers understanding the domain.</p>
<h2>Government Employees Being Viewed As Lazy</h2>
<p>In one phone screen, I was asked if I thought I was up to working at a startup. That I would have to &#8220;actually do work&#8221; and &#8220;really get things done&#8221; which is different than working for the government.</p>
<p>At another job, when asked about what advice at working at their company, an interviewer asked me to remind them where I was currently employed at again. After responding that I was employed by the Boston Public Library, he went into a spiel about how it is easy to just &#8220;blend in without doing much work&#8221; at such a place. A similar theme to the above, he stated how one &#8220;is responsible for making things work since no one else will for you&#8221;.</p>
<p>Sitting through both of those talks was nothing sort of infuriating. It didn&#8217;t help that I could have presented my background better by linking it to terms they knew &#8211; a flaw my girlfriend pointed out. She advised that I should have pointed out whenever possible that my position was much like an early stage startup and that my colleague and I had to wear many hats and put in quite a great deal of work to get things off the ground. Regardless, it seems that the war on the competence of government employees has hit even the liberal bastion of Boston, Massachusetts. That being a Software Engineer who chooses to do public service must mean that was the only job one could land with one&#8217;s limited skills or that one must just be lazy. By remaining in the public sector, I&#8217;m viewed as being less competent by private sector peers that impacts how one will be judged during an interview and will make taking the next step in one&#8217;s career more difficult.</p>
<h2>Hired.com</h2>
<p>Beyond normal interview sites, I did give <a href="http://hired.com">hired.com</a> a try. I ended up getting four interview offers from the site that I would not have found on my own. Essentially a quick note that it seems to work well as an option to try even if it didn&#8217;t end up leading to an offer myself. (The job I ended up accepting was referred to me by a friend of a friend).</p>
]]></content:encoded>
			<wfw:commentRss>http://scande3.com/2017/03/software-engineer-interview-experiences/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accessing Excel Spreadsheet Files for Batch Uploads of Digital Objects:</title>
		<link>http://scande3.com/2015/05/accessing-excel-spreadsheet-files-for-batch-uploads-of-digital-objects/</link>
		<comments>http://scande3.com/2015/05/accessing-excel-spreadsheet-files-for-batch-uploads-of-digital-objects/#comments</comments>
		<pubDate>Thu, 28 May 2015 21:16:35 +0000</pubDate>
		<dc:creator><![CDATA[scande3]]></dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Digital Commonwealth]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://scande3.com/?p=75</guid>
		<description><![CDATA[As it was asked how we handle reading content from Excel, this is a very quick blog post that goes over what we do for that. First you will need the following added to your Gemfile and then bundle install: &#8230; <a href="http://scande3.com/2015/05/accessing-excel-spreadsheet-files-for-batch-uploads-of-digital-objects/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>As it was asked how we handle reading content from Excel, this is a very quick blog post that goes over what we do for that. First you will need the following added to your Gemfile and then bundle install:</p>
<p><code>gem 'roo', :git =&gt; 'https://github.com/roo-rb/roo'<br />
gem 'roo-xls', :git =&gt; 'https://github.com/roo-rb/roo-xls.git'</code></p>
<p>Now that we have the library that will allow us to read the spreadsheet, we can go ahead and setup a variable to hold the content of the spreadsheet. This assumes you have a &#8220;sheet_location&#8221; variable set that indicates where the file you are trying to read lives (be it uploaded or not) and assigns the content to @worksheet:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="ruby">if sheet_location =~ /\b.xlsx$\b/
  @worksheet = Roo::Excelx.new(sheet_location)
elsif sheet_location =~ /\b.xls$\b/
  @worksheet = Roo::Excel.new(sheet_location)
elsif sheet_location =~ /\b.csv\b/
  @worksheet = Roo::CSV.new(sheet_location)
elsif sheet_location =~ /\b.ods\b/
  @worksheet = Roo::OpenOffice.new(sheet_location)
end

@worksheet.default_sheet = @worksheet.sheets.first #Sets to the first sheet in the workbook</pre>
<p>The next thing we want to do is grab the header row that has our column headers. At the BPL, this is the third row in the spreadsheet (previous rows are for notes). As such, with the library using &#8220;1&#8221; as its first row, we would get the header row via the following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="ruby" data-enlighter-theme="git">header_row_index = 3
@header_row = @worksheet.row(header_row_index)</pre>
<p>From here, I loop through each data row in my spreadsheet (which starts at index 5 for us) and pass that row value along with the header row to a method to process that row. It looks something like:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="ruby" data-enlighter-theme="git">data_start_row = 5 
data_start_row_index.upto @worksheet.last_row do |index| row = @worksheet.row(index) 
  if row.present? &amp;&amp; @header_row.present?
    begin 
      process_a_row(@header_row, row) 
    rescue Exception =&gt; e 
      #Exception handling for when encounter bad data... 
    end 
   end 
  end
end</pre>
<p>Now we have each row in our spreadsheet being processed! But&#8230; how do we access each individual cell? In our case, our spreadsheet template has over 150 possible headers and having a spreadsheet with every header becomes unwieldy. As such, each one has some combination of potential headers and the order of those headers in the spreadsheet is not guaranteed. So we end up with something like the following to get the value of &#8220;title&#8221; out of our spreadsheet:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="ruby" data-enlighter-theme="git">def process_a_row(header_row, row_value)
  # ...
  title = find_in_row(header_row, row_value, 'title_primary')
  # ...
end</pre>
<p>Essentially this is calling a method called &#8220;find_in_row&#8221; from within the &#8220;process_a_row&#8221; block and adds a third argument of the row header identifier we are using to find that data element. The &#8220;find_in_row&#8221; method then looks like:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="null">def find_in_row(header_row, row_value, column_identifier)
  0.upto header_row.length do |row_pos|
    case header_row[row_pos]
      when column_identifier
        return strip_value(row_value[row_pos])
    end
  end
  return nil
end</pre>
<p>This has another new method: strip_value. The plan is to move this function into &#8220;Bpl_Enrich&#8221; in the near future but essentially this is to return our data elements as UTF-8 strings. The code for this looks like:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="ruby" data-enlighter-theme="git">def strip_value(value)
  if(value == nil)
    return nil
  else
    if value.class == Float
      value = value.to_f.to_s
      value = value.gsub(/.0$/, '') #FIXME: Temporary. Bugged as see: https://github.com/roo-rb/roo/issues/86 , https://github.com/roo-rb/roo/issues/133 , https://github.com/zdavatz/spreadsheet/issues/41
    elsif value.class == Fixnum
      value = value.to_i.to_s #FIXME: to_i as otherwise non-existant values cause problems
    end

    # Make sure it is all UTF-8 and not character encodings or HTML tags and remove any cariage returns
    return utf8Encode(value)
  end
end

def utf8Encode(value)
  return HTMLEntities.new.decode(ActionView::Base.full_sanitizer.sanitize(value.to_s.gsub(/\r?\n?\t/, ' ').gsub(/\r?\n/, ' '))).strip
end</pre>
<p>We can now repeat the calls to &#8220;find_in&#8221;row&#8221; within the &#8220;process_a_row&#8221; method for each of our data elements and insert them into our system as needed. But what do we do for multi-valued fields? We use a deliminator of a double pipe (&#8220;||&#8221;) to delineate values in those cases. For example, if our title was allowed to be multi-valued, we could have the above return &#8220;title1||title2&#8243;. There is then another helper function to convert that into an array as the following:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="ruby" data-enlighter-theme="git">def split_with_nils(value)
  if(value == nil)
    return ""
  else
    split_value = value.split("||")
    0.upto split_value.length-1 do |pos|
      split_value[pos] = strip_value(split_value[pos])
    end

    return split_value
  end
end</pre>
<p>Why do I return &#8220;&#8221; on the nil case? To make processing easier for related pairs of multivalued column fields when doing indexing without an extra logic check in the inserts of &#8220;process_a_row&#8221;. As a full example, assume we have titles of &#8220;title1||title2||title3&#8243; and title types of &#8220;primary||||alternative&#8221; (ie. the second title lacks a type in this made up example of bad MODS data). You would do something like:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="ruby" data-enlighter-theme="git">title = find_in_row(header_row, row_value, 'title')
if title.present?
  title_list = split_with_nils(title)
  title_type_list = split_with_nils(find_in_row(header_row, row_value, 'title_type'))
  0.upto title_list.length-1 do |pos|
    @digital_object.descMetadata.insert_title(title_list[pos],title_type_list[pos])
  end
end</pre>
<p>Of course, in the insert title method, you would need to check for blank values to not insert the empty title type value for the second title in our list. If there was no &#8220;title_type&#8221; specified at all as that was omitted as an optional field, our function would still work as indexing an empty string (the returned &#8220;&#8221; from split_with_nils) would just give us all blank values for the title_type as we index through it.</p>
<p>I hope this was somewhat useful, not a completely crazy approach, and made some sense. Take care!</p>
]]></content:encoded>
			<wfw:commentRss>http://scande3.com/2015/05/accessing-excel-spreadsheet-files-for-batch-uploads-of-digital-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Further Look at Metadata&#8217;s Affect on Discoverability</title>
		<link>http://scande3.com/2015/04/a-further-look-at-metadatas-affect-on-discoverability/</link>
		<comments>http://scande3.com/2015/04/a-further-look-at-metadatas-affect-on-discoverability/#comments</comments>
		<pubDate>Fri, 17 Apr 2015 19:11:08 +0000</pubDate>
		<dc:creator><![CDATA[scande3]]></dc:creator>
				<category><![CDATA[Digital Commonwealth]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://scande3.com/?p=50</guid>
		<description><![CDATA[This post continues a look at the effect metadata has on the amount of views an object receives. Part 1 can be found at: http://scande3.com/2015/04/effect-of-metadata-subjects-on-a-digital-objects-discoverability/. The same criteria from part 1 still applies to these stats and those overall global &#8230; <a href="http://scande3.com/2015/04/a-further-look-at-metadatas-affect-on-discoverability/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This post continues a look at the effect metadata has on the amount of views an object receives. Part 1 can be found at: <a title="Part 1 of the effect on metadata on an object's discoverability" href="http://scande3.com/2015/04/effect-of-metadata-subjects-on-a-digital-objects-discoverability/" target="_blank">http://scande3.com/2015/04/effect-of-metadata-subjects-on-a-digital-objects-discoverability/</a>. The same criteria from part 1 still applies to these stats and those overall global rules are:</p>
<ul>
<li>A six month time period from October 1st, 2014 until March 31st, 2015 for objects the existed in the repository before December 31st, 2014.</li>
<li>The listed view counts come from the Google Analytics API and reflect views on the object&#8217;s main result page only.</li>
</ul>
<p>The first exciting match puts &#8220;LCSH pre-coordinated&#8221; subject topics against those that lack the &#8220;&#8211;&#8221; concatenation.</p>
<h2>LCSH Topic Subject Comparisons</h2>
<table class="alignleftSTEVEN" style="border-color: #000000;width:100%">
<caption><strong>Term Clarifications</strong>:<br />
&#8220;LCSH Style Topic Subject Objects&#8221; column are items that all of their subjects have &#8220;&#8211;&#8221; in them.<br />
&#8220;Non-LCSH Style Topic Subject Objects&#8221; column are items with all subjects lacking &#8220;&#8211;&#8221; in them.<br />
&#8220;Mixture of Both Styles Topic Subject Objects&#8221; column is an item with at least one subject with &#8220;&#8211;&#8221; and at least one subject without &#8220;&#8211;&#8220;.</caption>
<tbody>
<tr class="head_table_fields">
<td width="28%"></td>
<td style="text-align: center;" width="24%"><strong>LCSH Style Topic Subject Objects</strong></td>
<td style="text-align: center;" width="24%"><strong>Non-LCSH Style Topic Subject Objects</strong></td>
<td style="text-align: center;" width="24%"><strong>Mixture of Both Styles Topic Subject Objects</strong></td>
</tr>
<tr>
<td><strong>Total Records</strong></td>
<td style="text-align: center;">8,119</td>
<td style="text-align: center;">122,353</td>
<td style="text-align: center;">8,111</td>
</tr>
<tr class="alt_table_row">
<td><strong>Average Views</strong></td>
<td style="text-align: center;">0.938</td>
<td style="text-align: center;">1.570</td>
<td style="text-align: center;">1.243</td>
</tr>
<tr>
<td><strong>Percent with 1+ Views</strong></td>
<td style="text-align: center;">30.8%</td>
<td style="text-align: center;">42.9%</td>
<td style="text-align: center;">40.5%</td>
</tr>
</tbody>
</table>
<p>It would appear the hypothesis in the previous analysis post is correct: normalized non-LCSH style subjects soundly defeat those items that use the concatenation. But there is a notable asterisk to this victory in that the amount of objects using LCSH style subjects is significantly smaller. Natively in the <a title="Digital Commonwealth's Repository" href="http://digitalcommonwealth.org" target="_blank">Digital Commonwealth</a> system, we do not generally pre-coordinate LCSH subjects as our &#8220;best practice&#8221; and thus that policy decision has an affect on how metadata was done for the vast majority of items. That doesn&#8217;t mean we don&#8217;t use &#8220;complex subjects&#8221; in LCSH that represent a complete topic. For example, we do have &#8220;best practice&#8221; objects that use &#8220;<a title="Definition of United States--History--Civil War, 1861-1865" href="http://id.loc.gov/authorities/subjects/sh85140205.html" target="_blank">United States&#8211;History&#8211;Civil War, 1861-1865</a>&#8221; as that is the single Library of Congress topic entry that defines that war. The majority of these cases are in the &#8220;Mixture&#8221; category in the above table. For example, the item I looked at with that string also had the subjects of &#8220;<a title="Monuments &amp; Memorials LC definition" href="http://id.loc.gov/vocabulary/graphicMaterials/tgm006749" target="_blank">Monuments &amp; memorials</a>&#8221; and &#8220;<a title="Churches LC definition" href="http://id.loc.gov/vocabulary/graphicMaterials/tgm002053" target="_blank">Churches</a>&#8220;.</p>
<p>Back on topic, this means the vast majority of &#8220;LCSH Style&#8221; topic subjects came to us from metadata sources we do not control. That would namely be OAI feeds from institutions that use the &#8220;pre-coordinated LCSH Subjects&#8221; as their metadata practice and that we were unable to break up on our end. This is an important note as these records coming from a series of uniform minority sources in the system could indicate other factors are at play for these numbers. Taking into account the numerous potential factors (such as quality of source metadata in other areas of the record or how interesting the items are) are mostly beyond the scope of this blog post. I will provide a breakdown of these items comparing those that have a topic subject but no geographic subject to those objects that do contain that geographic subject. Albeit I must add a caveat that this breakdown does make the numbers much more volatile as the size of records in a category becomes quite limited and thus I&#8217;d avoid coming to conclusions from these:</p>
<table class="alignleftSTEVEN " style="border-color: #000000;">
<caption><strong>Term Clarifications</strong>:<br />
&#8220;LCSH Style Topic Subject Objects (no Geographic)&#8221; column are items that all of their subjects have &#8220;&#8211;&#8221; in them and no geographic topic.<br />
&#8220;Non-LCSH Style Topic Subject Objects (no Geographic)&#8221; column are items with all subjects lacking &#8220;&#8211;&#8221; in them and no geographic topic.<br />
&#8220;Mixture of Both Styles Topic Subject Objects (no Geographic)&#8221; column is an item with at least one subject with &#8220;&#8211;&#8221; and at least one subject without &#8220;&#8211;&#8221; and no geographic topic.</caption>
<tbody>
<tr class="head_table_fields">
<td width="28%"></td>
<td style="text-align: center;" width="24%"><strong>LCSH Style Topic Subject Object (no Geographic)</strong></td>
<td style="text-align: center;" width="24%"><strong>Non-LCSH Style Topic Subjects Objects (no Geographic)</strong></td>
<td style="text-align: center;" width="24%"><strong>Mixture of Both Styles Topic Subject Objects (no Geographic)</strong></td>
</tr>
<tr>
<td><strong>Total Records</strong></td>
<td style="text-align: center;">549</td>
<td style="text-align: center;">59,328</td>
<td style="text-align: center;">1,224</td>
</tr>
<tr class="alt_table_row">
<td><strong>Average Views</strong></td>
<td style="text-align: center;">1.741</td>
<td style="text-align: center;">0.829</td>
<td style="text-align: center;">1.622</td>
</tr>
<tr>
<td><strong>Percent with 1+ Views</strong></td>
<td style="text-align: center;">52.6%</td>
<td style="text-align: center;">28.9%</td>
<td style="text-align: center;">53.1%</td>
</tr>
</tbody>
</table>
<table class="alignleftSTEVEN" style="border-color: #000000;width:100%">
<caption><strong>Term Clarifications</strong>:<br />
&#8220;LCSH Style Topic Subject Objects (with Geographic)&#8221; column are items that all of their subjects have &#8220;&#8211;&#8221; in them and at least one geographic topic.<br />
&#8220;Non-LCSH Style Topic Subject Objects (with Geographic)&#8221; column are items with all subjects lacking &#8220;&#8211;&#8221; in them and at least one geographic topic.<br />
&#8220;Mixture of Both Styles Topic Subject Objects (with Geographic)&#8221; column is an item with at least one subject with &#8220;&#8211;&#8221; and at least one subject without &#8220;&#8211;&#8221; and at least one geographic topic.</caption>
<tbody>
<tr class="head_table_fields">
<td width="28%"></td>
<td style="text-align: center;" width="24%"><strong>LCSH Style Topic Subject Objects (with Geographic)</strong></td>
<td style="text-align: center;" width="24%"><strong>Non-LCSH Style Topic Objects (with Geographic)</strong></td>
<td style="text-align: center;" width="24%"><strong>Mixture of Both Styles Topic Subject Objects (with Geographic)</strong></td>
</tr>
<tr>
<td><strong>Total Records</strong></td>
<td style="text-align: center;">7,570</td>
<td style="text-align: center;">63,025</td>
<td style="text-align: center;">6,887</td>
</tr>
<tr class="alt_table_row">
<td><strong>Average Views</strong></td>
<td style="text-align: center;">0.880</td>
<td style="text-align: center;">2.267</td>
<td style="text-align: center;">1.176</td>
</tr>
<tr>
<td><strong>Percent with 1+ Views</strong></td>
<td style="text-align: center;">29.2%</td>
<td style="text-align: center;">56.1%</td>
<td style="text-align: center;">38.2%</td>
</tr>
</tbody>
</table>
<h2>OAI Harvested (Metadata Only Records) vs Hosted Native Records</h2>
<p>As a DPLA Hub, we offer both hosted and harvesting options for our member institutes. The majority of our content is hosted directly in the system and those items that are ingested almost always go through our Digitization department where the metadata is often either cleaned up, created by, or given advice on its creation by our <a title="Metadata Mob sample article" href="http://dp.la/info/2014/11/24/get-local-metadata/" target="_blank">Metadata Mob</a>. This then theoretically creates much more uniform metadata for our system that will play well with other objects when searching or faceting. Meanwhile, while we do enrichment on metadata from OAI feeds, we often have much less control over the policies those institutions implement (such as the previous topic subject differences). As such, the variation on the standards used for those objects is likely much greater. This table hopes to quantify that difference&#8230; but does have one huge flaw. In cases of an OAI Harvested metadata item, we provide <a title="DPLA's main site" href="http://dp.la" target="_blank">DPLA </a>with a direct link to that object in its native system rather than forcing the user to go through <a title="Digital Commonwealth main site" href="http://digitalcommonwealth.org" target="_blank">Digital Commonwealth</a> first. As such, OAI Harvested objects below will be missing statistics on those views and the DPLA is a one of our top sources for referral traffic. (As an aside, the site we get the most traffic directed to us from is Facebook).</p>
<table class="alignleftSTEVEN " style="border-color: #000000;width:100%;">
<caption><strong>Term Clarifications</strong>:<br />
&#8220;Hosted Object&#8221; column are items that live natively in our system and have the image/audio/video file content in our Fedora Commons repository.<br />
&#8220;OAI Harvested Object&#8221; column are items that we ingest from a member institute&#8217;s repository and contain metadata and a thumbnail image only.</caption>
<tbody>
<tr class="head_table_fields">
<td width="36%"></td>
<td style="text-align: center;" width="32%"><strong>Hosted Object</strong></td>
<td style="text-align: center;" width="32%"><strong>OAI Harvested Object</strong></td>
</tr>
<tr>
<td><strong>Total Records</strong></td>
<td style="text-align: center;">108,282</td>
<td style="text-align: center;">37,801</td>
</tr>
<tr class="alt_table_row">
<td><strong>Average Views</strong></td>
<td style="text-align: center;">1.921</td>
<td style="text-align: center;">0.364</td>
</tr>
<tr>
<td><strong>Percent with 1+ Views</strong></td>
<td style="text-align: center;">51.7%</td>
<td style="text-align: center;">15.0%</td>
</tr>
</tbody>
</table>
<p>The results are as I would expect. I wish I could tell how much of an effect the loss of the DPLA traffic on the stats for the OAI Harvested records had on these results. Still: it does seem highly likely that the uniformity of the metadata does have an effect on how often an object is discovered in our shared system.</p>
<h2>The Fourth Dimension!</h2>
<p>While knowing where a record is from and what it is about is quite important, I haven&#8217;t talked about the &#8220;when&#8221; aspect. I decided I&#8217;d run some quick stats that looks at how having a date on a particular item might increase the findability of an item.</p>
<table class="alignleftSTEVEN " style="border-color: #000000;width:100%">
<caption><strong>Term Clarifications</strong>:<br />
&#8220;Object with a date&#8221; column are items with at least one valid and not &#8220;unknown&#8221; date associated with it.<br />
&#8220;Objects with No Date&#8221; column are items that either have no date or the date is &#8220;unknown&#8221;.</caption>
<tbody>
<tr class="head_table_fields">
<td width="36%"></td>
<td style="text-align: center;" width="32%"><strong>Objects with a Date</strong></td>
<td style="text-align: center;" width="32%"><strong>Objects with No Date</strong></td>
</tr>
<tr>
<td><strong>Total Records</strong></td>
<td style="text-align: center;">143,097</td>
<td style="text-align: center;">2,986</td>
</tr>
<tr class="alt_table_row">
<td><strong>Average Views</strong></td>
<td style="text-align: center;">1.500</td>
<td style="text-align: center;">2.405</td>
</tr>
<tr>
<td><strong>Percent with 1+ Views</strong></td>
<td style="text-align: center;">41.9%</td>
<td style="text-align: center;">55.6%</td>
</tr>
</tbody>
</table>
<p>The good news: 98% of our records have a date associated with it! That is actually higher than I would have expected. More objects have a date in our system than have a subject associated with it!</p>
<p>The bad news? This means I don&#8217;t have a large enough group of &#8220;no date&#8221; items to figure out what effect a date might have on the views of an object. From the stats above, it would seem that objects without a date have a significant higher viewer average than those that contain a date which does not make logical sense. So while the above table are the actual stats, the only sense I can make from it is that individuals creating these records are doing an awesome job adding in a date. <img src="http://scande3.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
<h2>Conclusion</h2>
<p>It would appear the &#8220;exploded LCSH&#8221; or &#8220;non pre-coordinated LCSH&#8221; topic subject items are more discoverable in our system. However, it also appears likely that uniformity of metadata increases the odds of an object being discovered, so that could be a result of that being the primary policy we implemented for topic subjects. It would be interesting to see the same subject analysis that have been run here run over all of the DPLA data to see if the same patterns hold up in an even larger pool of objects.</p>
<p>Thanks for reading once again! Next time will likely be a move away from stats and on another aspect of the Digital Commonwealth system. Take care!</p>
]]></content:encoded>
			<wfw:commentRss>http://scande3.com/2015/04/a-further-look-at-metadatas-affect-on-discoverability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Effect of Metadata Subjects on a Digital Object&#8217;s Discoverability</title>
		<link>http://scande3.com/2015/04/effect-of-metadata-subjects-on-a-digital-objects-discoverability/</link>
		<comments>http://scande3.com/2015/04/effect-of-metadata-subjects-on-a-digital-objects-discoverability/#comments</comments>
		<pubDate>Wed, 08 Apr 2015 06:14:01 +0000</pubDate>
		<dc:creator><![CDATA[scande3]]></dc:creator>
				<category><![CDATA[Digital Commonwealth]]></category>
		<category><![CDATA[Metadata]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://scande3.com/?p=12</guid>
		<description><![CDATA[Inspired by Mark E. Phillips series of blog posts analyzing subject metadata from DPLA hubs and a conversation with Corey Harper at code4lib on an analysis he is doing on DPLA data, I decided to do some statistical digging into &#8230; <a href="http://scande3.com/2015/04/effect-of-metadata-subjects-on-a-digital-objects-discoverability/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Inspired by <a title="Part 4 of his analysis that links to previous parts" href="http://vphill.com/journal/post/5580" target="_blank">Mark E. Phillips series of blog posts</a> analyzing subject metadata from DPLA hubs and a conversation with <a title="Corey Harper's Twitter" href="https://twitter.com/chrpr" target="_blank">Corey Harper</a> at code4lib on an analysis he is doing on DPLA data, I decided to do some statistical digging into the <a title="Digital Commonwealth Repository" href="https://www.digitalcommonwealth.org/" target="_blank">Digital Commonwealth </a>system. In particular: what effect does subject level metadata have on how discoverable an object is in a repository shared by over 100 institutions?</p>
<p>The following are the shared details on what the following tables will represent:</p>
<ul>
<li>A six month time period from October 1st, 2014 until March 31st, 2015 for objects the existed in the repository before December 31st, 2014.</li>
<li>The listed view counts come from the Google Analytics API and reflect views on the object&#8217;s main result page only. An example of this page would be: <a class="uri_metadata_link" title="Sample main view page of an object" href="http://arktest.bpl.org/ark:/50959/zs25x877c" target="_blank">http://arktest.bpl.org/ark:/50959/zs25x877c</a> (of course, linked to the test server to prevent future object statistics from being manipulated by this post! :p).</li>
</ul>
<h2>My Initial Subject Stats Gathering Attempt Chart</h2>
<table class=" alignleft" style="border-color: #000000;">
<caption><strong>Term Clarifications</strong>:<br />
&#8220;Topic Subject Only&#8221; column has records that have no geographic subject element.<br />
&#8220;Geographic Subjects Only&#8221; column has record that have no topic subject element.<br />
&#8220;Top 5 Average&#8221; row is just the average views for the top 5 individual records of that category.</caption>
<tbody>
<tr class="head_table_fields">
<td width="28%"></td>
<td style="text-align: center;" width="18%"><strong>No Subjects</strong></td>
<td style="text-align: center;" width="18%"><strong>Topic Subject Only</strong></td>
<td style="text-align: center;" width="18%"><strong>Geographic Subjects Only</strong></td>
<td style="text-align: center;" width="18%"><strong>Both Topic and Geographic</strong></td>
</tr>
<tr>
<td><strong>Total Records</strong></td>
<td style="text-align: center;">3,958</td>
<td style="text-align: center;"> 61,101</td>
<td style="text-align: center;"> 3,438</td>
<td style="text-align: center;"> 77,482</td>
</tr>
<tr class="alt_table_row">
<td><strong>Average Views</strong></td>
<td style="text-align: center;">1.098</td>
<td style="text-align: center;"> 0.853</td>
<td style="text-align: center;"> 2.170</td>
<td style="text-align: center;"> 2.035</td>
</tr>
<tr>
<td><strong>Percent with 1+ Views</strong></td>
<td style="text-align: center;">42.1%</td>
<td style="text-align: center;"> 29.6%</td>
<td style="text-align: center;"> 48.9%</td>
<td style="text-align: center;"> 51.9%</td>
</tr>
<tr class="alt_table_row">
<td><strong>Top 5 Average Views</strong></td>
<td style="text-align: center;">44</td>
<td style="text-align: center;">161</td>
<td style="text-align: center;">71</td>
<td style="text-align: center;">394</td>
</tr>
</tbody>
</table>
<p>As we can see, Geographic Subjects and a combination of Topic / Geographic Subjects both do great things to our numbers! The average views in these cases show a strong increase over lacking those elements and the percentage of records with at least one view go up a significant amount. Records with a geographic subject have a low &#8220;Top 5 Average&#8221; but that could potentially be due to the very limited amount of records in the system that fall in that category. But&#8230; Topic Subjects&#8230; what happened to you?!?! I had positive expectations for you! Why are you dragging your records into the darkness of oblivion? Only 29.6% of records were ever viewed even once and the average views are a paltry 0.853 per object&#8230; both significantly lower than records with no subjects at all!</p>
<p>I pondered on this for a short period of time and began to form a theory on why these results came out as they were. To start with, in the Digital Commonwealth system, we link virtually all Geographic Topics to the <a title="TGN" href="http://vocab.getty.edu/tgn" target="_blank">TGN Controlled Linked Data Vocabulary</a> using a gem known as <a title="Used to be Bplgeo" href="https://github.com/projecthydra-labs/geomash" target="_blank">Geomash</a>. This means that all of those records are in the same hierarchical structure using the same place terms &#8211; which is absolutely awesome for faceting! Meanwhile, our subjects currently benefit from no such structure at this current time. As <a title="Part two of his awesome analysis on subjects" href="http://vphill.com/journal/post/5557" target="_blank">Mark E. Phillips analysis</a> showed, our system has a bunch of &#8220;unique subjects&#8221; and those are&#8230;. less awesome for faceting. So I decided I need to &#8220;stats smarter&#8221; and account for the difference between how shared different subjects on a record are. Thus the following methodology was introduced for the remaining charts:</p>
<ul>
<li>For a digital object record, I would keep a count of the number of topic subjects that record contained that were shared with at least one of the other 113 institutions in the Digital Commonwealth system.</li>
</ul>
<h2>My Smarter Chart (Objects with a Topic Subject and no Geographic Subject)</h2>
<table style="border-color: #000000;">
<caption><strong>Term Clarifications</strong>:<br />
&#8220;Percent of Topic Only&#8221; row refers to the percentage that the broken up objects make up of the original table&#8217;s &#8220;Topic Subject Only&#8221; column.</caption>
<tbody>
<tr class="head_table_fields">
<td width="28%"></td>
<td style="text-align: center;" width="18%"><strong>Unique Topic Subject Objects</strong></td>
<td style="text-align: center;" width="18%"><strong>One Topic Subject Shared By Multiple Institutions</strong></td>
<td style="text-align: center;" width="18%"><strong>Two Topic Subjects Shared By Multiple Institutions</strong></td>
<td style="text-align: center;" width="18%"><strong>3+ Subjects Shared By Multiple Institutions</strong></td>
</tr>
<tr>
<td><b>Total Records</b></td>
<td style="text-align: center;"> 1,140</td>
<td style="text-align: center;"> 34,528</td>
<td style="text-align: center;"> 16,077</td>
<td style="text-align: center;">9,356</td>
</tr>
<tr class="alt_table_row">
<td><strong>Percent of Topic Only</strong></td>
<td style="text-align: center;">1.9%</td>
<td style="text-align: center;">56.5%</td>
<td style="text-align: center;">26.3%</td>
<td style="text-align: center;">15.3%</td>
</tr>
<tr>
<td><b>Average Views</b></td>
<td style="text-align: center;"> 0.419</td>
<td style="text-align: center;"> 0.503</td>
<td style="text-align: center;"> 1.233</td>
<td style="text-align: center;">1.542</td>
</tr>
<tr class="alt_table_row">
<td><strong>Percent with 1+ Views</strong></td>
<td style="text-align: center;"> 17.9%</td>
<td style="text-align: center;"> 19.2%</td>
<td style="text-align: center;"> 40.8%</td>
<td style="text-align: center;">50.1%</td>
</tr>
<tr>
<td><strong>Top 5 Average Views</strong></td>
<td style="text-align: center;">13</td>
<td style="text-align: center;">122</td>
<td style="text-align: center;">155</td>
<td style="text-align: center;">99</td>
</tr>
</tbody>
</table>
<p>This&#8230;. look a bit better and seems to validate that non-unique subjects have a positive effect on a digital object being discovered. As one adds more shared subjects, the average amount of views an item could expect to receive increased. However, I find it interesting that the top 5 record average went to the exactly two shared topic category. Why is this the case?</p>
<div id="attachment_24" style="width: 310px" class="wp-caption aligncenter"><a href="http://scande3.com/wp-content/uploads/2015/04/aliens.jpg"><img class="wp-image-24 size-medium" src="http://scande3.com/wp-content/uploads/2015/04/aliens-300x262.jpg" alt="Source: memegenerator.net" width="300" height="262" /></a><p class="wp-caption-text">As valid as any other explanation I could give.</p></div>
<p>In seriousness, I am far from a statistician so this blog is mostly a raw data dump with my limited perspective on what it could mean. In keeping with hopefully offering interesting data, it would be neat to have that same breakdown for objects with both subject topics and subject geographical elements to see if the pattern holds up, right? As such, I now present:</p>
<h2>The &#8220;Going Above and Beyond&#8221; Chart (Objects with both a Topic and Geographic Subject)</h2>
<table style="border-color: #000000;">
<caption><strong>Term Clarifications</strong>:<br />
&#8220;Percent of Topic Only&#8221; row refers to the percentage that the broken up objects make up of the original table&#8217;s &#8220;Both Topic and Geographic&#8221; column.</caption>
<tbody>
<tr class="head_table_fields">
<td width="28%"></td>
<td style="text-align: center;" width="18%"><b>Unique Topic Subject Objects w/ Geographic</b></td>
<td style="text-align: center;" width="18%"><strong>One Topic Subject Shared By Multiple Institutions w/ Geographic</string></td>
<td style="text-align: center;" width="18%"><strong>Two Topic Subjects Shared By Multiple Institutions w/ Geographic</strong></td>
<td style="text-align: center;" width="18%"><strong>3+ Topic Subjects Shared By Multiple Institutions w/ Geographic</strong></td>
</tr>
<tr>
<td><b>Total Records</b></td>
<td style="text-align: center;"> 352</td>
<td style="text-align: center;"> 32,009</td>
<td style="text-align: center;"> 16,823</td>
<td style="text-align: center;">28,298</td>
</tr>
<tr class="alt_table_row">
<td><strong>Percent of Topic Only</strong></td>
<td style="text-align: center;">0.5%</td>
<td style="text-align: center;">41.3%</td>
<td style="text-align: center;">21.7%</td>
<td style="text-align: center;">36.5%</td>
</tr>
<tr>
<td><b>Average Views</b></td>
<td style="text-align: center;"> 1.878</td>
<td style="text-align: center;"> 1.835</td>
<td style="text-align: center;"> 1.959</td>
<td style="text-align: center;">2.307</td>
</tr>
<tr class="alt_table_row">
<td><strong>Percent with 1+ Views</strong></td>
<td style="text-align: center;"> 19.6%</td>
<td style="text-align: center;"> 46.8%</td>
<td style="text-align: center;"> 76.9%</td>
<td style="text-align: center;">55.9%</td>
</tr>
<tr>
<td><strong>Top 5 Average Views</strong></td>
<td style="text-align: center;">31</td>
<td style="text-align: center;">308</td>
<td style="text-align: center;">135</td>
<td style="text-align: center;">284</td>
</tr>
</tbody>
</table>
<p>It would appear that when a geographic element exists, the effect on the average views is less pronounced than when that element is missing.  The trend is still of an overall increase in the average views an object will receive but the percentage jump from adding each shared subject is less. There are also some additional oddities introduced such as two shared topic subjects having an unusual boost in a record&#8217;s chance of having been viewed at least once. I double checked the numbers to make sure that the &#8220;exactly two&#8221; category continues to be taunt me.</p>
<p>It would appear the &#8220;Top 5 Average Views&#8221; category doesn&#8217;t show much of a trend in terms of what leads to our most popular items. My colleague said that statistic was not useful and overall just confusing and it appears I must concede that he can do a victory dance. One cannot even easily claim that it might be mainly related to the amount of records that fall into a category as there is a large exception to that pattern in the &#8220;Topic Subject Breakdown&#8221; chart. Still included it in all of these charts as I still find it interesting that the availability of metadata did not seem to have a consistent effect on what might be considered a &#8220;viral success&#8221; in our system. If I include an attempt to catch the &#8220;cream of the crop&#8221; statistic in the future, l likely would increase this to &#8220;top 50 average views&#8221; to see if that behaves more in a manner that I would expect and smooths out some of the extreme variance.</p>
<h2>Conclusion</h2>
<p>Overall it would appear that Geographic Subjects are more important to have than Topic Subjects on a record. The average of even a highly shared Topic Subject Only record against a record with just a Geographic Subject still favors the latter. Additionally: more shared subjects had only a relatively limited affect on records with a Geographic element (although an overall pattern of increased finability was observed). Whether this is due to the extra effort we put in to enhance the geographic aspect of our metadata by programmatically linking it to a controlled vocabulary or if that is just a more useful facet is hard to tell. We would have to do more analysis on user behavior to add that element to this equation and may end up taking a look at that in the future.</p>
<p>One of our next focuses for metadata enrichment will be topic subjects and it will be interesting to see how any enhancements on that field affect these stats. My colleague has also suggested that we take a look at numbers comparing subjects elements with LCSH &#8220;&#8211;&#8221; separators compared to those without the concatenation. I&#8217;d imagine this to be overall similar to the &#8220;shared topic subject&#8221; breakdowns since the more elements contained in that concatenated LCSH string, the more likely it is to be unique. But that is just a hypothesis at this point. Additionally such a followup blog post would look at the effect of an object being hosted by the Digital Commonwealth (74% of objects) compared to only having its metadata harvested in the system (26% of objects). There is also a thought about somehow taking into account the popularity of an overall collection into this analysis since a popular collection would likely boost all of its respective member items regardless of metadata quality. Feel free to leave a comment on other interesting analysis that might be worthwhile to do.</p>
<p>If you found this blog interesting, feel free to share it! Thanks for taking the time to read this post and take care.</p>
]]></content:encoded>
			<wfw:commentRss>http://scande3.com/2015/04/effect-of-metadata-subjects-on-a-digital-objects-discoverability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
