diff --git a/scorer.py b/scorer.py
index 5c4ce1f8320e8ac1d072026c22e965953b4f8c89..569dfaebeb35b2eff6f36fa91ffedeb4741367d6 100644
--- a/scorer.py
+++ b/scorer.py
@@ -24,9 +24,9 @@ class ODRL:
 		graph.parse(odrl_fname)
 		odrl_ns = "http://www.w3.org/ns/odrl/2/"
 		ccrel_ns = "http://creativecommons.org/ns#"
-		perm_node = None
-		obl_node = None
-		proh_node = None
+		perm_nodes = []
+		obl_nodes = []
+		proh_nodes = []
 		actions = {} # action listing for every blank node
 		
 		# List actions and modalities
@@ -34,22 +34,22 @@ class ODRL:
 			src, prop, tgt = str(src), str(prop), str(tgt)
 			if prop == odrl_ns + "permission":
 				self.has_perm = True
-				perm_node = tgt
+				perm_nodes.append(tgt)
 			elif prop == odrl_ns + "obligation":
 				self.has_obl = True
-				obl_node = tgt
+				obl_nodes.append(tgt)
 			elif prop == odrl_ns + "prohibition":
 				self.has_proh = True
-				proh_node = tgt
+				proh_nodes.append(tgt)
 			elif prop == odrl_ns + "action":
 				if src not in actions: actions[src] = []
 				actions[src].append(tgt)
 		
 		# Link modalities with actions
 		for node in actions:
-			if node == perm_node: mod = self.perm
-			elif node == obl_node: mod = self.obl
-			elif node == proh_node: mod = self.proh
+			if node in perm_nodes: mod = self.perm
+			elif node in obl_nodes: mod = self.obl
+			elif node in proh_nodes: mod = self.proh
 			else: print("Warning: ill-formed ODRL")
 			for act in actions[node]:
 				mod.append(act)
@@ -100,10 +100,18 @@ class Scores:
 			self.scores[crit]["fn"] += 1
 	
 	def get_precision(self, crit):
-		return self.scores[crit]["tp"]/(self.scores[crit]["tp"] + self.scores[crit]["fp"])
+		tp = self.scores[crit]["tp"]
+		fp = self.scores[crit]["fp"]
+		if tp + fp != 0:
+			return tp/(tp + fp)
+		else: return None
 	
 	def get_recall(self, crit):
-		return self.scores[crit]["tp"]/(self.scores[crit]["tp"] + self.scores[crit]["fn"])
+		tp = self.scores[crit]["tp"]
+		fn = self.scores[crit]["fn"]
+		if tp + fn != 0:
+			return tp/(tp + fn)
+		else: return None
 	
 	def get_total_precision(self):
 		tot_tp = 0
@@ -111,7 +119,9 @@ class Scores:
 		for crit in self.scores:
 			tot_tp += self.scores[crit]["tp"]
 			tot_fp += self.scores[crit]["fp"]
-		return tot_tp/(tot_tp + tot_fp)
+		if tot_tp + tot_fp != 0:
+			return tot_tp/(tot_tp + tot_fp)
+		else: return None
 			
 	def get_total_recall(self):
 		tot_tp = 0
@@ -119,7 +129,9 @@ class Scores:
 		for crit in self.scores:
 			tot_tp += self.scores[crit]["tp"]
 			tot_fn += self.scores[crit]["fn"]
-		return tot_tp/(tot_tp + tot_fn)
+		if tot_tp + tot_fn != 0:
+			return tot_tp/(tot_tp + tot_fn)
+		else: return None
 	
 	def __str__(self):
 		s = ""