Hello there,
I have an object property which can appear more than once. It defines min
and max values for prices which should not overlap and I need to check it.
<xxx:Toy rdf:ID="car_1">
<xxx:hasPrice>
<xxx:Price rdf:ID="price_1">
<xxx:hasMinPrice>300.0</xxx:hasMinPrice>
<xxx:hasMaxPrice>450.0</xxx:hasMaxPrice>
</xxx:Price>
</xxx:hasPrice>
<xxx:hasPrice>
<xxx:Price rdf:ID="price_2">
<xxx:hasMinPrice>100.0</xxx:hasMinPrice>
<xxx:hasMaxPrice>200.0</xxx:hasMaxPrice>
</xxx:Price>
</xxx:hasPrice>
</xxx:Toy>
I think I can do it with SPARQL and loops. For each price I need to look
at the others and see if values are overlapping so I coudl get the set of
all overlapping elements. Something like:
FOR EACH (SELECT * WHERE {
?sub xxx:hasPrice ?obj .
?obj xxx:hasMinPrice ?min . ?obj xxx:hasMaxPrice ?max .
})
{
SELECT * WHERE {
?sub1 xxx:hasPrice ?obj1 .
?obj1 xxx:hasMinPrice ?min1 . ?obj1 xxx:hasMaxPrice ?max1 .
FILTER ((?sub = ?sub1?) && (obj <> ?obj1) &&
(?min1 >= ?min) && (?max1 <= ?max))
}
Is something like that possible? How can I accomplish this check? do I
have to do it programatically, perhaps in Java, with regular loops?
Thanks in advanced,
LG
P.D. My apologies if this is not the right mailing-list for this question,
if it is not, maybe you can suggest me one?