// Generated by CoffeeScript 1.10.0
(function() {
var cb, container, data, height, margin, objects, predicates, predicates_clip, prefixes, subjects, subjects_clip, triples, triples_enter, width;
width = 960;
height = 500;
margin = 20;
cb = new Clipboard('.fa-clipboard');
prefixes = {
'http://dbpedia.org/resource': 'dbr:',
'http://www.w3.org/2000/01/rdf-schema': 'rdfs:',
'http://dbpedia.org/ontology': 'dbo:',
'http://www.w3.org/2002/07/owl': 'owl:'
};
data = [
{
subject: 'http://dbpedia.org/resource/Pisa',
predicate: 'http://www.w3.org/2000/01/rdf-schema/label',
object: 'Pisa'
}, {
subject: 'http://dbpedia.org/resource/Pisa',
predicate: 'http://dbpedia.org/ontology/populationTotal',
object: '89373',
object_datatype: 'http://www.w3.org/2001/XMLSchema#date'
}, {
subject: 'http://dbpedia.org/resource/Pisa',
predicate: 'http://dbpedia.org/ontology/country',
object: 'http://dbpedia.org/resource/Italy'
}, {
subject: 'http://dbpedia.org/resource/Pisa',
predicate: 'http://www.w3.org/2002/07/owl/sameAs',
object: 'http://sws.geonames.org/6542122/'
}
];
container = d3.select('table').style({
width: width + "px",
height: height + "px",
'margin-left': margin + "px"
});
triples = container.selectAll('.triple').data(data);
triples_enter = triples.enter().append('tr').attr({
"class": 'triple'
});
subjects = triples.append('td').append('span').attr({
"class": 'subject'
}).on('mouseover', function(d) {
return d3.select(this).select('.clipboard').style('color', '#000');
}).on('mouseout', function(d) {
return d3.select(this).select('.clipboard').style('color', '#f2f2f2');
});
subjects.append('span').attr({
"class": 'prefix',
title: function(d) {
return d.subject.split('/').slice(0, -1).join('/');
}
}).text(function(d) {
return prefixes[d.subject.split('/').slice(0, -1).join('/')];
});
subjects.append('span').text(function(d) {
return d.subject.split('/').slice(-1)[0];
});
subjects_clip = subjects.append('span').attr({
"class": 'clipboard'
});
subjects_clip.append('i').attr({
"class": 'fa fa-clipboard',
'data-clipboard-text': function(d) {
return d.subject;
},
title: 'Copy subject to clipboard.'
}).on('click', function(d) {
return d3.select(this.parentNode).style('color', 'gray');
});
predicates = triples.append('td').append('span').attr({
"class": 'predicate'
}).on('mouseover', function(d) {
return d3.select(this).select('.clipboard').style('color', '#000');
}).on('mouseout', function(d) {
return d3.select(this).select('.clipboard').style('color', '#f2f2f2');
});
predicates.append('span').attr({
"class": 'prefix',
title: function(d) {
return d.predicate.split('/').slice(0, -1).join('/');
}
}).text(function(d) {
return prefixes[d.predicate.split('/').slice(0, -1).join('/')];
});
predicates.append('span').text(function(d) {
return d.predicate.split('/').slice(-1)[0];
});
predicates_clip = predicates.append('span').attr({
"class": 'clipboard'
});
predicates_clip.append('i').attr({
"class": 'fa fa-clipboard',
'data-clipboard-text': function(d) {
return d.predicate;
},
title: 'Copy precicate to clipboard.'
}).on('click', function(d) {
return d3.select(this.parentNode).style('color', 'gray');
});
objects = triples.append('td').append('span').attr({
"class": 'object'
}).on('mouseover', function(d) {
return d3.select(this).select('.clipboard').style('color', '#000');
}).on('mouseout', function(d) {
return d3.select(this).select('.clipboard').style('color', '#f2f2f2');
}).html(function(d) {
if (d.object.indexOf('http') === 0 && (prefixes[d.object.split('/').slice(0, -1).join('/')] != null)) {
return "" + prefixes[d.object.split('/').slice(0, -1).join('/')] + "" + (d.object.split('/').slice(-1)[0]) + "";
} else if (d.object.indexOf('http') === 0 && (prefixes[d.object.split('/').slice(0, -1).join('/')] == null)) {
return "<" + d.object + ">";
} else {
return "" + d.object + "";
}
});
objects.selectAll('i').on('click', function(d) {
return d3.select(this.parentNode).style('color', 'gray');
});
}).call(this);