stevenh@60: PREFIX rdf: stevenh@60: PREFIX rdfs: stevenh@60: PREFIX owl: stevenh@60: PREFIX xsd: stevenh@60: PREFIX abc: stevenh@60: PREFIX seq: stevenh@60: PREFIX sia: stevenh@60: stevenh@60: INSERT { ?vte1 sia:orderedIndex ?orderedIndex; stevenh@60: sia:memberOfOrderedSet ?dataset} stevenh@60: stevenh@60: WHERE stevenh@60: { stevenh@60: { stevenh@79: SELECT ?dataset ?vte1 (COUNT (DISTINCT(?vte2)) AS ?numSmallerVtes) stevenh@60: WHERE stevenh@60: { stevenh@60: { stevenh@60: SELECT ?vte1 ?vte2 ?dataset stevenh@60: WHERE stevenh@60: { stevenh@60: ?vte1 sia:dimVal ?dimVal1x . stevenh@60: ?dimVal1x sia:dimension ?smallestDimensionMin . stevenh@60: ?dimVal1x sia:value ?value1x . stevenh@60: stevenh@60: ?vte2 sia:dimVal ?dimVal2x . stevenh@60: ?dimVal2x sia:dimension ?smallestDimensionMin . stevenh@60: ?dimVal2x sia:value ?value2x . stevenh@60: stevenh@60: FILTER (?value1x > ?value2x) . stevenh@60: stevenh@60: { stevenh@60: { stevenh@60: SELECT ?vte1 ?vte2 (MIN(?dimension) AS ?smallestDimensionMin) ?dataset stevenh@60: WHERE stevenh@60: { stevenh@60: ?vte1 a sia:VectorTableElement . stevenh@60: ?vte1 sia:dimVal ?dimVal1 . stevenh@60: ?vte1 sia:memberOfDataset ?dataset . stevenh@60: ?dimVal1 sia:dimension ?dimension . stevenh@60: ?dimVal1 sia:value ?value1 . stevenh@60: stevenh@60: ?vte2 a sia:VectorTableElement . stevenh@60: ?vte2 sia:dimVal ?dimVal2 . stevenh@60: ?vte2 sia:memberOfDataset ?dataset . stevenh@60: ?dimVal2 sia:dimension ?dimension . stevenh@60: ?dimVal2 sia:value ?value2 . stevenh@60: stevenh@60: FILTER (?value1 != ?value2) . stevenh@60: } stevenh@60: GROUP BY ?dataset ?vte1 ?vte2 stevenh@60: } stevenh@60: } stevenh@60: } stevenh@60: } stevenh@60: stevenh@60: UNION stevenh@60: stevenh@60: { stevenh@60: SELECT ?vte1 ?vte2 ?dataset stevenh@60: WHERE stevenh@60: { stevenh@60: ?vte1 sia:fromDatapoint ?vte1FromDatapoint . stevenh@60: ?vte1FromDatapoint sia:orderedIndex ?value1 . stevenh@60: stevenh@60: ?vte2 sia:fromDatapoint ?vte2FromDatapoint . stevenh@60: ?vte2FromDatapoint sia:orderedIndex ?value2 . stevenh@60: stevenh@60: FILTER (?value1 > ?value2) . stevenh@60: stevenh@60: { stevenh@60: stevenh@60: # These are vtes which are equal in all dimensions stevenh@60: SELECT ?vte1 ?vte2 ?dataset stevenh@60: WHERE stevenh@60: { stevenh@60: ?vte1 a sia:VectorTableElement . stevenh@60: ?vte1 sia:memberOfDataset ?dataset . stevenh@60: ?vte2 a sia:VectorTableElement . stevenh@60: ?vte2 sia:memberOfDataset ?dataset . stevenh@60: stevenh@60: MINUS stevenh@60: { stevenh@60: ?vte1 a sia:VectorTableElement . stevenh@60: ?vte1 sia:memberOfDataset ?dataset . stevenh@60: ?vte1 sia:dimVal ?dimVal1 . stevenh@60: ?dimVal1 sia:dimension ?dimension . stevenh@60: ?dimVal1 sia:value ?value1 . stevenh@60: stevenh@60: ?vte2 a sia:VectorTableElement . stevenh@60: ?vte2 sia:memberOfDataset ?dataset . stevenh@60: ?vte2 sia:dimVal ?dimVal2 . stevenh@60: ?dimVal2 sia:dimension ?dimension . stevenh@60: ?dimVal2 sia:value ?value2 . stevenh@60: stevenh@60: FILTER (?value1 != ?value2) . stevenh@60: FILTER (?vte1 != ?vte2) . stevenh@60: } stevenh@60: } stevenh@60: GROUP BY ?dataset ?vte1 ?vte2 stevenh@60: } stevenh@60: } stevenh@60: } stevenh@60: } stevenh@60: GROUP BY ?dataset ?vte1 stevenh@60: } stevenh@60: BIND (?numSmallerVtes + 1 AS ?orderedIndex) stevenh@60: }