diff src/sparql/insert_vte_order_bar_one.sparql @ 60:387439c076f9

new
author stevenh
date Sat, 11 May 2013 17:56:37 +0100
parents
children fd9111c83e57
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sparql/insert_vte_order_bar_one.sparql	Sat May 11 17:56:37 2013 +0100
@@ -0,0 +1,119 @@
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX owl: <http://www.w3.org/2002/07/owl#>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+PREFIX abc: <http://example.org/abc#>
+PREFIX seq: <http://example.org/seq#>
+PREFIX sia: <http://example.org/sia#>
+
+INSERT { ?vte1 sia:orderedIndex ?orderedIndex;
+			   sia:memberOfOrderedSet ?dataset}
+			
+WHERE
+{
+	?vte1 a sia:VectorTableElement .
+	?vte1 sia:memberOfDataset ?dataset .
+
+	{
+		SELECT ?vte1 (COUNT (DISTINCT(?vte2)) AS ?numSmallerVtes) ?dataset
+		WHERE	
+		{
+			{
+				SELECT ?vte1 ?vte2 ?dataset
+				WHERE
+				{
+					?vte1 sia:dimVal ?dimVal1x .
+					?vte1 sia:memberOfDataset ?dataset .
+					?vte1 a sia:VectorTableElement .
+					?dimVal1x sia:dimension ?smallestDimensionMin .
+					?dimVal1x sia:value ?value1x .
+				
+					?vte2 sia:dimVal ?dimVal2x .
+					?vte2 sia:memberOfDataset ?dataset .
+					?vte2 a sia:VectorTableElement .
+					?dimVal2x sia:dimension ?smallestDimensionMin .
+					?dimVal2x sia:value ?value2x .
+				
+					FILTER (?value1x > ?value2x) .
+				
+					{
+						{
+							SELECT ?vte1 ?vte2 (MIN(?dimension) AS ?smallestDimensionMin) ?dataset
+							WHERE
+							{
+								?vte1 a sia:VectorTableElement .
+								?vte1 sia:dimVal ?dimVal1 .
+								?vte1 sia:memberOfDataset ?dataset .
+								?dimVal1 sia:dimension ?dimension .
+								?dimVal1 sia:value ?value1 .
+					
+								?vte2 a sia:VectorTableElement .
+								?vte2 sia:dimVal ?dimVal2 .
+								?vte2 sia:memberOfDataset ?dataset .
+								?dimVal2 sia:dimension ?dimension .
+								?dimVal2 sia:value ?value2 .
+					
+								FILTER (?value1 != ?value2) .
+							}
+							GROUP BY ?dataset ?vte1 ?vte2
+						}
+					}
+				}
+			}
+			
+			UNION
+			
+			{
+				SELECT ?vte1 ?vte2 ?dataset
+				WHERE
+				{
+					?vte1 a sia:VectorTableElement .
+					?vte1 sia:memberOfDataset ?dataset .
+					?vte1 sia:fromDatapoint ?vte1FromDatapoint .
+					?vte1FromDatapoint sia:orderedIndex ?value1 .
+					
+					?vte2 a sia:VectorTableElement .
+					?vte2 sia:memberOfDataset ?dataset .
+					?vte2 sia:fromDatapoint ?vte2FromDatapoint .
+					?vte2FromDatapoint sia:orderedIndex ?value2 .
+					
+					FILTER (?value1 > ?value2) .
+				
+					{
+				
+						# These are vtes which are equal in all dimensions
+						SELECT ?vte1 ?vte2 ?dataset
+						WHERE
+						{
+							?vte1 a sia:VectorTableElement .
+							?vte1 sia:memberOfDataset ?dataset .
+							?vte2 a sia:VectorTableElement .
+							?vte2 sia:memberOfDataset ?dataset .
+						
+							MINUS
+							{
+								?vte1 a sia:VectorTableElement .
+								?vte1 sia:memberOfDataset ?dataset .
+								?vte1 sia:dimVal ?dimVal1 .
+								?dimVal1 sia:dimension ?dimension .
+								?dimVal1 sia:value ?value1 .
+						
+								?vte2 a sia:VectorTableElement .
+								?vte2 sia:memberOfDataset ?dataset .
+								?vte2 sia:dimVal ?dimVal2 .
+								?dimVal2 sia:dimension ?dimension .
+								?dimVal2 sia:value ?value2 .
+						
+								FILTER (?value1 != ?value2) .
+								FILTER (?vte1 != ?vte2) .
+							}
+						}
+						GROUP BY ?dataset ?vte1 ?vte2
+					}
+				}
+			}
+		}
+		GROUP BY ?dataset ?vte1
+	}
+	BIND (?numSmallerVtes + 1 AS ?orderedIndex)
+}
\ No newline at end of file