This is a visualization of the DPLA ingestion system's workflows from various partner sources.
Click to drag nodes. Dashed links are parameterized requests.
Implemented in D3.js; based on mbostock's Mobile Patent Suits block.
This is a visualization of the DPLA ingestion system's workflows from various partner sources.
Click to drag nodes. Dashed links are parameterized requests.
Implemented in D3.js; based on mbostock's Mobile Patent Suits block.
(function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var j=typeof require=="function"&&require;if(!h&&j)return j(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}var f=typeof require=="function"&&require;for(var g=0;g<d.length;g++)e(d[g]);return e})({1:[function(a,b,c){var d=self;d.dagreD3=a("./index")},{"./index":2}],2:[function(a,b,c){b.exports={Digraph:a("graphlib").Digraph,Renderer:a("./lib/Renderer"),json:a("graphlib").converter.json,layout:a("dagre").layout,version:a("./lib/version")}},{"./lib/Renderer":3,"./lib/version":4,dagre:11,graphlib:28}],3:[function(a,b,c){function g(){this._layout=d(),this.drawNodes(k),this.drawEdgeLabels(l),this.drawEdgePaths(m),this.positionNodes(n),this.positionEdgeLabels(o),this.positionEdgePaths(p),this.transition(q),this.postLayout(r),this.postRender(s),this.edgeInterpolate("bundle"),this.edgeTension(.95)}function h(a){var b=a.copy();return b.nodes().forEach(function(a){var c=b.node(a);c===undefined&&(c={},b.node(a,c)),"label"in c||(c.label="")}),b.edges().forEach(function(a){var c=b.edge(a);c===undefined&&(c={},b.edge(a,c)),"label"in c||(c.label="")}),b}function i(a,b){var c=a.getBBox();b.width=c.width,b.height=c.height}function j(a,b){var c=b.run(a);return a.eachNode(function(a,b){c.node(a).label=b.label}),a.eachEdge(function(a,b,d,e){c.edge(a).label=e.label}),c}function k(a,b){var c=a.nodes().filter(function(b){return!z(a,b)}),d=b.selectAll("g.node").classed("enter",!1).data(c,function(a){return a});return d.selectAll("*").remove(),d.enter().append("g").style("opacity",0).attr("class","node enter"),d.each(function(b){t(a.node(b),e.select(this),10,10)}),this._transition(d.exit()).style("opacity",0).remove(),d}function l(a,b){var c=b.selectAll("g.edgeLabel").classed("enter",!1).data(a.edges(),function(a){return a});return c.selectAll("*").remove(),c.enter().append("g").style("opacity",0).attr("class","edgeLabel enter"),c.each(function(b){t(a.edge(b),e.select(this),0,0)}),this._transition(c.exit()).style("opacity",0).remove(),c}function n(a,b,c){function d(b){var c=a.node(b);return"translate("+c.x+","+c.y+")"}b.filter(".enter").attr("transform",d),this._transition(b).style("opacity",1).attr("transform",d)}function o(a,b){function c(b){var c=a.edge(b),d=x(c.points);return"translate("+d.x+","+d.y+")"}b.filter(".enter").attr("transform",c),this._transition(b).style("opacity",1).attr("transform",c)}function p(a,b){function f(b){var f=a.edge(b),g=a.node(a.incidentNodes(b)[0]),h=a.node(a.incidentNodes(b)[1]),i=f.points.slice(),j=i.length===0?h:i[0],k=i.length===0?g:i[i.length-1];return i.unshift(y(g,j)),i.push(y(h,k)),e.svg.line().x(function(a){return a.x}).y(function(a){return a.y}).interpolate(c).tension(d)(i)}var c=this._edgeInterpolate,d=this._edgeTension;b.filter(".enter").selectAll("path").attr("d",f),this._transition(b.selectAll("path")).attr("d",f).style("opacity",1)}function q(a){return a}function r(){}function s(a,b){a.isDirected()&&b.select("#arrowhead").empty()&&b.append("svg:defs").append("svg:marker").attr("id","arrowhead").attr("viewBox","0 0 10 10").attr("refX",8).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",5).attr("orient","auto").attr("style","fill: #333").append("svg:path").attr("d","M 0 0 L 10 5 L 0 10 z")}function t(a,b,c,d){var e=a.label,f=b.append("rect"),g=b.append("g");e[0]==="<"?(u(e,g),c=d=0):v(e,g,Math.floor(a.labelCols),a.labelCut);var h=b.node().getBBox();g.attr("transform","translate("+ -h.width/2+","+ -h.height/2+")"),f.attr("rx",5).attr("ry",5).attr("x",-(h.width/2+c)).attr("y",-(h.height/2+d)).attr("width",h.width+2*c).attr("height",h.height+2*d)}function u(a,b){var c=b.append("foreignObject").attr("width","100000"),d,e;c.append("xhtml:div").style("float","left").html(function(){return a}).each(function(){d=this.clientWidth,e=this.clientHeight}),c.attr("width",d).attr("height",e)}function v(a,b,c,d){d===undefined&&(d="false"),d=d.toString().toLowerCase()==="true";var e=b.append("text").attr("text-anchor","left");a=a.replace(/\\n/g,"\n");var f=c?w(a,c,d):a;f=f.split("\n");for(var g=0;g<f.length;g++)e.append("tspan").attr("dy","1em").attr("x","1").text(f[g])}function w(a,b,c,d){d=d||"\n",b=b||75,c=c||!1;if(!a)return a;var e=".{1,"+b+"}(\\s|$)"+(c?"|.{"+b+"}|.+$":"|\\S+?(\\s|$)");return a.match(RegExp(e,"g")).join(d)}function x(a){var b=a.length/2;if(a.length%2)return a[Math.floor(b)];var c=a[b-1],d=a[b];return{x:(c.x+d.x)/2,y:(c.y+d.y)/2}}function y(a,b){var c=a.x,d=a.y,e=b.x-c,f=b.y-d,g=a.width/2,h=a.height/2,i,j;return Math.abs(f)*g>Math.abs(e)*h?(f<0&&(h=-h),i=f===0?0:h*e/f,j=h):(e<0&&(g=-g),i=g,j=e===0?0:g*f/e),{x:c+i,y:d+j}}function z(a,b){return"children"in a&&a.children(b).length}function A(a,b){return a.bind?a.bind(b):function(){return a.apply(b,arguments)}}var d=a("dagre").layout,e;try{e=a("d3")}catch(f){e=window.d3}b.exports=g,g.prototype.layout=function(a){return arguments.length?(this._layout=a,this):this._layout},g.prototype.drawNodes=function(a){return arguments.length?(this._drawNodes=A(a,this),this):this._drawNodes},g.prototype.drawEdgeLabels=function(a){return arguments.length?(this._drawEdgeLabels=A(a,this),this):this._drawEdgeLabels},g.prototype.drawEdgePaths=function(a){return arguments.length?(this._drawEdgePaths=A(a,this),this):this._drawEdgePaths},g.prototype.positionNodes=function(a){return arguments.length?(this._positionNodes=A(a,this),this):this._positionNodes},g.prototype.positionEdgeLabels=function(a){return arguments.length?(this._positionEdgeLabels=A(a,this),this):this._positionEdgeLabels},g.prototype.positionEdgePaths=function(a){return arguments.length?(this._positionEdgePaths=A(a,this),this):this._positionEdgePaths},g.prototype.transition=function(a){return arguments.length?(this._transition=A(a,this),this):this._transition},g.prototype.postLayout=function(a){return arguments.length?(this._postLayout=A(a,this),this):this._postLayout},g.prototype.postRender=function(a){return arguments.length?(this._postRender=A(a,this),this):this._postRender},g.prototype.edgeInterpolate=function(a){return arguments.length?(this._edgeInterpolate=a,this):this._edgeInterpolate},g.prototype.edgeTension=function(a){return arguments.length?(this._edgeTension=a,this):this._edgeTension},g.prototype.run=function(a,b){a=h(a),b.selectAll("g.edgePaths, g.edgeLabels, g.nodes").data(["edgePaths","edgeLabels","nodes"]).enter().append("g").attr("class",function(a){return a});var c=this._drawNodes(a,b.select("g.nodes")),d=this._drawEdgeLabels(a,b.select("g.edgeLabels"));c.each(function(b){i(this,a.node(b))}),d.each(function(b){i(this,a.edge(b))});var e=j(a,this._layout);this._postLayout(e,b);var f=this._drawEdgePaths(a,b.select("g.edgePaths"));return this._positionNodes(e,c),this._positionEdgeLabels(e,d),this._positionEdgePaths(e,f),this._postRender(e,b),e};var m=function(a,b){var c=b.selectAll("g.edgePath").classed("enter",!1).data(a.edges(),function(a){return a});return c.enter().append("g").attr("class","edgePath enter").append("path").style("opacity",0).attr("marker-end","url(#arrowhead)"),this._transition(c.exit()).style("opacity",0).remove(),c}},{d3:10,dagre:11}],4:[function(a,b,c){b.exports="0.1.5"},{}],5:[function(a,b,c){c.Set=a("./lib/Set"),c.PriorityQueue=a("./lib/PriorityQueue"),c.version=a("./lib/version")},{"./lib/PriorityQueue":6,"./lib/Set":7,"./lib/version":9}],6:[function(a,b,c){function d(){this._arr=[],this._keyIndices={}}b.exports=d,d.prototype.size=function(){return this._arr.length},d.prototype.keys=function(){return this._arr.map(function(a){return a.key})},d.prototype.has=function(a){return a in this._keyIndices},d.prototype.priority=function(a){var b=this._keyIndices[a];if(b!==undefined)return this._arr[b].priority},d.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},d.prototype.add=function(a,b){var c=this._keyIndices;if(a in c)return!1;var d=this._arr,e=d.length;return c[a]=e,d.push({key:a,priority:b}),this._decrease(e),!0},d.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var a=this._arr.pop();return delete this._keyIndices[a.key],this._heapify(0),a.key},d.prototype.decrease=function(a,b){var c=this._keyIndices[a];if(b>this._arr[c].priority)throw new Error("New priority is greater than current priority. Key: "+a+" Old: "+this._arr[c].priority+" New: "+b);this._arr[c].priority=b,this._decrease(c)},d.prototype._heapify=function(a){var b=this._arr,c=2*a,d=c+1,e=a;c<b.length&&(e=b[c].priority<b[e].priority?c:e,d<b.length&&(e=b[d].priority<b[e].priority?d:e),e!==a&&(this._swap(a,e),this._heapify(e)))},d.prototype._decrease=function(a){var b=this._arr,c=b[a].priority,d;while(a!==0){d=a>>1;if(b[d].priority<c)break;this._swap(a,d),a=d}},d.prototype._swap=function(a,b){var c=this._arr,d=this._keyIndices,e=c[a],f=c[b];c[a]=f,c[b]=e,d[f.key]=a,d[e.key]=b}},{}],7:[function(a,b,c){function e(a){this._size=0,this._keys={};if(a)for(var b=0,c=a.length;b<c;++b)this.add(a[b])}function f(a){var b=Object.keys(a),c=b.length,d=new Array(c),e;for(e=0;e<c;++e)d[e]=a[b[e]];return d}var d=a("./util");b.exports=e,e.intersect=function(a){if(a.length===0)return new e;var b=new e(d.isArray(a[0])?a[0]:a[0].keys());for(var c=1,f=a.length;c<f;++c){var g=b.keys(),h=d.isArray(a[c])?new e(a[c]):a[c];for(var i=0,j=g.length;i<j;++i){var k=g[i];h.has(k)||b.remove(k)}}return b},e.union=function(a){var b=d.reduce(a,function(a,b){return a+(b.size?b.size():b.length)},0),c=new Array(b),f=0;for(var g=0,h=a.length;g<h;++g){var i=a[g],j=d.isArray(i)?i:i.keys();for(var k=0,l=j.length;k<l;++k)c[f++]=j[k]}return new e(c)},e.prototype.size=function(){return this._size},e.prototype.keys=function(){return f(this._keys)},e.prototype.has=function(a){return a in this._keys},e.prototype.add=function(a){return a in this._keys?!1:(this._keys[a]=a,++this._size,!0)},e.prototype.remove=function(a){return a in this._keys?(delete this._keys[a],--this._size,!0):!1}},{"./util":8}],8:[function(a,b,c){Array.isArray?c.isArray=Array.isArray:c.isArray=function(a){return Object.prototype.toString.call(a)==="[object Array]"},"function"!=typeof Array.prototype.reduce?c.reduce=function(a,b,c){"use strict";if(null===a||"undefined"==typeof a)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof b)throw new TypeError(b+" is not a function");var d,e,f=a.length>>>0,g=!1;1<arguments.length&&(e=c,g=!0);for(d=0;f>d;++d)a.hasOwnProperty(d)&&(g?e=b(e,a[d],d,a):(e=a[d],g=!0));if(!g)throw new TypeError("Reduce of empty array with no initial value");return e}:c.reduce=function(a,b,c){return a.reduce(b,c)}},{}],9:[function(a,b,c){b.exports="1.1.3"},{}],10:[function(a,b,c){a("./d3"),b.exports=d3,function(){delete this.d3}()},{}],11:[function(a,b,c){c.Digraph=a("graphlib").Digraph,c.Graph=a("graphlib").Graph,c.layout=a("./lib/layout"),c.version=a("./lib/version")},{"./lib/layout":12,"./lib/version":27,graphlib:28}],12:[function(a,b,c){var d=a("./util"),e=a("./rank"),f=a("./order"),g=a("graphlib").CGraph,h=a("graphlib").CDigraph;b.exports=function(){function j(a){var c=new h;a.eachNode(function(a,b){b===undefined&&(b={}),c.addNode(a,{width:b.width,height:b.height}),b.hasOwnProperty("rank")&&(c.node(a).prefRank=b.rank)}),a.parent&&a.nodes().forEach(function(b){c.parent(b,a.parent(b))}),a.eachEdge(function(a,b,d,e){e===undefined&&(e={});var f={e:a,minLen:e.minLen||1,width:e.width||0,height:e.height||0,points:[]};c.addEdge(null,b,d,f)});var d=a.graph()||{};return c.graph({rankDir:d.rankDir||b.rankDir,orderRestarts:d.orderRestarts}),c}function k(a){var g=i.rankSep(),h;try{return h=d.time("initLayoutGraph",j)(a),h.order()===0?h:(h.eachEdge(function(a,b,c,d){d.minLen*=2}),i.rankSep(g/2),d.time("rank.run",e.run)(h,b.rankSimplex),d.time("normalize",l)(h),d.time("order",f)(h,b.orderMaxSweeps),d.time("position",c.run)(h),d.time("undoNormalize",m)(h),d.time("fixupEdgePoints",n)(h),d.time("rank.restoreEdges",e.restoreEdges)(h),d.time("createFinalGraph",o)(h,a.isDirected()))}finally{i.rankSep(g)}}function l(a){var b=0;a.eachEdge(function(c,d,e,f){var g=a.node(d).rank,h=a.node(e).rank;if(g+1<h){for(var i=d,j=g+1,k=0;j<h;++j,++k){var l="_D"+ ++b,m={width:f.width,height:f.height,edge:{id:c,source:d,target:e,attrs:f},rank:j,dummy:!0};k===0?m.index=0:j+1===h&&(m.index=1),a.addNode(l,m),a.addEdge(null,i,l,{}),i=l}a.addEdge(null,i,e,{}),a.delEdge(c)}})}function m(a){a.eachNode(function(b,c){if(c.dummy){if("index"in c){var d=c.edge;a.hasEdge(d.id)||a.addEdge(d.id,d.source,d.target,d.attrs);var e=a.edge(d.id).points;e[c.index]={x:c.x,y:c.y,ul:c.ul,ur:c.ur,dl:c.dl,dr:c.dr}}a.delNode(b)}})}function n(a){a.eachEdge(function(a,b,c,d){d.reversed&&d.points.reverse()})}function o(a,b){var c=b?new h:new g;c.graph(a.graph()),a.eachNode(function(a,b){c.addNode(a,b)}),a.eachNode(function(b){c.parent(b,a.parent(b))}),a.eachEdge(function(a,b,d,e){c.addEdge(e.e,b,d,e)});var d=0,e=0;return a.eachNode(function(b,c){a.children(b).length||(d=Math.max(d,c.x+c.width/2),e=Math.max(e,c.y+c.height/2))}),a.eachEdge(function(a,b,c,f){var g=Math.max.apply(Math,f.points.map(function(a){return a.x})),h=Math.max.apply(Math,f.points.map(function(a){return a.y}));d=Math.max(d,g+f.width/2),e=Math.max(e,h+f.height/2)}),c.graph().width=d,c.graph().height=e,c}function p(a){return function(){return arguments.length?(a.apply(null,arguments),i):a()}}var b={debugLevel:0,orderMaxSweeps:f.DEFAULT_MAX_SWEEPS,rankSimplex:!1,rankDir:"TB"},c=a("./position")(),i={};return i.orderIters=d.propertyAccessor(i,b,"orderMaxSweeps"),i.rankSimplex=d.propertyAccessor(i,b,"rankSimplex"),i.nodeSep=p(c.nodeSep),i.edgeSep=p(c.edgeSep),i.universalSep=p(c.universalSep),i.rankSep=p(c.rankSep),i.rankDir=d.propertyAccessor(i,b,"rankDir"),i.debugAlignment=p(c.debugAlignment),i.debugLevel=d.propertyAccessor(i,b,"debugLevel",function(a){d.log.level=a,c.debugLevel(a)}),i.run=d.time("Total layout",k),i._normalize=l,i}},{"./order":13,"./position":18,"./rank":19,"./util":26,graphlib:28}],13:[function(a,b,c){function k(a,b){function o(){a.eachNode(function(a,b){m[a]=b.order})}arguments.length<2&&(b=j);var c=a.graph().orderRestarts||0,h=f(a);h.forEach(function(b){b=b.filterNodes(function(b){return!a.children(b).length})});var i=0,k,l=Number.MAX_VALUE,m={};for(var p=0;p<Number(c)+1&&l!==0;++p){k=Number.MAX_VALUE,g(a,c>0),d.log(2,"Order phase start cross count: "+a.graph().orderInitCC);var q,r,s;for(q=0,r=0;r<4&&q<b&&k>0;++q,++r,++i)n(a,h,q),s=e(a),s<k&&(r=0,k=s,s<l&&(o(),l=s)),d.log(3,"Order phase start "+p+" iter "+q+" cross count: "+s)}Object.keys(m).forEach(function(b){if(!a.children||!a.children(b).length)a.node(b).order=m[b]}),a.graph().orderCC=l,d.log(2,"Order iterations: "+i),d.log(2,"Order phase best cross count: "+a.graph().orderCC)}function l(a,b){var c={};return b.forEach(function(b){c[b]=a.inEdges(b).map(function(b){return a.node(a.source(b)).order})}),c}function m(a,b){var c={};return b.forEach(function(b){c[b]=a.outEdges(b).map(function(b){return a.node(a.target(b)).order})}),c}function n(a,b,c){c%2===0?o(a,b,c):p(a,b,c)}function o(a,b){var c;for(i=1;i<b.length;++i)c=h(b[i],c,l(a,b[i].nodes()))}function p(a,b){var c;for(i=b.length-2;i>=0;--i)h(b[i],c,m(a,b[i].nodes()))}var d=a("./util"),e=a("./order/crossCount"),f=a("./order/initLayerGraphs"),g=a("./order/initOrder"),h=a("./order/sortLayer");b.exports=k;var j=24;k.DEFAULT_MAX_SWEEPS=j},{"./order/crossCount":14,"./order/initLayerGraphs":15,"./order/initOrder":16,"./order/sortLayer":17,"./util":26}],14:[function(a,b,c){function e(a){var b=0,c=d.ordering(a);for(var e=1;e<c.length;++e)b+=f(a,c[e-1],c[e]);return b}function f(a,b,c){var d=[];b.forEach(function(b){var c=[];a.outEdges(b).forEach(function(b){c.push(a.node(a.target(b)).order)}),c.sort(function(a,b){return a-b}),d=d.concat(c)});var e=1;while(e<c.length)e<<=1;var f=2*e-1;e-=1;var g=[];for(var h=0;h<f;++h)g[h]=0;var i=0;return d.forEach(function(a){var b=a+e;++g[b];while(b>0)b%2&&(i+=g[b+1]),b=b-1>>1,++g[b]}),i}var d=a("../util");b.exports=e},{"../util":26}],15:[function(a,b,c){function f(a){function c(d){if(d===null){a.children(d).forEach(function(a){c(a)});return}var f=a.node(d);f.minRank="rank"in f?f.rank:Number.MAX_VALUE,f.maxRank="rank"in f?f.rank:Number.MIN_VALUE;var h=new e;return a.children(d).forEach(function(b){var d=c(b);h=e.union([h,d]),f.minRank=Math.min(f.minRank,a.node(b).minRank),f.maxRank=Math.max(f.maxRank,a.node(b).maxRank)}),"rank"in f&&h.add(f.rank),h.keys().forEach(function(a){a in b||(b[a]=[]),b[a].push(d)}),h}var b=[];c(null);var f=[];return b.forEach(function(b,c){f[c]=a.filterNodes(d(b))}),f}var d=a("graphlib").filter.nodesFromList,e=a("cp-data").Set;b.exports=f},{"cp-data":5,graphlib:28}],16:[function(a,b,c){function f(a,b){var c=[];a.eachNode(function(b,d){var e=c[d.rank];if(a.children&&a.children(b).length>0)return;e||(e=c[d.rank]=[]),e.push(b)}),c.forEach(function(c){b&&e.shuffle(c),c.forEach(function(b,c){a.node(b).order=c})});var f=d(a);a.graph().orderInitCC=f,a.graph().orderCC=Number.MAX_VALUE}var d=a("./crossCount"),e=a("../util");b.exports=f},{"../util":26,"./crossCount":14}],17:[function(a,b,c){function e(a,b,c){var e=[],f={};a.eachNode(function(a,b){e[b.order]=a;var g=c[a];g.length&&(f[a]=d.sum(g)/g.length)});var g=a.nodes().filter(function(a){return f[a]!==undefined});g.sort(function(b,c){return f[b]-f[c]||a.node(b).order-a.node(c).order});for(var h=0,i=0,j=g.length;i<j;++h)f[e[h]]!==undefined&&(a.node(g[i++]).order=h)}var d=a("../util");b.exports=e},{"../util":26}],18:[function(a,b,c){var d=a("./util");b.exports=function(){function c(b){b=b.filterNodes(d.filterNonSubgraphs(b));var c=d.ordering(b),e=f(b,c),i={};["u","d"].forEach(function(d){d==="d"&&c.reverse(),["l","r"].forEach(function(f){f==="r"&&m(c);var j=d+f,k=g(b,c,e,d==="u"?"predecessors":"successors");i[j]=h(b,c,k.pos,k.root,k.align),a.debugLevel>=3&&t(d+f,b,c,i[j]),f==="r"&&l(i[j]),f==="r"&&m(c)}),d==="d"&&c.reverse()}),k(b,c,i),b.eachNode(function(a){var c=[];for(var d in i){var e=i[d][a];r(d,b,a,e),c.push(e)}c.sort(function(a,b){return a-b}),q(b,a,(c[1]+c[2])/2)});var j=0,p=b.graph().rankDir==="BT"||b.graph().rankDir==="RL";c.forEach(function(c){var e=d.max(c.map(function(a){return o(b,a)}));j+=e/2,c.forEach(function(a){s(b,a,p?-j:j)}),j+=e/2+a.rankSep});var u=d.min(b.nodes().map(function(a){return q(b,a)-n(b,a)/2})),v=d.min(b.nodes().map(function(a){return s(b,a)-o(b,a)/2}));b.eachNode(function(a){q(b,a,q(b,a)-u),s(b,a,s(b,a)-v)})}function e(a,b){return a<b?a.toString().length+":"+a+"-"+b:b.toString().length+":"+b+"-"+a}function f(a,b){function k(a){var b=d[a];if(b<h||b>j)c[e(g[i],a)]=!0}var c={},d={},f,g,h,i,j;if(b.length<=2)return c;b[1].forEach(function(a,b){d[a]=b});for(var l=1;l<b.length-1;++l){f=b[l],g=b[l+1],h=0,i=0;for(var m=0;m<g.length;++m){var n=g[m];d[n]=m,j=undefined;if(a.node(n).dummy){var o=a.predecessors(n)[0];o!==undefined&&a.node(o).dummy&&(j=d[o])}j===undefined&&m===g.length-1&&(j=f.length-1);if(j!==undefined){for(;i<=m;++i)a.predecessors(g[i]).forEach(k);h=j}}}return c}function g(a,b,c,d){var f={},g={},h={};return b.forEach(function(a){a.forEach(function(a,b){g[a]=a,h[a]=a,f[a]=b})}),b.forEach(function(b){var i=-1;b.forEach(function(b){var j=a[d](b),k;j.length>0&&(j.sort(function(a,b){return f[a]-f[b]}),k=(j.length-1)/2,j.slice(Math.floor(k),Math.ceil(k)+1).forEach(function(a){h[b]===b&&!c[e(a,b)]&&i<f[a]&&(h[a]=b,h[b]=g[b]=g[a],i=f[a])}))})}),{pos:f,root:g,align:h}}function h(a,b,c,e,f){function l(a,b,c){b in h[a]?h[a][b]=Math.min(h[a][b],c):h[a][b]=c}function m(b){if(!(b in k)){k[b]=0;var d=b;do{if(c[d]>0){var h=e[j[d]];m(h),g[b]===b&&(g[b]=g[h]);var i=p(a,j[d])+p(a,d);g[b]!==g[h]?l(g[h],g[b],k[b]-k[h]-i):k[b]=Math.max(k[b],k[h]+i)}d=f[d]}while(d!==b)}}var g={},h={},i={},j={},k={};return b.forEach(function(a){a.forEach(function(b,c){g[b]=b,h[b]={},c>0&&(j[b]=a[c-1])})}),d.values(e).forEach(function(a){m(a)}),b.forEach(function(a){a.forEach(function(a){k[a]=k[e[a]];if(a===e[a]&&a===g[a]){var b=0;a in h&&Object.keys(h[a]).length>0&&(b=d.min(Object.keys(h[a]).map(function(b){return h[a][b]+(b in i?i[b]:0)}))),i[a]=b}})}),b.forEach(function(a){a.forEach(function(a){k[a]+=i[g[e[a]]]||0})}),k}function i(a,b,c){return d.min(b.map(function(a){var b=a[0];return c[b]}))}function j(a,b,c){return d.max(b.map(function(a){var b=a[a.length-1];return c[b]}))}function k(a,b,c){function h(a){c[l][a]+=g[l]}var d={},e={},f,g={},k=Number.POSITIVE_INFINITY;for(var l in c){var m=c[l];d[l]=i(a,b,m),e[l]=j(a,b,m);var n=e[l]-d[l];n<k&&(k=n,f=l)}["u","d"].forEach(function(a){["l","r"].forEach(function(b){var c=a+b;g[c]=b==="l"?d[f]-d[c]:e[f]-e[c]})});for(l in c)a.eachNode(h)}function l(a){for(var b in a)a[b]=-a[b]}function m(a){a.forEach(function(a){a.reverse()})}function n(a,b){switch(a.graph().rankDir){case"LR":return a.node(b).height;case"RL":return a.node(b).height;default:return a.node(b).width}}function o(a,b){switch(a.graph().rankDir){case"LR":return a.node(b).width;case"RL":return a.node(b).width;default:return a.node(b).height}}function p(b,c){if(a.universalSep!==null)return a.universalSep;var d=n(b,c),e=b.node(c).dummy?a.edgeSep:a.nodeSep;return(d+e)/2}function q(a,b,c){if(a.graph().rankDir==="LR"||a.graph().rankDir==="RL"){if(arguments.length<3)return a.node(b).y;a.node(b).y=c}else{if(arguments.length<3)return a.node(b).x;a.node(b).x=c}}function r(a,b,c,d){if(b.graph().rankDir==="LR"||b.graph().rankDir==="RL"){if(arguments.length<3)return b.node(c)[a];b.node(c)[a]=d}else{if(arguments.length<3)return b.node(c)[a];b.node(c)[a]=d}}function s(a,b,c){if(a.graph().rankDir==="LR"||a.graph().rankDir==="RL"){if(arguments.length<3)return a.node(b).x;a.node(b).x=c}else{if(arguments.length<3)return a.node(b).y;a.node(b).y=c}}function t(a,b,c,d){c.forEach(function(c,e){var f,g;c.forEach(function(c){var h=d[c];if(f){var i=p(b,f)+p(b,c);h-g<i&&console.log("Position phase: sep violation. Align: "+a+". Layer: "+e+". "+"U: "+f+" V: "+c+". Actual sep: "+(h-g)+" Expected sep: "+i)}f=c,g=h})})}var a={nodeSep:50,edgeSep:10,universalSep:null,rankSep:30},b={};return b.nodeSep=d.propertyAccessor(b,a,"nodeSep"),b.edgeSep=d.propertyAccessor(b,a,"edgeSep"),b.universalSep=d.propertyAccessor(b,a,"universalSep"),b.rankSep=d.propertyAccessor(b,a,"rankSep"),b.debugLevel=d.propertyAccessor(b,a,"debugLevel"),b.run=c,b}},{"./util":26}],19:[function(a,b,c){function l(a,b){n(a),d.time("constraints.apply",h.apply)(a),o(a),d.time("acyclic",e)(a);var c=a.filterNodes(d.filterNonSubgraphs(a));f(c),j(c).forEach(function(a){var d=c.filterNodes(k.nodesFromList(a));r(d,b)}),d.time("constraints.relax",h.relax(a)),d.time("reorientEdges",q)(a)}function m(a){e.undo(a)}function n(a){a.eachEdge(function(b,c,d,e){if(c===d){var f=p(a,b,c,d,e,0,!1),g=p(a,b,c,d,e,1,!0),h=p(a,b,c,d,e,2,!1);a.addEdge(null,f,c,{minLen:1,selfLoop:!0}),a.addEdge(null,f,g,{minLen:1,selfLoop:!0}),a.addEdge(null,c,h,{minLen:1,selfLoop:!0}),a.addEdge(null,g,h,{minLen:1,selfLoop:!0}),a.delEdge(b)}})}function o(a){a.eachEdge(function(b,c,d,e){if(c===d){var f=e.originalEdge,g=p(a,f.e,f.u,f.v,f.value,0,!0);a.addEdge(null,c,g,{minLen:1}),a.addEdge(null,g,d,{minLen:1}),a.delEdge(b)}})}function p(a,b,c,d,e,f,g){return a.addNode(null,{width:g?e.width:0,height:g?e.height:0,edge:{id:b,source:c,target:d,attrs:e},dummy:!0,index:f})}function q(a){a.eachEdge(function(b,c,d,e){a.node(c).rank>a.node(d).rank&&(a.delEdge(b),e.reversed=!0,a.addEdge(b,d,c,e))})}function r(a,b){var c=g(a);b&&(d.log(1,"Using network simplex for ranking"),i(a,c)),s(a)}function s(a){var b=d.min(a.nodes().map(function(b){return a.node(b).rank}));a.eachNode(function(a,c){c.rank-=b})}var d=a("./util"),e=a("./rank/acyclic"),f=a("./rank/initRank"),g=a("./rank/feasibleTree"),h=a("./rank/constraints"),i=a("./rank/simplex"),j=a("graphlib").alg.components,k=a("graphlib").filter;c.run=l,c.restoreEdges=m},{"./rank/acyclic":20,"./rank/constraints":21,"./rank/feasibleTree":22,"./rank/initRank":23,"./rank/simplex":25,"./util":26,graphlib:28}],20:[function(a,b,c){function e(a){function f(d){if(d in c)return;c[d]=b[d]=!0,a.outEdges(d).forEach(function(c){var h=a.target(c),i;d===h?console.error('Warning: found self loop "'+c+'" for node "'+d+'"'):h in b?(i=a.edge(c),a.delEdge(c),i.reversed=!0,++e,a.addEdge(c,h,d,i)):f(h)}),delete b[d]}var b={},c={},e=0;return a.eachNode(function(a){f(a)}),d.log(2,"Acyclic Phase: reversed "+e+" edge(s)"),e}function f(a){a.eachEdge(function(b,c,d,e){e.reversed&&(delete e.reversed,a.delEdge(b),a.addEdge(b,d,c,e))})}var d=a("../util");b.exports=e,b.exports.undo=f},{"../util":26}],21:[function(a,b,c){function d(a){return a!=="min"&&a!=="max"&&a.indexOf("same_")!==0?(console.error("Unsupported rank type: "+a),!1):!0}function e(a,b,c,d){a.inEdges(b).forEach(function(b){var e=a.edge(b),f;e.originalEdge?f=e:f={originalEdge:{e:b,u:a.source(b),v:a.target(b),value:e},minLen:a.edge(b).minLen},e.selfLoop&&(d=!1),d?(a.addEdge(null,c,a.source(b),f),f.reversed=!0):a.addEdge(null,a.source(b),c,f)})}function f(a,b,c,d){a.outEdges(b).forEach(function(b){var e=a.edge(b),f;e.originalEdge?f=e:f={originalEdge:{e:b,u:a.source(b),v:a.target(b),value:e},minLen:a.edge(b).minLen},e.selfLoop&&(d=!1),d?(a.addEdge(null,a.target(b),c,f),f.reversed=!0):a.addEdge(null,c,a.target(b),f)})}function g(a,b,c){c!==undefined&&a.children(b).forEach(function(b){b!==c&&!a.outEdges(c,b).length&&!a.node(b).dummy&&a.addEdge(null,c,b,{minLen:0})})}function h(a,b,c){c!==undefined&&a.children(b).forEach(function(b){b!==c&&!a.outEdges(b,c).length&&!a.node(b).dummy&&a.addEdge(null,b,c,{minLen:0})})}c.apply=function(a){function b(c){var i={};a.children(c).forEach(function(g){if(a.children(g).length){b(g);return}var h=a.node(g),j=h.prefRank;if(j!==undefined){if(!d(j))return;j in i?i.prefRank.push(g):i.prefRank=[g];var k=i[j];k===undefined&&(k=i[j]=a.addNode(null,{originalNodes:[]}),a.parent(k,c)),e(a,g,k,j==="min"),f(a,g,k,j==="max"),a.node(k).originalNodes.push({u:g,value:h,parent:c}),a.delNode(g)}}),g(a,c,i.min),h(a,c,i.max)}b(null)},c.relax=function(a){var b=[];a.eachEdge(function(a,c,d,e){var f=e.originalEdge;f&&b.push(f)}),a.eachNode(function(b,c){var d=c.originalNodes;d&&(d.forEach(function(b){b.value.rank=c.rank,a.addNode(b.u,b.value),a.parent(b.u,b.parent)}),a.delNode(b))}),b.forEach(function(b){a.addEdge(b.e,b.u,b.v,b.value)})}},{}],22:[function(a,b,c){function g(a){function g(d){var e=!0;return a.predecessors(d).forEach(function(f){b.has(f)&&!h(a,f,d)&&(b.has(d)&&(c.addNode(d,{}),b.remove(d),c.graph({root:d})),c.addNode(f,{}),c.addEdge(null,f,d,{reversed:!0}),b.remove(f),g(f),e=!1)}),a.successors(d).forEach(function(f){b.has(f)&&!h(a,d,f)&&(b.has(d)&&(c.addNode(d,{}),b.remove(d),c.graph({root:d})),c.addNode(f,{}),c.addEdge(null,d,f,{}),b.remove(f),g(f),e=!1)}),e}function i(){var d=Number.MAX_VALUE;b.keys().forEach(function(c){a.predecessors(c).forEach(function(e){if(!b.has(e)){var f=h(a,e,c);Math.abs(f)<Math.abs(d)&&(d=-f)}}),a.successors(c).forEach(function(e){if(!b.has(e)){var f=h(a,c,e);Math.abs(f)<Math.abs(d)&&(d=f)}})}),c.eachNode(function(b){a.node(b).rank-=d})}var b=new d(a.nodes()),c=new e;if(b.size()===1){var f=a.nodes()[0];return c.addNode(f,{}),c.graph({root:f}),c}while(b.size()){var j=c.order()?c.nodes():b.keys();for(var k=0,l=j.length;k<l&&g(j[k]);++k);b.size()&&i()}return c}function h(a,b,c){var d=a.node(c).rank-a.node(b).rank,e=f.max(a.outEdges(b,c).map(function(b){return a.edge(b).minLen}));return d-e}var d=a("cp-data").Set,e=a("graphlib").Digraph,f=a("../util");b.exports=g},{"../util":26,"cp-data":5,graphlib:28}],23:[function(a,b,c){function f(a){var b=e(a);b.forEach(function(b){var c=a.inEdges(b);if(c.length===0){a.node(b).rank=0;return}var e=c.map(function(b){return a.node(a.source(b)).rank+a.edge(b).minLen});a.node(b).rank=d.max(e)})}var d=a("../util"),e=a("graphlib").alg.topsort;b.exports=f},{"../util":26,graphlib:28}],24:[function(a,b,c){function d(a,b,c,d){return Math.abs(a.node(b).rank-a.node(c).rank)-d}b.exports={slack:d}},{}],25:[function(a,b,c){function f(a,b){g(a,b);for(;;){var c=k(b);if(c===null)break;var d=l(a,b,c);m(a,b,c,d)}}function g(a,b){function c(d){var e=b.successors(d);for(var f in e){var g=e[f];c(g)}d!==b.graph().root&&i(a,b,d)}h(b),b.eachEdge(function(a,b,c,d){d.cutValue=0}),c(b.graph().root)}function h(a){function c(d){var e=a.successors(d),f=b;for(var g in e){var h=e[g];c(h),f=Math.min(f,a.node(h).low)}a.node(d).low=f,a.node(d).lim=b++}var b=0;c(a.graph().root)}function i(a,b,c){var d=b.inEdges(c)[0],e=[],f=b.outEdges(c);for(var g in f)e.push(b.target(f[g]));var h=0,i=0,k=0,l=0,m=0,n=a.outEdges(c),o;for(var p in n){var q=a.target(n[p]);for(o in e)j(b,q,e[o])&&i++;j(b,q,c)||l++}var r=a.inEdges(c);for(var s in r){var t=a.source(r[s]);for(o in e)j(b,t,e[o])&&k++;j(b,t,c)||m++}var u=0;for(o in e){var v=b.edge(f[o]).cutValue;b.edge(f[o]).reversed?u-=v:u+=v}b.edge(d).reversed?h-=u-i+k-l+m:h+=u-i+k-l+m,b.edge(d).cutValue=h}function j(a,b,c){return a.node(c).low<=a.node(b).lim&&a.node(b).lim<=a.node(c).lim}function k(a){var b=a.edges();for(var c in b){var d=b[c],e=a.edge(d);if(e.cutValue<0)return d}return null}function l(a,b,c){var d=b.source(c),f=b.target(c),g=b.node(f).lim<b.node(d).lim?f:d,h=!b.edge(c).reversed,i=Number.POSITIVE_INFINITY,k;h?a.eachEdge(function(d,f,h,l){if(d!==c&&j(b,f,g)&&!j(b,h,g)){var m=e.slack(a,f,h,l.minLen);m<i&&(i=m,k=d)}}):a.eachEdge(function(d,f,h,l){if(d!==c&&!j(b,f,g)&&j(b,h,g)){var m=e.slack(a,f,h,l.minLen);m<i&&(i=m,k=d)}});if(k===undefined){var l=[],m=[];throw a.eachNode(function(a){j(b,a,g)?m.push(a):l.push(a)}),new Error("No edge found from outside of tree to inside")}return k}function m(a,b,c,d){function h(a){var c=b.inEdges(a);for(var d in c){var e=c[d],f=b.source(e),g=b.edge(e);h(f),b.delEdge(e),g.reversed=!g.reversed,b.addEdge(e,a,f,g)}}b.delEdge(c);var e=a.source(d),f=a.target(d);h(f);var i=e,j=b.inEdges(i);while(j.length>0)i=b.source(j[0]),j=b.inEdges(i);b.graph().root=i,b.addEdge(null,e,f,{cutValue:0}),g(a,b),n(a,b)}function n(a,b){function c(d){var e=b.successors(d);e.forEach(function(b){var e=o(a,d,b);a.node(b).rank=a.node(d).rank+e,c(b)})}c(b.graph().root)}function o(a,b,c){var e=a.outEdges(b,c);if(e.length>0)return d.max(e.map(function(b){return a.edge(b).minLen}));var f=a.inEdges(b,c);if(f.length>0)return-d.max(f.map(function(b){return a.edge(b).minLen}))}var d=a("../util"),e=a("./rankUtil");b.exports=f},{"../util":26,"./rankUtil":24}],26:[function(a,b,c){function d(a,b){return function(){var c=(new Date).getTime();try{return b.apply(null,arguments)}finally{e(1,a+" time: "+((new Date).getTime()-c)+"ms")}}}function e(a){e.level>=a&&console.log.apply(console,Array.prototype.slice.call(arguments,1))}c.min=function(a){return Math.min.apply(Math,a)},c.max=function(a){return Math.max.apply(Math,a)},c.all=function(a,b){for(var c=0;c<a.length;++c)if(!b(a[c]))return!1;return!0},c.sum=function(a){return a.reduce(function(a,b){return a+b},0)},c.values=function(a){return Object.keys(a).map(function(b){return a[b]})},c.shuffle=function(a){for(i=a.length-1;i>0;--i){var b=Math.floor(Math.random()*(i+1)),c=a[b];a[b]=a[i],a[i]=c}},c.propertyAccessor=function(a,b,c,d){return function(e){return arguments.length?(b[c]=e,d&&d(e),a):b[c]}},c.ordering=function(a){var b=[];return a.eachNode(function(a,c){var d=b[c.rank]||(b[c.rank]=[]);d[c.order]=a}),b},c.filterNonSubgraphs=function(a){return function(b){return a.children(b).length===0}},d.enabled=!1,c.time=d,e.level=0,c.log=e},{}],27:[function(a,b,c){b.exports="0.4.5"},{}],28:[function(a,b,c){c.Graph=a("./lib/Graph"),c.Digraph=a("./lib/Digraph"),c.CGraph=a("./lib/CGraph"),c.CDigraph=a("./lib/CDigraph"),a("./lib/graph-converters"),c.alg={isAcyclic:a("./lib/alg/isAcyclic"),components:a("./lib/alg/components"),dijkstra:a("./lib/alg/dijkstra"),dijkstraAll:a("./lib/alg/dijkstraAll"),findCycles:a("./lib/alg/findCycles"),floydWarshall:a("./lib/alg/floydWarshall"),postorder:a("./lib/alg/postorder"),preorder:a("./lib/alg/preorder"),prim:a("./lib/alg/prim"),tarjan:a("./lib/alg/tarjan"),topsort:a("./lib/alg/topsort")},c.converter={json:a("./lib/converter/json.js")};var d=a("./lib/filter");c.filter={all:d.all,nodesFromList:d.nodesFromList},c.version=a("./lib/version")},{"./lib/CDigraph":30,"./lib/CGraph":31,"./lib/Digraph":32,"./lib/Graph":33,"./lib/alg/components":34,"./lib/alg/dijkstra":35,"./lib/alg/dijkstraAll":36,"./lib/alg/findCycles":37,"./lib/alg/floydWarshall":38,"./lib/alg/isAcyclic":39,"./lib/alg/postorder":40,"./lib/alg/preorder":41,"./lib/alg/prim":42,"./lib/alg/tarjan":43,"./lib/alg/topsort":44,"./lib/converter/json.js":46,"./lib/filter":47,"./lib/graph-converters":48,"./lib/version":50}],29:[function(a,b,c){function e(){this._value=undefined,this._nodes={},this._edges={},this._nextId=0}function f(a,b,c){(a[b]||(a[b]=new d)).add( | |
c)}function g(a,b,c){var d=a[b];d.remove(c),d.size()===0&&delete a[b]}var d=a("cp-data").Set;b.exports=e,e.prototype.order=function(){return Object.keys(this._nodes).length},e.prototype.size=function(){return Object.keys(this._edges).length},e.prototype.graph=function(a){if(arguments.length===0)return this._value;this._value=a},e.prototype.hasNode=function(a){return a in this._nodes},e.prototype.node=function(a,b){var c=this._strictGetNode(a);if(arguments.length===1)return c.value;c.value=b},e.prototype.nodes=function(){var a=[];return this.eachNode(function(b){a.push(b)}),a},e.prototype.eachNode=function(a){for(var b in this._nodes){var c=this._nodes[b];a(c.id,c.value)}},e.prototype.hasEdge=function(a){return a in this._edges},e.prototype.edge=function(a,b){var c=this._strictGetEdge(a);if(arguments.length===1)return c.value;c.value=b},e.prototype.edges=function(){var a=[];return this.eachEdge(function(b){a.push(b)}),a},e.prototype.eachEdge=function(a){for(var b in this._edges){var c=this._edges[b];a(c.id,c.u,c.v,c.value)}},e.prototype.incidentNodes=function(a){var b=this._strictGetEdge(a);return[b.u,b.v]},e.prototype.addNode=function(a,b){if(a===undefined||a===null){do a="_"+ ++this._nextId;while(this.hasNode(a))}else if(this.hasNode(a))throw new Error("Graph already has node '"+a+"'");return this._nodes[a]={id:a,value:b},a},e.prototype.delNode=function(a){this._strictGetNode(a),this.incidentEdges(a).forEach(function(a){this.delEdge(a)},this),delete this._nodes[a]},e.prototype._addEdge=function(a,b,c,d,e,g){this._strictGetNode(b),this._strictGetNode(c);if(a===undefined||a===null){do a="_"+ ++this._nextId;while(this.hasEdge(a))}else if(this.hasEdge(a))throw new Error("Graph already has edge '"+a+"'");return this._edges[a]={id:a,u:b,v:c,value:d},f(e[c],b,a),f(g[b],c,a),a},e.prototype._delEdge=function(a,b,c){var d=this._strictGetEdge(a);g(b[d.v],d.u,a),g(c[d.u],d.v,a),delete this._edges[a]},e.prototype.copy=function(){var a=new this.constructor;return a.graph(this.graph()),this.eachNode(function(b,c){a.addNode(b,c)}),this.eachEdge(function(b,c,d,e){a.addEdge(b,c,d,e)}),a._nextId=this._nextId,a},e.prototype.filterNodes=function(a){var b=new this.constructor;return b.graph(this.graph()),this.eachNode(function(c,d){a(c)&&b.addNode(c,d)}),this.eachEdge(function(a,c,d,e){b.hasNode(c)&&b.hasNode(d)&&b.addEdge(a,c,d,e)}),b},e.prototype._strictGetNode=function(a){var b=this._nodes[a];if(b===undefined)throw new Error("Node '"+a+"' is not in graph");return b},e.prototype._strictGetEdge=function(a){var b=this._edges[a];if(b===undefined)throw new Error("Edge '"+a+"' is not in graph");return b}},{"cp-data":5}],30:[function(a,b,c){var d=a("./Digraph"),e=a("./compoundify"),f=e(d);b.exports=f,f.fromDigraph=function(a){var b=new f,c=a.graph();return c!==undefined&&b.graph(c),a.eachNode(function(a,c){c===undefined?b.addNode(a):b.addNode(a,c)}),a.eachEdge(function(a,c,d,e){e===undefined?b.addEdge(null,c,d):b.addEdge(null,c,d,e)}),b},f.prototype.toString=function(){return"CDigraph "+JSON.stringify(this,null,2)}},{"./Digraph":32,"./compoundify":45}],31:[function(a,b,c){var d=a("./Graph"),e=a("./compoundify"),f=e(d);b.exports=f,f.fromGraph=function(a){var b=new f,c=a.graph();return c!==undefined&&b.graph(c),a.eachNode(function(a,c){c===undefined?b.addNode(a):b.addNode(a,c)}),a.eachEdge(function(a,c,d,e){e===undefined?b.addEdge(null,c,d):b.addEdge(null,c,d,e)}),b},f.prototype.toString=function(){return"CGraph "+JSON.stringify(this,null,2)}},{"./Graph":33,"./compoundify":45}],32:[function(a,b,c){function g(){e.call(this),this._inEdges={},this._outEdges={}}var d=a("./util"),e=a("./BaseGraph"),f=a("cp-data").Set;b.exports=g,g.prototype=new e,g.prototype.constructor=g,g.prototype.isDirected=function(){return!0},g.prototype.successors=function(a){return this._strictGetNode(a),Object.keys(this._outEdges[a]).map(function(a){return this._nodes[a].id},this)},g.prototype.predecessors=function(a){return this._strictGetNode(a),Object.keys(this._inEdges[a]).map(function(a){return this._nodes[a].id},this)},g.prototype.neighbors=function(a){return f.union([this.successors(a),this.predecessors(a)]).keys()},g.prototype.sources=function(){var a=this;return this._filterNodes(function(b){return a.inEdges(b).length===0})},g.prototype.sinks=function(){var a=this;return this._filterNodes(function(b){return a.outEdges(b).length===0})},g.prototype.source=function(a){return this._strictGetEdge(a).u},g.prototype.target=function(a){return this._strictGetEdge(a).v},g.prototype.inEdges=function(a,b){this._strictGetNode(a);var c=f.union(d.values(this._inEdges[a])).keys();return arguments.length>1&&(this._strictGetNode(b),c=c.filter(function(a){return this.source(a)===b},this)),c},g.prototype.outEdges=function(a,b){this._strictGetNode(a);var c=f.union(d.values(this._outEdges[a])).keys();return arguments.length>1&&(this._strictGetNode(b),c=c.filter(function(a){return this.target(a)===b},this)),c},g.prototype.incidentEdges=function(a,b){return arguments.length>1?f.union([this.outEdges(a,b),this.outEdges(b,a)]).keys():f.union([this.inEdges(a),this.outEdges(a)]).keys()},g.prototype.toString=function(){return"Digraph "+JSON.stringify(this,null,2)},g.prototype.addNode=function(a,b){return a=e.prototype.addNode.call(this,a,b),this._inEdges[a]={},this._outEdges[a]={},a},g.prototype.delNode=function(a){e.prototype.delNode.call(this,a),delete this._inEdges[a],delete this._outEdges[a]},g.prototype.addEdge=function(a,b,c,d){return e.prototype._addEdge.call(this,a,b,c,d,this._inEdges,this._outEdges)},g.prototype.delEdge=function(a){e.prototype._delEdge.call(this,a,this._inEdges,this._outEdges)},g.prototype._filterNodes=function(a){var b=[];return this.eachNode(function(c){a(c)&&b.push(c)}),b}},{"./BaseGraph":29,"./util":49,"cp-data":5}],33:[function(a,b,c){function g(){e.call(this),this._incidentEdges={}}var d=a("./util"),e=a("./BaseGraph"),f=a("cp-data").Set;b.exports=g,g.prototype=new e,g.prototype.constructor=g,g.prototype.isDirected=function(){return!1},g.prototype.neighbors=function(a){return this._strictGetNode(a),Object.keys(this._incidentEdges[a]).map(function(a){return this._nodes[a].id},this)},g.prototype.incidentEdges=function(a,b){return this._strictGetNode(a),arguments.length>1?(this._strictGetNode(b),b in this._incidentEdges[a]?this._incidentEdges[a][b].keys():[]):f.union(d.values(this._incidentEdges[a])).keys()},g.prototype.toString=function(){return"Graph "+JSON.stringify(this,null,2)},g.prototype.addNode=function(a,b){return a=e.prototype.addNode.call(this,a,b),this._incidentEdges[a]={},a},g.prototype.delNode=function(a){e.prototype.delNode.call(this,a),delete this._incidentEdges[a]},g.prototype.addEdge=function(a,b,c,d){return e.prototype._addEdge.call(this,a,b,c,d,this._incidentEdges,this._incidentEdges)},g.prototype.delEdge=function(a){e.prototype._delEdge.call(this,a,this._incidentEdges,this._incidentEdges)}},{"./BaseGraph":29,"./util":49,"cp-data":5}],34:[function(a,b,c){function e(a){function e(b,d){c.has(b)||(c.add(b),d.push(b),a.neighbors(b).forEach(function(a){e(a,d)}))}var b=[],c=new d;return a.nodes().forEach(function(a){var c=[];e(a,c),c.length>0&&b.push(c)}),b}var d=a("cp-data").Set;b.exports=e},{"cp-data":5}],35:[function(a,b,c){function e(a,b,c,e){function h(b){var d=a.incidentNodes(b),e=d[0]!==i?d[0]:d[1],h=f[e],k=c(b),l=j.distance+k;if(k<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+b+" Weight: "+k);l<h.distance&&(h.distance=l,h.predecessor=i,g.decrease(e,l))}var f={},g=new d;c=c||function(){return 1},e=e||(a.isDirected()?function(b){return a.outEdges(b)}:function(b){return a.incidentEdges(b)}),a.eachNode(function(a){var c=a===b?0:Number.POSITIVE_INFINITY;f[a]={distance:c},g.add(a,c)});var i,j;while(g.size()>0){i=g.removeMin(),j=f[i];if(j.distance===Number.POSITIVE_INFINITY)break;e(i).forEach(h)}return f}var d=a("cp-data").PriorityQueue;b.exports=e},{"cp-data":5}],36:[function(a,b,c){function e(a,b,c){var e={};return a.eachNode(function(f){e[f]=d(a,f,b,c)}),e}var d=a("./dijkstra");b.exports=e},{"./dijkstra":35}],37:[function(a,b,c){function e(a){return d(a).filter(function(a){return a.length>1})}var d=a("./tarjan");b.exports=e},{"./tarjan":43}],38:[function(a,b,c){function d(a,b,c){var d={},e=a.nodes();return b=b||function(){return 1},c=c||(a.isDirected()?function(b){return a.outEdges(b)}:function(b){return a.incidentEdges(b)}),e.forEach(function(f){d[f]={},d[f][f]={distance:0},e.forEach(function(a){f!==a&&(d[f][a]={distance:Number.POSITIVE_INFINITY})}),c(f).forEach(function(c){var e=a.incidentNodes(c),h=e[0]!==f?e[0]:e[1],i=b(c);i<d[f][h].distance&&(d[f][h]={distance:i,predecessor:f})})}),e.forEach(function(a){var b=d[a];e.forEach(function(c){var f=d[c];e.forEach(function(c){var d=f[a],e=b[c],g=f[c],h=d.distance+e.distance;h<g.distance&&(g.distance=h,g.predecessor=e.predecessor)})})}),d}b.exports=d},{}],39:[function(a,b,c){function e(a){try{d(a)}catch(b){if(b instanceof d.CycleException)return!1;throw b}return!0}var d=a("./topsort");b.exports=e},{"./topsort":44}],40:[function(a,b,c){function e(a,b,c){function f(b,d){if(e.has(b))throw new Error("The input graph is not a tree: "+a);e.add(b),a.neighbors(b).forEach(function(a){a!==d&&f(a,b)}),c(b)}var e=new d;if(a.isDirected())throw new Error("This function only works for undirected graphs");f(b)}var d=a("cp-data").Set;b.exports=e},{"cp-data":5}],41:[function(a,b,c){function e(a,b,c){function f(b,d){if(e.has(b))throw new Error("The input graph is not a tree: "+a);e.add(b),c(b),a.neighbors(b).forEach(function(a){a!==d&&f(a,b)})}var e=new d;if(a.isDirected())throw new Error("This function only works for undirected graphs");f(b)}var d=a("cp-data").Set;b.exports=e},{"cp-data":5}],42:[function(a,b,c){function f(a,b){function i(c){var d=a.incidentNodes(c),e=d[0]!==h?d[0]:d[1],i=g.priority(e);if(i!==undefined){var j=b(c);j<i&&(f[e]=h,g.decrease(e,j))}}var c=new d,f={},g=new e,h;if(a.order()===0)return c;a.eachNode(function(a){g.add(a,Number.POSITIVE_INFINITY),c.addNode(a)}),g.decrease(a.nodes()[0],0);var j=!1;while(g.size()>0){h=g.removeMin();if(h in f)c.addEdge(null,h,f[h]);else{if(j)throw new Error("Input graph is not connected: "+a);j=!0}a.incidentEdges(h).forEach(i)}return c}var d=a("../Graph"),e=a("cp-data").PriorityQueue;b.exports=f},{"../Graph":33,"cp-data":5}],43:[function(a,b,c){function d(a){function f(h){var i=d[h]={onStack:!0,lowlink:b,index:b++};c.push(h),a.successors(h).forEach(function(a){a in d?d[a].onStack&&(i.lowlink=Math.min(i.lowlink,d[a].index)):(f(a),i.lowlink=Math.min(i.lowlink,d[a].lowlink))});if(i.lowlink===i.index){var j=[],k;do k=c.pop(),d[k].onStack=!1,j.push(k);while(h!==k);e.push(j)}}if(!a.isDirected())throw new Error("tarjan can only be applied to a directed graph. Bad input: "+a);var b=0,c=[],d={},e=[];return a.nodes().forEach(function(a){a in d||f(a)}),e}b.exports=d},{}],44:[function(a,b,c){function d(a){function f(g){if(g in c)throw new e;g in b||(c[g]=!0,b[g]=!0,a.predecessors(g).forEach(function(a){f(a)}),delete c[g],d.push(g))}if(!a.isDirected())throw new Error("topsort can only be applied to a directed graph. Bad input: "+a);var b={},c={},d=[],g=a.sinks();if(a.order()!==0&&g.length===0)throw new e;return a.sinks().forEach(function(a){f(a)}),d}function e(){}b.exports=d,d.CycleException=e,e.prototype.toString=function(){return"Graph has at least one cycle"}},{}],45:[function(a,b,c){function e(a){function b(){a.call(this),this._parents={},this._children={},this._children[null]=new d}return b.prototype=new a,b.prototype.constructor=b,b.prototype.parent=function(a,b){this._strictGetNode(a);if(arguments.length<2)return this._parents[a];if(a===b)throw new Error("Cannot make "+a+" a parent of itself");b!==null&&this._strictGetNode(b),this._children[this._parents[a]].remove(a),this._parents[a]=b,this._children[b].add(a)},b.prototype.children=function(a){return a!==null&&this._strictGetNode(a),this._children[a].keys()},b.prototype.addNode=function(b,c){return b=a.prototype.addNode.call(this,b,c),this._parents[b]=null,this._children[b]=new d,this._children[null].add(b),b},b.prototype.delNode=function(b){var c=this.parent(b);return this._children[b].keys().forEach(function(a){this.parent(a,c)},this),this._children[c].remove(b),delete this._parents[b],delete this._children[b],a.prototype.delNode.call(this,b)},b.prototype.copy=function(){var b=a.prototype.copy.call(this);return this.nodes().forEach(function(a){b.parent(a,this.parent(a))},this),b},b.prototype.filterNodes=function(b){function f(a){var b=c.parent(a);return b===null||d.hasNode(b)?(e[a]=b,b):b in e?e[b]:f(b)}var c=this,d=a.prototype.filterNodes.call(this,b),e={};return d.eachNode(function(a){d.parent(a,f(a))}),d},b}var d=a("cp-data").Set;b.exports=e},{"cp-data":5}],46:[function(a,b,c){function h(a){return Object.prototype.toString.call(a).slice(8,-1)}var d=a("../Graph"),e=a("../Digraph"),f=a("../CGraph"),g=a("../CDigraph");c.decode=function(a,b,c){c=c||e;if(h(a)!=="Array")throw new Error("nodes is not an Array");if(h(b)!=="Array")throw new Error("edges is not an Array");if(typeof c=="string")switch(c){case"graph":c=d;break;case"digraph":c=e;break;case"cgraph":c=f;break;case"cdigraph":c=g;break;default:throw new Error("Unrecognized graph type: "+c)}var i=new c;return a.forEach(function(a){i.addNode(a.id,a.value)}),i.parent&&a.forEach(function(a){a.children&&a.children.forEach(function(b){i.parent(b,a.id)})}),b.forEach(function(a){i.addEdge(a.id,a.u,a.v,a.value)}),i},c.encode=function(a){var b=[],c=[];a.eachNode(function(c,d){var e={id:c,value:d};if(a.children){var f=a.children(c);f.length&&(e.children=f)}b.push(e)}),a.eachEdge(function(a,b,d,e){c.push({id:a,u:b,v:d,value:e})});var h;if(a instanceof g)h="cdigraph";else if(a instanceof f)h="cgraph";else if(a instanceof e)h="digraph";else if(a instanceof d)h="graph";else throw new Error("Couldn't determine type of graph: "+a);return{nodes:b,edges:c,type:h}}},{"../CDigraph":30,"../CGraph":31,"../Digraph":32,"../Graph":33}],47:[function(a,b,c){var d=a("cp-data").Set;c.all=function(){return function(){return!0}},c.nodesFromList=function(a){var b=new d(a);return function(a){return b.has(a)}}},{"cp-data":5}],48:[function(a,b,c){var d=a("./Graph"),e=a("./Digraph");d.prototype.toDigraph=d.prototype.asDirected=function(){var a=new e;return this.eachNode(function(b,c){a.addNode(b,c)}),this.eachEdge(function(b,c,d,e){a.addEdge(null,c,d,e),a.addEdge(null,d,c,e)}),a},e.prototype.toGraph=e.prototype.asUndirected=function(){var a=new d;return this.eachNode(function(b,c){a.addNode(b,c)}),this.eachEdge(function(b,c,d,e){a.addEdge(b,c,d,e)}),a}},{"./Digraph":32,"./Graph":33}],49:[function(a,b,c){c.values=function(a){var b=Object.keys(a),c=b.length,d=new Array(c),e;for(e=0;e<c;++e)d[e]=a[b[e]];return d}},{}],50:[function(a,b,c){b.exports="0.7.4"},{}]},{},[1]); |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<style> | |
@import url('style.css'); | |
</style> | |
</head> | |
<body> | |
<select id="json_sources" name="json_sources"> | |
<option value="">Select a provider</option> | |
<option value="profile_artstor.pjs" selected>artstor</option> | |
<option value="profile_bhl.pjs">bhl</option> | |
<option value="profile_bpl.pjs">bpl</option> | |
<option value="profile_clemson.pjs">clemson</option> | |
<option value="profile_david_rumsey.pjs">david_rumsey</option> | |
<option value="profile_digital-commonwealth.pjs">digital-commonwealth</option> | |
<option value="profile_digitalnc.pjs">digitalnc</option> | |
<option value="profile_georgia.pjs">georgia</option> | |
<option value="profile_gpo.pjs">gpo</option> | |
<option value="profile_harvard.pjs">harvard</option> | |
<option value="profile_hathi.pjs">hathi</option> | |
<option value="profile_ia.pjs">ia</option> | |
<option value="profile_kentucky.pjs">kentucky</option> | |
<option value="profile_minnesota.pjs">minnesota</option> | |
<option value="profile_mwdl.pjs">mwdl</option> | |
<option value="profile_nara.pjs">nara</option> | |
<option value="profile_nypl.pjs">nypl</option> | |
<option value="profile_scdl-charleston.pjs">scdl-charleston</option> | |
<option value="profile_scdl-usc.pjs">scdl-usc</option> | |
<option value="profile_smithsonian.pjs">smithsonian</option> | |
<option value="profile_texas.pjs">texas</option> | |
<option value="profile_uiuc.pjs">uiuc</option> | |
<option value="profile_uiuc_book.pjs">uiuc_book</option> | |
<option value="profile_usc.pjs">usc</option> | |
<option value="profile_virginia.pjs">virginia</option> | |
<option value="profile_virginia_books.pjs">virginia_books</option> | |
<option value="profile_virtual.pjs">virtual</option> | |
</select> | |
<script src="http://d3js.org/d3.v3.min.js"></script> | |
<script src="dagre-d3.min.js"></script> | |
<script> | |
var dropdown = d3.select("#json_sources"); | |
var change = function() { | |
var source = dropdown.node().options[dropdown.node().selectedIndex].value; | |
var nodes = []; | |
var edges = []; | |
d3.json(source, function(error, json) { | |
var digraph = new dagreD3.Digraph(); | |
var enrichment_counter = {}; | |
var current = {}; | |
var target = ''; | |
data = json; | |
current.source = 'start'; | |
data['enrichments_item'].forEach(function(e) { | |
var enrichment = e.split("?"); | |
var current_enrichment = enrichment[0]; | |
if (enrichment.length == 2) { | |
current.params = decodeURIComponent(enrichment[1]); | |
} else { | |
current.params = ''; | |
} | |
if (current_enrichment in enrichment_counter) { | |
enrichment_counter[current_enrichment] += 1; | |
} else { | |
enrichment_counter[current_enrichment] = 1; | |
} | |
target = "".concat(current_enrichment, '[', enrichment_counter[current_enrichment], ']'); | |
current.target = target; | |
nodes.push(current.source); | |
edges.push(current); | |
delete current; | |
current = {}; | |
current.source = target; | |
}); | |
nodes.push(current.source); | |
nodes.push('end'); | |
edges.push({source: current.source, target: 'end', params: ''}); | |
nodes.forEach(function(n) { | |
digraph.addNode(n, {label: n}); | |
}); | |
edges.forEach(function(l) { | |
digraph.addEdge(null, l['source'], l['target'], {label: l.params}); | |
}); | |
var width = 960, | |
height = 500; | |
d3.select("#viz").select("svg").remove(); | |
var renderer = new dagreD3.Renderer(); | |
var zoom = d3.behavior.zoom().on("zoom", function() { | |
svg.select("g#digraph") | |
.attr("transform", "translate(" + d3.event.translate + ") scale(" + d3.event.scale + ")"); | |
}); | |
var svg = d3.select("#viz") .append("svg") | |
.attr({ | |
"width": "95%", | |
"height": "95%" | |
}) | |
.attr("viewBox", "0 0 " + width + " " + height ) | |
.attr("preserveAspectRatio", "xMidYMid meet") | |
.attr("pointer-events", "all") | |
.call(d3.behavior.zoom().on("zoom", redraw)); | |
var vis = svg | |
.append('svg:g'); | |
function redraw() { | |
vis.attr("transform", | |
"translate(" + d3.event.translate + ")" | |
+ " scale(" + d3.event.scale + ")"); | |
} | |
renderer.layout(dagreD3.layout().rankDir("TB")); | |
renderer.edgeInterpolate('linear'); | |
renderer.run(digraph, vis); | |
}); | |
} | |
dropdown.on("change", change) | |
change(); //trigger json on load | |
</script> | |
<div id="viz"></div> | |
</body> | |
</html> |
{ | |
"name": "artstor", | |
"type": "oai_verbs", | |
"endpoint_url": "http://oai.artstor.org/oaicatmuseum/OAIHandler", | |
"sets": [ | |
"SSDPLABrynMawr", | |
"SSDPLACornell", | |
"SSDPLAUCSD", | |
"SSDPLAWashington", | |
"SSDelwareAtlas", | |
"SSDelwareGeorge", | |
"SSDelwareHistoric", | |
"SSDelwareIncorporated1968", | |
"SSDelwareIncorporated1959", | |
"SSDelwareIncorporated1989", | |
"SSDelwareRosenthal", | |
"SSDelwarePostcard", | |
"SSDelwareBookplate", | |
"SSDelwareStewart", | |
"DPLADallas", | |
"DPLAIndiana", | |
"DPLAKress", | |
"DPLAYCBA", | |
"DPLAWalters", | |
"DPLAYaleArt" | |
], | |
"set_params": { | |
"SSDPLAWashington": {"frm": "2013-09-13"}, | |
"SSDelwareAtlas": {"frm": "2013-10-15"}, | |
"SSDelwareGeorge": {"frm": "2013-10-15"}, | |
"SSDelwareHistoric": {"frm": "2013-10-15"}, | |
"SSDelwareIncorporated1968": {"frm": "2013-10-15"}, | |
"SSDelwareIncorporated1959": {"frm": "2013-10-15"}, | |
"SSDelwareIncorporated1989": {"frm": "2013-10-15"}, | |
"SSDelwareRosenthal": {"frm": "2013-10-15"}, | |
"SSDelwarePostcard": {"frm": "2013-10-15"}, | |
"SSDelwareBookplate": {"frm": "2013-10-15"}, | |
"SSDelwareStewart": {"frm": "2013-10-15"}, | |
"DPLADallas": {"frm": "2013-03-16"} | |
}, | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/artstor", | |
"name": "ARTstor" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=id", | |
"/dpla_mapper?mapper_type=dublin_core", | |
"/strip_html", | |
"/set_context", | |
"/unset_prop?prop=sourceResource%2Fspatial", | |
"/decode_html?prop=sourceResource%2Fsubject", | |
"/artstor_select_isshownat", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/cleanup_value", | |
"/artstor_cleanup_creator", | |
"/move_date_values?prop=sourceResource%2Fsubject", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/move_date_values?prop=sourceResource%2Fformat", | |
"/enrich_date", | |
"/artstor_identify_object", | |
"/filter_paths?paths=sourceResource%2Fspatial%2CsourceResource%2Frights%2CsourceResource%2Fformat%2CsourceResource%2Fdescription", | |
"/artstor_cleanup", | |
"/enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/set_type_from_physical_format", | |
"/copy_prop?prop=sourceResource%2Fpublisher&to_prop=dataProvider", | |
"/unset_prop?prop=sourceResource%2Frelation", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "bhl", | |
"type": "oai_verbs", | |
"endpoint_url": "http://www.biodiversitylibrary.org/oai", | |
"sets": [ | |
"item" | |
], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/bhl", | |
"name": "Biodiversity Heritage Library" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id", | |
"/dpla_mapper?mapper_type=dublin_core", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/cleanup_value", | |
"/move_date_values?prop=sourceResource%2Fsubject", | |
"/move_date_values?prop=sourceResource%2Fspatial", | |
"/shred?prop=sourceResource%2Fspatial&delim=--", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/bhl_contributor_to_collection", | |
"/copy_prop?prop=sourceResource%2Fcontributor&to_prop=dataProvider", | |
"/unset_prop?prop=sourceResource%2Fcontributor", | |
"/enrich_language", | |
"/unset_prop?prop=sourceResource%2Fdescription&condition=is_digit", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/unset_prop?prop=sourceResource%2Ftemporal", | |
"/unset_prop?prop=sourceResource%2Frights", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "bpl", | |
"type": "oai_verbs", | |
"metadata_prefix": "mods", | |
"endpoint_url": "http://fedora.digitalcommonwealth.org/oaiprovider/", | |
"blacklist": ["commonwealth", "commonwealth-oai"], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/digital-commonwealth", | |
"name": "Digital Commonwealth" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=header%2Fidentifier", | |
"/dpla_mapper?mapper_type=bpl", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/cleanup_value", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/set_prop?prop=provider%2Fname&value=Digital%20Commonwealth", | |
"/set_prop?prop=sourceResource%2FstateLocatedIn&value=Massachusetts", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/unset_prop?prop=_id&condition_prop=sourceResource%2Ftitle&condition=finding_aid_title", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "clemson", | |
"type": "oai_verbs", | |
"metadata_prefix": "qdc", | |
"endpoint_url": "http://repository.clemson.edu/cgi-bin/oai.exe", | |
"sets": [], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/scdl-clemson", | |
"name": "South Carolina Digital Library" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id", | |
"/dpla_mapper?mapper_type=scdl", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/shred?prop=sourceResource%2Fsubject&delim=%3Cbr%3E", | |
"/shred?prop=sourceResource%2Fspatial", | |
"/cleanup_value", | |
"/set_spec_type?prop=sourceResource%2Fformat", | |
"/cleanup_value?prop=dataProvider", | |
"/dedup_value?prop=dataProvider", | |
"/move_date_values?prop=sourceResource%2Fsubject", | |
"/move_date_values?prop=sourceResource%2Fspatial", | |
"/shred?prop=sourceResource%2Fspatial&delim=--", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/enrich_date", | |
"/enrich-type", | |
"/shred?prop=sourceResource%2Fformat", | |
"/enrich-format", | |
"/scdl_format_to_type", | |
"/contentdm_identify_object", | |
"/enrich_location", | |
"/scdl_enrich_location", | |
"/geocode", | |
"/scdl_geocode_regions", | |
"/enrich_language", | |
"/lookup?prop=sourceResource%2Fformat&target=sourceResource%2Fformat&substitution=scdl_fix_format", | |
"/set_prop?prop=sourceResource%2FstateLocatedIn&value=South%20Carolina", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "david_rumsey", | |
"type": "oai_verbs", | |
"endpoint_url": "http://www.davidrumsey.com/luna/servlet/oai", | |
"sets": [], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/david_rumsey", | |
"name": "David Rumsey" | |
}, | |
"enrichments_coll": [ | |
"/set_prop?prop=title&value=David%20Rumsey%20Map%20Collection", | |
"/set_prop?prop=description&value=The%20historical%20map%20collection%20has%20over%2038%2C000%20maps%20and%20images%20online%2E%20The%20collection%20focuses%20on%20rare%2018th%20and%2019th%20century%20North%20American%20and%20South%20American%20maps%20and%20other%20cartographic%20materials%2E%20Historic%20maps%20of%20the%20World%2C%20Europe%2C%20Asia%2C%20and%20Africa%20are%20also%20represented%2E", | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id", | |
"/dpla_mapper?mapper_type=dublin_core", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/dedup_value?prop=sourceResource%2Fcreator%2CsourceResource%2Fdescription%2CsourceResource%2Ftitle", | |
"/cleanup_value", | |
"/move_date_values?prop=sourceResource%2Fsubject", | |
"/move_date_values?prop=sourceResource%2Fspatial", | |
"/shred?prop=sourceResource%2Fspatial&delim=--", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich_date", | |
"/enrich-subject", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/david_rumsey_identify_object", | |
"/set_prop?prop=sourceResource%2Ftype&value=image", | |
"/set_prop?prop=dataProvider&value=David%20Rumsey", | |
"/set_prop?prop=sourceResource%2Frights&value=Creative%20Commons%20Attribution-NonCommercial-ShareAlike%203.0%20Unported%3B%20http%3A%2F%2Fcreativecommons%2Eorg%2Flicenses%2Fby%2Dnc%2Dsa%2F3%2E0%2F", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/replace_substring?prop=isShownAt&old=74%2E126%2E224%2E122&new=www%2Edavidrumsey%2Ecom", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "digitalnc", | |
"type": "oai_verbs", | |
"metadata_prefix": "MODS", | |
"endpoint_url": "http://repox.lib.unc.edu:8080/repox/OAIHandler", | |
"sets": [], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/digitalnc", | |
"name": "North Carolina Digital Heritage Center" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=header%2Fidentifier", | |
"/dpla_mapper?mapper_type=digitalnc", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fdate&delim=%2C", | |
"/enrich-subject", | |
"/enrich_earliest_date", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/set_prop?prop=sourceResource%2FstateLocatedIn&value=North%20Carolina", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "georgia", | |
"type": "oai_verbs", | |
"endpoint_url": "http://dlg.galileo.usg.edu/cgi/oai", | |
"sets": ["dpla"], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/georgia", | |
"name": "Digital Library of Georgia" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id", | |
"/dpla_mapper?mapper_type=dublin_core", | |
"/strip_html", | |
"/set_context", | |
"/unset_prop?prop=sourceResource%2Fdate", | |
"/copy_prop?prop=originalRecord%2Fsource&to_prop=sourceResource%2Fdescription", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation%2CsourceResource%2Fformat", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftitle%2CsourceResource%2Ftype%2CsourceResource%2Fcreator", | |
"/shred?prop=sourceResource%2Fspatial&delim=--", | |
"/cleanup_value", | |
"/move_date_values?prop=sourceResource%2Fspatial&to_prop=sourceResource%2Fdate", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/set_spec_type", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/copy_prop?prop=sourceResource%2Fpublisher&to_prop=sourceResource%2FstateLocatedIn", | |
"/unset_prop?prop=sourceResource%2Fpublisher", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/unset_prop?prop=dataProvider", | |
"/copy_prop?prop=sourceResource%2Fcontributor&to_prop=dataProvider", | |
"/unset_prop?prop=sourceResource%2Fcontributor", | |
"/georgia_identify_object", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "getty", | |
"type": "getty", | |
"endpoint_url": "http://primose1.getty.edu:1701/PrimoWebServices/xservice/search/brief", | |
"endpoint_url_params": { | |
"indx": 1, | |
"bulkSize": 500, | |
"institution": "01GRI", | |
"loc": "local,scope:(GETTY_OCP,GETTY_ROSETTA)", | |
"query": "facet_local5,exact,DPLA" | |
}, | |
"sets": "NotSupported", | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/getty", | |
"name": "J. Paul Getty Trust" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=_id", | |
"/dpla_mapper?mapper_type=getty", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fidentifier%2CsourceResource%2Flanguage", | |
"/shred?prop=sourceResource%2Fpublisher%2CsourceResource%2Frelation%2CsourceResource%2Fsubject%2CsourceResource%2Ftitle", | |
"/enrich_earliest_date", | |
"/enrich_date", | |
"/enrich-subject", | |
"/set_spec_type", | |
"/enrich-type", | |
"/enrich_language", | |
"/set_type_from_physical_format", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "gpo", | |
"type": "oai_verbs", | |
"metadata_prefix": "marc21", | |
"endpoint_url": "http://catalog.gpo.gov/OAI", | |
"sets": [], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/gpo", | |
"name": "United States Government Printing Office (GPO)" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=header%2Fidentifier", | |
"/dpla_mapper?mapper_type=gpo", | |
"/strip_html", | |
"/set_context", | |
"/dedup_value?prop=sourceResource%2Ftemporal%2CsourceResource%2Fspatial", | |
"/cleanup_value", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "harvard", | |
"type": "oai_verbs", | |
"metadata_prefix": "mods", | |
"endpoint_url": "http://vcoai.lib.harvard.edu/vcoai/vc", | |
"sets": [ | |
"dag", | |
"lap", | |
"crimes", | |
"scarlet", | |
"manuscripts" | |
], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/harvard", | |
"name": "Harvard Library" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=header%2Fidentifier", | |
"/dpla_mapper?mapper_type=harvard", | |
"/strip_html", | |
"/set_context", | |
"/set_prop?prop=sourceResource%2Frights&value=Held%20in%20the%20collections%20of%20Harvard%20University%2E", | |
"/set_prop?prop=sourceResource%2FstateLocatedIn&value=Massachusetts", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/cleanup_value", | |
"/move_date_values?prop=sourceResource%2Fsubject", | |
"/move_date_values?prop=sourceResource%2Fspatial", | |
"/shred?prop=sourceResource%2Fspatial&delim=--", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/harvard_enrich_location", | |
"/enrich_location", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/geocode", | |
"/enrich_language", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "hathitrust", | |
"type": "hathi", | |
"endpoint_url": "file:/home/dpla/data/hathi/", | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/hathitrust", | |
"name": "HathiTrust Digital Library" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=_id", | |
"/dpla_mapper?mapper_type=hathi", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fspatial", | |
"/dedup_value?prop=sourceResource%2Fspatial", | |
"/cleanup_value", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/unset_prop?prop=_id&condition=hathi_exclude&condition_prop=dataProvider", | |
"/hathi_identify_object", | |
"/set_prop?prop=provider&_dict=True&value=%7B%22%40id%22%3A%22http%3A%2F%2Fdp.la%2Fapi%2Fcontributor%2Fhathitrust%22%2C%22name%22%3A%22HathiTrust%22%7D", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"set_provider": [ | |
"/set_prop?prop=provider&_dict=True&value=%7B%22%40id%22%3A%22http%3A%2F%2Fdp.la%2Fapi%2Fcontributor%2Fhathitrust%22%2C%22name%22%3A%22HathiTrust%22%7D" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "ia", | |
"type": "ia", | |
"endpoint_url": "http://archive.org/advancedsearch.php?q=collection%3A%22{0}%22&fl%5B%5D=identifier&output=json", | |
"endpoint_url_params": { | |
"page": 1, | |
"rows": 1000 | |
}, | |
"get_file_url": "http://www.archive.org/download/{0}/{1}", | |
"prefix_files": "{0}_files.xml", | |
"prefix_meta": "{0}_meta.xml", | |
"prefix_dc": "{0}_dc.xml", | |
"shown_at_url": "http://archive.org/details/{0}", | |
"collections": { | |
"blc": { | |
"title": "Boston Library Consortium" | |
}, | |
"cambridgepubliclibrary": { | |
"title": "Cambridge Public Library" | |
}, | |
"clemson": { | |
"title": "LYRASIS members and Sloan Foundation" | |
}, | |
"bostonpubliclibrary": { | |
"title": "Boston Public Library" | |
}, | |
"regionaldigitizationmass": { | |
"title": "Regional Digitization in Massachusetts" | |
}, | |
"getty": { | |
"title": "Getty Research Institute" | |
}, | |
"medicalheritagelibrary": { | |
"title": "Medical Heritage Library" | |
}, | |
"MontanaStateLibrary": { | |
"title": "Montana State Library" | |
} | |
}, | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/internet_archive", | |
"name": "Internet Archive" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=_id", | |
"/dpla_mapper?mapper_type=ia", | |
"/strip_html", | |
"/set_context", | |
"/ia-set-rights", | |
"/cleanup_value", | |
"/shred?action=unshred&prop=sourceResource%2Ftitle&delim=%2C%20", | |
"/cleanup_value?prop=sourceResource%2Fspatial", | |
"/filter_paths?paths=sourceResource%2Fspatial%2CsourceResource%2Fsubject", | |
"/capitalize_value", | |
"/enrich-subject", | |
"/enrich_earliest_date", | |
"/enrich-type", | |
"/enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"set_provider": [ | |
"/set_prop?prop=provider&_dict=True&value=%7B%22%40id%22%3A%22http%3A%2F%2Fdp.la%2Fapi%2Fcontributor%2Finternet_archive%22%2C%22name%22%3A%22Internet%20Archive%22%7D" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "kentucky", | |
"type": "oai_verbs", | |
"endpoint_url": "http://kdl.kyvl.org/catalog/oai/", | |
"sets": "NotSupported", | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/kdl", | |
"name": "Kentucky Digital Library" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id", | |
"/dpla_mapper?mapper_type=dublin_core", | |
"/strip_html", | |
"/set_context", | |
"/unset_prop?prop=collection", | |
"/unset_prop?prop=sourceResource%2Fcontributor", | |
"/shred?prop=sourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftitle%2CsourceResource%2Ftype", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResouce%2Fformat", | |
"/shred?prop=sourceResource%2Fspatial&delim=--", | |
"/cleanup_value", | |
"/capitalize_value?exclude=sourceResource%2Frelation", | |
"/enrich_earliest_date", | |
"/enrich_location", | |
"/enrich-subject", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_language", | |
"/copy_prop?prop=sourceResource%2Frelation&to_prop=hasView%2F@id", | |
"/copy_prop?prop=sourceResource%2Frelation&to_prop=hasView%2Fformat", | |
"/enrich-format?prop=hasView%2Fformat", | |
"/kentucky_identify_object", | |
"/unset_prop?prop=sourceResource%2Frelation", | |
"/unset_prop?prop=dataProvider", | |
"/copy_prop?prop=sourceResource%2Fpublisher&to_prop=dataProvider", | |
"/unset_prop?prop=sourceResource%2Fpublisher", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/geocode", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "minnesota", | |
"type": "oai_verbs", | |
"metadata_prefix": "qdc", | |
"endpoint_url": "http://reflections.mndigital.org/oai/oai.php", | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/mdl", | |
"name": "Minnesota Digital Library" | |
}, | |
"sets": [], | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id", | |
"/dpla_mapper?mapper_type=mdl", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Frelation%2CsourceResource%2Fspatial", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/cleanup_value", | |
"/move_date_values?prop=sourceResource%2Fsubject", | |
"/move_date_values?prop=sourceResource%2Fspatial", | |
"/shred?prop=sourceResource%2Fspatial&delim=--", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich_date", | |
"/enrich-subject", | |
"/enrich-type?default=text", | |
"/enrich-format", | |
"/enrich_location", | |
"/geocode", | |
"/contentdm_identify_object", | |
"/enrich_language", | |
"/mdl_state_located_in", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "missouri", | |
"type": "oai_verbs", | |
"metadata_prefix": "mohub_mods", | |
"endpoint_url": "http://data.mohistory.org:8081/repox/OAIHandler", | |
"blacklist": [], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/missouri-hub", | |
"name": "Missouri Hub" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=id", | |
"/dpla_mapper?mapper_type=missouri", | |
"/strip_html", | |
"/set_context", | |
"/cleanup_value", | |
"/capitalize_value", | |
"/dedup_value?prop=sourceResource%2Fcreator%2CsourceResource%2Fpublisher%2CsourceResource%2Fsubject%2CsourceResource%2Frelation", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/set_prop?prop=provider%2Fname&value=Missouri%20Hub", | |
"/set_prop?prop=sourceResource%2FstateLocatedIn&value=Missouri", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "mwdl", | |
"type": "mwdl", | |
"endpoint_url": "http://utah-primoprod.hosted.exlibrisgroup.com/PrimoWebServices/xservice/search/brief", | |
"endpoint_url_params": { | |
"indx": 1, | |
"bulkSize": 500, | |
"institution": "MWDL", | |
"loc": "local,scope:(mw)", | |
"query": "facet_tlevel,exact,online_resources", | |
"query_exc": [ | |
"facet_rtype,exact,collections", | |
"lsr04,exact,2082" | |
] | |
}, | |
"sets": "NotSupported", | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/mwdl", | |
"name": "Mountain West Digital Library" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=_id", | |
"/dpla_mapper?mapper_type=mwdl", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/cleanup_value", | |
"/mwdl_enrich_state_located_in", | |
"/move_date_values?prop=sourceResource%2Fsubject", | |
"/move_date_values?prop=sourceResource%2Fspatial", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich_date", | |
"/enrich-subject", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/mwdl_enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/mwdl_cleanup_field", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/unset_prop?prop=%5Fid&condition=mwdl%5Fexclude&condition_prop=originalRecord%2FPrimoNMBib%2Frecord%2Fsearch%2Frsrctype", | |
"/unset_prop?prop=sourceResource%2Fformat", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "nara", | |
"type": "nara", | |
"endpoint_url": "file:/home/dpla/data/nara/ArchivalDescriptions/", | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/nara", | |
"name": "National Archives and Records Administration" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=_id", | |
"/dpla_mapper?mapper_type=nara", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/cleanup_value", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich_date", | |
"/enrich-subject", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/enrich_location", | |
"/nara_enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "nypl", | |
"type": "nypl", | |
"endpoint_url": "http://api.repo.nypl.org/api/v1/items/{0}.xml", | |
"get_sets_url": "http://api.repo.nypl.org/api/v1/items/roots.xml", | |
"get_records_url": "http://api.repo.nypl.org/api/v1/items/mods/{0}.xml", | |
"endpoint_url_params": { | |
"page": 1, | |
"per_page": 100 | |
}, | |
"fetcher_threads": 4, | |
"http_headers": {"Authorization": "Token token={0}"}, | |
"sets": [], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/nypl", | |
"name": "The New York Public Library" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=_id", | |
"/dpla_mapper?mapper_type=nypl", | |
"/strip_html", | |
"/set_context", | |
"/nypl_identify_object", | |
"/cleanup_value", | |
"/capitalize_value", | |
"/enrich-subject", | |
"/enrich_earliest_date", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "scdl", | |
"type": "oai_verbs", | |
"metadata_prefix": "qdc", | |
"endpoint_url": "http://test.scmemory-search.org/oai", | |
"sets": "NotSupported", | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/scdl", | |
"name": "South Carolina Digital Library" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id", | |
"/dpla_mapper?mapper_type=scdl", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/shred?prop=sourceResource%2Fsubject&delim=%3Cbr%3E", | |
"/shred?prop=sourceResource%2Fspatial", | |
"/cleanup_value", | |
"/set_spec_type?prop=sourceResource%2Fformat", | |
"/cleanup_value?prop=dataProvider", | |
"/dedup_value?prop=dataProvider", | |
"/move_date_values?prop=sourceResource%2Fsubject", | |
"/move_date_values?prop=sourceResource%2Fspatial", | |
"/shred?prop=sourceResource%2Fspatial&delim=--", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich_date", | |
"/enrich-subject", | |
"/enrich-type", | |
"/shred?prop=sourceResource%2Fformat", | |
"/enrich-format", | |
"/scdl_format_to_type", | |
"/enrich_location", | |
"/scdl_enrich_location", | |
"/geocode", | |
"/scdl_geocode_regions", | |
"/enrich_language", | |
"/lookup?prop=sourceResource%2Fformat&target=sourceResource%2Fformat&substitution=scdl_fix_format", | |
"/set_prop?prop=sourceResource%2FstateLocatedIn&value=South%20Carolina", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "smithsonian", | |
"type": "edan", | |
"endpoint_url": "file:/home/dpla/data/smithsonian/", | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/smithsonian", | |
"name": "Smithsonian Institution" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/edan_select_id", | |
"/dpla_mapper?mapper_type=edan", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fformat", | |
"/shred?prop=sourceResource%2Fsubject&delim=%5C", | |
"/shred?prop=sourceResource%2Fsubject&delim=%3A", | |
"/copy_prop?prop=sourceResource%2Ftemporal&to_prop=sourceResource%2Fdate", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich_date", | |
"/enrich-subject", | |
"/cleanup_value", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_language", | |
"/enrich_location", | |
"/lookup?prop=sourceResource%2Fspatial%2Fcountry&target=sourceResource%2Fspatial%2Fcountry&substitution=country_alias", | |
"/geocode", | |
"/set_type_from_physical_format", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/set_prop?prop=sourceResource%2FstateLocatedIn&value=Washington%2C%20D.C.", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "texas", | |
"type": "oai_verbs", | |
"metadata_prefix": "untl", | |
"endpoint_url": "http://texashistory.unt.edu/oai/", | |
"sets": [], | |
"blacklist": [ | |
"collection:DG06", | |
"collection:TLRA", | |
"collection:PAT", | |
"collection:SHDD", | |
"collection:CANA", | |
"collection:DSDHD", | |
"collection:HUTHFP", | |
"collection:HCNS", | |
"collection:CCS", | |
"collection:MERTRI", | |
"collection:JESP", | |
"collection:SHDR", | |
"collection:CANR", | |
"collection:SG10", | |
"collection:BASTA", | |
"collection:NSCTX", | |
"collection:DGRE", | |
"collection:BELLV", | |
"collection:HENT", | |
"collection:SOUTHM", | |
"collection:ACUY", | |
"collection:CIVILG", | |
"collection:GLOHCM", | |
"collection:TP", | |
"collection:CTBR", | |
"collection:ETXNP", | |
"collection:TXRPT", | |
"collection:BRDA", | |
"collection:DDHD", | |
"collection:JJHP", | |
"collection:CCRCC", | |
"collection:LSHJ", | |
"collection:ACUC", | |
"collection:OPTMS", | |
"collection:TRACI", | |
"collection:HPUC", | |
"collection:GVWN", | |
"collection:TXRGR", | |
"collection:TTAE", | |
"collection:DSXPS", | |
"collection:AUCC", | |
"collection:GR", | |
"collection:FMTX", | |
"collection:TXAGO", | |
"collection:JBPC", | |
"collection:BCM", | |
"collection:TSHAM", | |
"collection:USTOPO", | |
"collection:DHBV", | |
"collection:BELTON", | |
"collection:FRAT", | |
"collection:GVMHD", | |
"collection:PAPPY", | |
"collection:BANKS", | |
"collection:PARTY", | |
"collection:CANCTY", | |
"collection:THC", | |
"collection:EPMT", | |
"collection:TXPT", | |
"collection:JWSMR", | |
"collection:BRAND", | |
"collection:TRCTX", | |
"collection:SANSCN", | |
"collection:BRTN", | |
"collection:OSTERH", | |
"collection:UNTFBC", | |
"collection:GSLTX", | |
"collection:HSUY", | |
"collection:STIRP", | |
"collection:TXCI", | |
"collection:ADCF", | |
"collection:STAR", | |
"collection:DTHJFK", | |
"collection:ANWS", | |
"collection:HR", | |
"collection:MMUY", | |
"collection:FWGZT", | |
"collection:SNMKS", | |
"collection:HDCC", | |
"collection:HT", | |
"collection:TAYLO", | |
"collection:POSTEN", | |
"collection:CCHCP", | |
"collection:UNTLSY", | |
"collection:PHFW", | |
"collection:THTF", | |
"collection:TWHD", | |
"collection:DWUR", | |
"collection:BMB", | |
"collection:SHGZT", | |
"collection:TXSJ", | |
"collection:THRSH", | |
"collection:TXALC", | |
"collection:VELSCO", | |
"collection:BDHBT", | |
"collection:TXSS", | |
"collection:LDO", | |
"collection:TWSUA", | |
"collection:TCO", | |
"collection:JFKDP", | |
"collection:SCOUT", | |
"collection:TOHC", | |
"collection:WYUY", | |
"collection:SWCJ", | |
"collection:SANHD", | |
"collection:DENC", | |
"collection:MAFP", | |
"collection:TXSG", | |
"collection:MEXRB", | |
"collection:ETXFR", | |
"collection:MDID", | |
"collection:UNTPH", | |
"collection:DHPS", | |
"collection:UNION", | |
"collection:NDPC", | |
"collection:JWBC", | |
"collection:DAIC", | |
"collection:DALVO", | |
"collection:LGBT", | |
"collection:RANGE", | |
"collection:YLJKT", | |
"collection:AAFP", | |
"collection:BELLCO", | |
"collection:SFHC", | |
"collection:STWCSA", | |
"collection:AFWC", | |
"collection:AVLNCH", | |
"collection:MGC", | |
"collection:BELTJ", | |
"collection:ALTO", | |
"collection:GITTX", | |
"collection:NEUBZ", | |
"collection:CNBCL", | |
"collection:RGHD", | |
"collection:HGNEWS", | |
"collection:EDFRZ", | |
"collection:SANLT", | |
"collection:RJOY", | |
"collection:JEWPST", | |
"collection:OKHPB", | |
"collection:APDC", | |
"collection:WARWP", | |
"collection:WWAR", | |
"collection:FLAKES", | |
"collection:TEXMEX", | |
"collection:FRONE", | |
"collection:DYNAMO", | |
"collection:HPUY", | |
"collection:DISDH", | |
"collection:MKDGZT", | |
"collection:ATCIT", | |
"collection:ACB", | |
"collection:EDMC", | |
"collection:STICKR", | |
"collection:SWEET", | |
"collection:ACE", | |
"collection:ATN", | |
"collection:ABCM", | |
"collection:DPRDP", | |
"collection:WCEN", | |
"collection:UTAM", | |
"collection:FB", | |
"collection:SANSWN", | |
"collection:ACULJ", | |
"collection:BCDPA", | |
"collection:OHENRY", | |
"collection:HFC", | |
"collection:RRCR", | |
"collection:GLT", | |
"collection:SG11", | |
"collection:CPFC", | |
"collection:DAILYD", | |
"collection:DAILYC", | |
"collection:DBCY", | |
"collection:BLA", | |
"collection:CWADP", | |
"collection:JASNB", | |
"collection:EASTT", | |
"collection:CARPA", | |
"collection:CGLOB", | |
"collection:RPRST", | |
"collection:RUSKC", | |
"collection:ABREP", | |
"collection:ORANGE", | |
"collection:UNTGOV", | |
"collection:DBCC", | |
"collection:ARTL", | |
"collection:EPHD", | |
"collection:BRWD", | |
"collection:BRANDH", | |
"collection:MMUC", | |
"collection:BRWB", | |
"collection:ANNOT", | |
"collection:SEYN", | |
"collection:DFMHF", | |
"collection:JCPC", | |
"collection:SG09", | |
"collection:CORR", | |
"collection:GALL", | |
"collection:HCUSA", | |
"collection:SG13", | |
"collection:TYLER", | |
"collection:COLGN", | |
"collection:SOUTHI", | |
"collection:RSRS", | |
"collection:LFAP", | |
"collection:JEFFJ", | |
"collection:TFSP", | |
"collection:NDLPC", | |
"collection:NTXD", | |
"collection:TXPUB", | |
"collection:SANSN", | |
"collection:NMPW", | |
"collection:UNTPC", | |
"collection:ALC", | |
"collection:PNHNDL", | |
"collection:LHJNT", | |
"collection:WYSACH", | |
"collection:OEB", | |
"collection:UNTCT", | |
"collection:FERWH", | |
"collection:AUSTIN", | |
"collection:HDPT", | |
"collection:STAND", | |
"collection:JTAC", | |
"collection:FWHT", | |
"collection:FTSENT", | |
"collection:BRYAN", | |
"collection:FTGECH", | |
"collection:ERGDR", | |
"collection:SANAP", | |
"collection:JEWHD", | |
"collection:ASTAR", | |
"collection:PRISM", | |
"collection:BCGPN", | |
"collection:AAP", | |
"collection:TST", | |
"collection:CIT", | |
"collection:CWPC", | |
"collection:MFLR", | |
"collection:MEXIA", | |
"collection:WYHD", | |
"collection:WWII", | |
"collection:PLDHD", | |
"collection:TXHM", | |
"collection:STCS", | |
"collection:CLAUDE", | |
"collection:WLTC", | |
"collection:DONSP", | |
"collection:TR", | |
"collection:GEOW", | |
"collection:UNTGC", | |
"collection:MINEWS", | |
"collection:RTXSL", | |
"collection:CAMH", | |
"collection:TTXR", | |
"collection:TXHRJ", | |
"collection:AMDN", | |
"collection:ABCUSC", | |
"collection:CCCR", | |
"collection:AD", | |
"collection:UNTY", | |
"collection:HOMAD", | |
"collection:WARR", | |
"collection:MFMC", | |
"collection:DMAEC", | |
"collection:JFKAM", | |
"collection:OTHER", | |
"collection:CROSBY", | |
"collection:ABPHC", | |
"collection:MJC", | |
"collection:HSUC", | |
"collection:SANAL", | |
"collection:TUHD", | |
"collection:CCPN", | |
"collection:DLSJL", | |
"collection:UNTRB", | |
"collection:MMCH", | |
"collection:WACODE", | |
"collection:TDNP", | |
"collection:CFMC", | |
"collection:WEACP", | |
"collection:TFG", | |
"collection:SNYDER", | |
"collection:SG06", | |
"collection:SG07", | |
"collection:PPCC", | |
"collection:NAPLES", | |
"collection:TPWL", | |
"collection:AHCP", | |
"collection:SWHQ", | |
"collection:UNTA", | |
"collection:MMCF", | |
"collection:TDNA", | |
"collection:BAAC", | |
"collection:UDN", | |
"collection:CHPC", | |
"collection:TFFC", | |
"access_rights:public", | |
"access_rights:unt", | |
"access_rights:unt_libraries", | |
"access_rights:unt_strict" | |
], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/the_portal_to_texas_history", | |
"name": "The Portal to Texas History" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=header%2Fidentifier", | |
"/dpla_mapper?mapper_type=untl", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fsubject&delim=%20-%20", | |
"/cleanup_value", | |
"/capitalize_value", | |
"/enrich-subject", | |
"/enrich_earliest_date", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/texas_enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "uiuc", | |
"type": "oai_verbs", | |
"metadata_prefix": "oai_qdc", | |
"endpoint_url": "http://imagesearchnew.library.illinois.edu/oai/oai.php", | |
"sets": [ | |
"kennedy", | |
"olin", | |
"cartoons", | |
"wwposters", | |
"maps", | |
"exlibris", | |
"africanmaps", | |
"motley", | |
"actors", | |
"cubuilding", | |
"tdc", | |
"chicago", | |
"sousa", | |
"bronze", | |
"ALA", | |
"reston", | |
"koopman", | |
"blueprints", | |
"cannon", | |
"sanborn" | |
], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/uiuc", | |
"name": "University of Illinois at Urbana-Champaign" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id", | |
"/dpla_mapper?mapper_type=uiuc", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/cleanup_value", | |
"/move_date_values?prop=sourceResource%2Fsubject", | |
"/move_date_values?prop=sourceResource%2Fspatial", | |
"/shred?prop=sourceResource%2Fspatial", | |
"/shred?prop=sourceResource%2Fspatial&delim=--", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/uiuc_enrich_location", | |
"/geocode", | |
"/uiuc_cleanup_spatial_name", | |
"/enrich_date", | |
"/enrich_language", | |
"/contentdm_identify_object", | |
"/set_prop?prop=dataProvider&value=University%20of%20Illinois%20at%20Urbana-Champaign%2C%20University%20Library", | |
"/unset_prop?prop=sourceResource%2Fcontributor", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "uiuc_book", | |
"type": "oai_verbs", | |
"metadata_prefix": "marc", | |
"endpoint_url": "http://ratri.grainger.illinois.edu/oca-oaiprovider/oai.asp", | |
"sets": [ | |
"UC", | |
"ILL", | |
"MN" | |
], | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/uiuc", | |
"name": "University of Illinois at Urbana-Champaign" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=header%2Fidentifier", | |
"/dpla_mapper?mapper_type=uiuc_marc", | |
"/strip_html", | |
"/set_context", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fspatial", | |
"/cleanup_value", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "usc", | |
"type": "oai_verbs", | |
"endpoint_url": "http://digitallibrary.usc.edu/oai/oai.php", | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/usc", | |
"name": "University of Southern California. Libraries" | |
}, | |
"sets": [ | |
"p15799coll8", | |
"p15799coll120", | |
"p15799coll170", | |
"p15799coll65", | |
"p15799coll15", | |
"p15799coll82", | |
"p15799coll117", | |
"p15799coll59", | |
"p15799coll87", | |
"p15799coll102", | |
"p15799coll73", | |
"p15799coll83", | |
"p15799coll70", | |
"p15799coll60", | |
"p15799coll79", | |
"p15799coll9", | |
"p15799coll61", | |
"p15799coll169", | |
"p15799coll77", | |
"p15799coll123", | |
"p15799coll74", | |
"p15799coll75", | |
"p15799coll52", | |
"p15799coll126", | |
"p15799coll48", | |
"p15799coll54", | |
"p15799coll88", | |
"p15799coll44", | |
"p15799coll68", | |
"p15799coll64", | |
"p15799coll50", | |
"p15799coll46", | |
"p15799coll14", | |
"p15799coll58", | |
"p15799coll1", | |
"p15799coll71", | |
"p15799coll127", | |
"p15799coll84", | |
"p15799coll104" | |
], | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id", | |
"/dpla_mapper?mapper_type=dublin_core", | |
"/strip_html", | |
"/set_context", | |
"/unset_prop?prop=sourceResource%2Fdate", | |
"/shred?prop=sourceResource%2Fcontributor%2CsourceResource%2Fcreator%2CsourceResource%2Fspatial", | |
"/shred?prop=sourceResource%2Flanguage%2CsourceResource%2Fpublisher%2CsourceResource%2Frelation", | |
"/shred?prop=sourceResource%2Fsubject%2CsourceResource%2Ftype%2CsourceResource%2Fformat", | |
"/shred?prop=sourceResource%2Fsubject&delim=%3Cbr%3E", | |
"/cleanup_value", | |
"/move_date_values?prop=sourceResource%2Fspatial&to_prop=sourceResource%2Fdate", | |
"/capitalize_value", | |
"/enrich_earliest_date", | |
"/enrich-subject", | |
"/enrich_date", | |
"/enrich-type", | |
"/enrich-format", | |
"/contentdm_identify_object", | |
"/enrich_location", | |
"/geocode", | |
"/enrich_language", | |
"/usc_set_dataprovider", | |
"/remove_list_values?prop=sourceResource%2Ftype&values=item", | |
"/dedup_value?prop=sourceResource%2Ftype", | |
"/unset_prop?prop=sourceResource%2Fcollection", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "virginia", | |
"type": "uva", | |
"endpoint_url": "http://fedoraproxy.lib.virginia.edu/fedora/objects/uva-lib%3A{0}/methods/uva-lib%3AmetsSDef/getMETS", | |
"collections": { | |
"628506": { | |
"title": "The Jackson Davis Collection of African American Photographs" | |
}, | |
"744806": { | |
"title": "Negatives from the Charlottesville photographic studio plus an index volume ca. 1890-1938. Holsinger Studio Collection." | |
}, | |
"817985": { | |
"title": "University of Virginia Visual History Collection ca. 1825-present. University of Virginia Online Visual History." | |
} | |
}, | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/virginia", | |
"name": "University of Virginia Library" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=_id", | |
"/dpla_mapper?mapper_type=uva", | |
"/strip_html", | |
"/set_context", | |
"/copy_prop?prop=sourceResource%2Frights&to_prop=hasView%2Frights", | |
"/cleanup_value", | |
"/capitalize_value", | |
"/enrich-subject", | |
"/enrich_earliest_date", | |
"/enrich-type", | |
"/enrich-format?prop=hasView%2Fformat&type_field=sourceResource%2Ftype", | |
"/enrich_location", | |
"/enrich_language", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/set_prop?prop=sourceResource%2FstateLocatedIn&value=Virginia", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
{ | |
"name": "virginia_books", | |
"type": "uva", | |
"endpoint_url": "http://fedora-prod02.lib.virginia.edu:8080/fedora/objects/uva-lib%3A{0}/methods/uva-lib%3AmetsSDef/getMETS", | |
"collections": { | |
"2190487": { | |
"title": "DPLA Collection Record for UVA Digital Library Text Collections" | |
} | |
}, | |
"contributor": { | |
"@id": "http://dp.la/api/contributor/virginia", | |
"name": "University of Virginia Library" | |
}, | |
"enrichments_coll": [ | |
"/set_context", | |
"/validate_mapv3" | |
], | |
"enrichments_item": [ | |
"/select-id?prop=_id", | |
"/dpla_mapper?mapper_type=uva", | |
"/strip_html", | |
"/set_context", | |
"/copy_prop?prop=sourceResource%2Frights&to_prop=hasView%2Frights", | |
"/cleanup_value", | |
"/capitalize_value", | |
"/enrich-subject", | |
"/enrich_earliest_date", | |
"/enrich-type", | |
"/enrich-format?prop=hasView%2Fformat&type_field=sourceResource%2Ftype", | |
"/enrich_location", | |
"/enrich_language", | |
"/copy_prop?prop=provider%2Fname&to_prop=dataProvider&skip_if_exists=True", | |
"/set_prop?prop=sourceResource%2FstateLocatedIn&value=Virginia", | |
"/enrich_location?prop=sourceResource%2FstateLocatedIn", | |
"/validate_mapv3" | |
], | |
"thresholds": { | |
"added": 5000, | |
"changed": 1000, | |
"deleted": 1000 | |
} | |
} |
.link { | |
fill: none; | |
stroke: #666; | |
stroke-width: 1.5px; | |
} | |
#start { | |
fill: green; | |
} | |
.link.start { | |
stroke: green; | |
} | |
#end { | |
fill: red; | |
} | |
.link.end { | |
stroke: red; | |
} | |
.link.parameterized { | |
stroke-dasharray: 0,2 1; | |
} | |
circle { | |
fill: #ccc; | |
stroke: #333; | |
stroke-width: 1.5px; | |
} | |
circle.start { | |
fill: green; | |
stroke: green; | |
} | |
circle.end { | |
fill: red; | |
stroke: red; | |
} | |
text { | |
font: 10px sans-serif; | |
pointer-events: none; | |
text-shadow: 0 1px 0 #fff, 1px 0 0 #fff, 0 -1px 0 #fff, -1px 0 0 #fff; | |
} | |
.node rect { | |
stroke: #333; | |
stroke-width: 1.5px; | |
fill: #fff; | |
} | |
.edgeLabel rect { | |
fill: #fff; | |
} | |
path { | |
stroke: #000; | |
stroke-width: 1.5px; | |
fill: #000; | |
} |
Should I redo this in Dagre?