dataset personStats over person : Person {
	properties[name]
	
	column liked_by : Person.all.select(p | p.likes.includes(person)).size()
	column liking : person.likes.size()
	
	column disliked_by : Person.all.select(p | p.dislikes.includes(person)).size()
	column disliking : person.dislikes.size()
	
	column like_meter : liked_by - disliked_by
}

dataset otherStats over p : Person {
	properties[name]
}
