data = {
var query = " PREFIX dcterms: <http://purl.org/dc/terms/> \n";
query += " PREFIX dcndl: <http://ndl.go.jp/dcndl/terms/> \n";
query += " SELECT DISTINCT count(?s) as ?c ?type ?org ?collection WHERE { \n";
query += " ?s dcndl:materialType ?type . \n";
query += " ?s dcndl:digitizedPublisher ?org . \n";
query += " filter(lang(?org) = \"ja\") \n";
query += " ?s dcterms:isPartOf ?collection . \n";
query += " filter(lang(?collection) = \"ja\") \n";
query += " } \n";
var url = "https://sparql.dl.itc.u-tokyo.ac.jp/?query=" + encodeURIComponent(query) + "&output=json"
var data_ = await d3.json(url);
var result = data_.results.bindings;
var data = []
var orgs = []
var collections = []
for (var i = 0; i < result.length; i++) {
var obj = result[i]
var collection = obj.collection.value
var org = obj.org.value
var type = obj.type.value.replace("http://ndl.go.jp/ndltype/", "")
var c = Number(obj.c.value)
if(orgs.indexOf(org) == -1){
data.push({
"name": org,
"parent": null
})
orgs.push(org)
}
if(collections.indexOf(collection) == -1){
data.push({
"name": collection,
"parent": org
})
collections.push(collection)
}
data.push({
"name": type,
"parent": collection,
"value": c
})
}
var dataMap = {};
data.forEach(function (node) {
dataMap[node.name] = node;
});
var tree = [];
data.forEach(function (node) {
var parent = dataMap[node.parent];
if (parent) {
(parent.children || (parent.children = []))
.push(node);
} else {
tree.push(node);
}
});
tree = {
"name": "UTokyo Academic Archives Portal",
"children": tree
}
return tree;
}