view src/sparql/insert_vte_order_bar_one.sparql @ 94:fedf516f6a78 tip

test file
author stevenh
date Mon, 29 Dec 2014 15:16:22 +0000
parents fd9111c83e57
children
line wrap: on
line source
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
{
	{
		SELECT ?dataset ?vte1 (COUNT (DISTINCT(?vte2)) AS ?numSmallerVtes)
		WHERE	
		{
			{
				SELECT ?vte1 ?vte2 ?dataset
				WHERE
				{
					?vte1 sia:dimVal ?dimVal1x .
					?dimVal1x sia:dimension ?smallestDimensionMin .
					?dimVal1x sia:value ?value1x .
				
					?vte2 sia:dimVal ?dimVal2x .
					?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 sia:fromDatapoint ?vte1FromDatapoint .
					?vte1FromDatapoint sia:orderedIndex ?value1 .
					
					?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)
}