That's what I actually implemented. I was hoping there would be something sexier.
Thanks though Brian. On Tue, Nov 15, 2016 at 9:27 AM, Brian McBride <[email protected]> wrote: > Would adding a filter > > FILTER (?bf1 <= ?bf2) > > or similar do the trick? > > Brian > > > > > On 15/11/16 00:09, lookman sanni wrote: > >> Hi, >> >> I have the following RDF: >> >> <rdf:RDF >> xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >> xmlns:j.0="http://www.somelink.org/ofdf#"> >> <rdf:Description rdf:about=" >> http://www.somelink.org/ofdf#ticket/supplier-123/ticket-12345678"> >> <j.0:creditedToCust>ABCDEFG1_5#XYZ1</j.0:creditedToCust> >> <j.0:createdOnDate>ABCDEFG1_5#20151208</j.0:createdOnDate> >> <j.0:consumedOnDate>ABCDEFG1_5#20151111</j.0:consumedOnDate> >> <j.0:creditedFor>ABCDEFG1_5#124.50</j.0:creditedFor> >> <j.0:createdOnDate>ABCDEFG2#20151104</j.0:createdOnDate> >> <j.0:creditedToCust>ABCDEFG2#XYZ2</j.0:creditedToCust> >> <j.0:creditedFor>ABCDEFG2#124.50</j.0:creditedFor> >> <j.0:consumedOnDate>ABCDEFG2#20151111</j.0:consumedOnDate> >> </rdf:Description> >> </rdf:RDF> >> >> and the following SPARQL query: >> >> String qs1 = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> >> " + >> "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> " + >> "PREFIX ticket: <http://www.lookouster.org/ofdf#> " + >> "SELECT ?lticket ?type ?bf1 ?cust1 ?tAmount1 ?dtCreation1 ?dtTravel1 >> ?bf2 >> ?cust2 ?tAmount2 ?dtCreation2 ?dtTravel2 " + >> "WHERE { " + >> "?lticket ticket:creditedToCust ?_cust1 .\n" + >> "?lticket ticket:creditedToCust ?_cust2 .\n" + >> "?lticket ticket:creditedFor ?_tAmount1 .\n" + >> "?lticket ticket:creditedFor ?_tAmount2 .\n" + >> "?lticket ticket:createdOnDate ?_dtCreation1 .\n" + >> "?lticket ticket:createdOnDate ?_dtCreation2 .\n" + >> "?lticket ticket:consumedOnDate ?_dtTravel1 .\n" + >> "?lticket ticket:consumedOnDate ?_dtTravel2 .\n" + >> "FILTER ( strafter( ?_cust1, '#') != strafter( ?_cust2, '#') ) .\n" + >> "FILTER ( strbefore( ?_cust1, '#') = strbefore( ?_tAmount1, '#') ) >> .\n" + >> "FILTER ( strbefore( ?_cust1, '#') = strbefore( ?_dtCreation1, '#') ) >> .\n" + >> "FILTER ( strbefore( ?_cust1, '#') = strbefore( ?_dtTravel1, '#') ) >> .\n" >> + >> "FILTER ( strbefore( ?_cust2, '#') = strbefore( ?_tAmount2, '#') ) >> .\n" + >> "FILTER ( strbefore( ?_cust2, '#') = strbefore( ?_dtCreation2, '#') ) >> .\n" + >> "FILTER ( strbefore( ?_cust2, '#') = strbefore( ?_dtTravel2, '#') ) >> .\n" >> + >> "FILTER ( strafter( ?_tAmount1, '#' ) = strafter( ?_tAmount2, '#' ) ) >> .\n" + >> "bind(strafter( ?_cust1, '#' ) as ?cust1) .\n" + >> "bind(strafter( ?_cust2, '#' ) as ?cust2) .\n" + >> "bind(strbefore( ?_cust1, '#' ) as ?bf1) .\n" + >> "bind(strbefore( ?_cust2, '#' ) as ?bf2) .\n" + >> "bind(strafter( ?_tAmount1, '#' ) as ?tAmount1) .\n" + >> "bind(strafter( ?_tAmount2, '#' ) as ?tAmount2) .\n" + >> "bind(strafter( ?_dtCreation1, '#' ) as ?dtCreation1) .\n" + >> "bind(strafter( ?_dtCreation2, '#' ) as ?dtCreation2) .\n" + >> "bind(strafter( ?_dtTravel1, '#' ) as ?dtTravel1) .\n" + >> "bind(strafter( ?_dtTravel2, '#' ) as ?dtTravel2) .\n" + >> "values ?type { '2x Credit Notes' } .\n" + >> "} ORDER BY ?lticket ?dtCreation1 " ; >> >> The query ran well, but return the following 2 lines: >> >> lticket,type,bf1,cust1,tAmount1,dtCreation1,dtTravel1,bf2, >> cust2,tAmount2,dtCreation2,dtTravel2 >> http://www.somelink.org/ofdf#ticket/supplier-123/ticket-12345678,2x >> Credit >> Notes,ABCDEFG2,XYZ2,124.50,20151104,20151111,ABCDEFG1,XYZ1, >> 124.50,20151208,20151111 >> http://www.somelink.org/ofdf#ticket/supplier-123/ticket-12345678,2x >> Credit >> Notes,ABCDEFG1,XYZ1,124.50,20151208,20151111,ABCDEFG2,XYZ2, >> 124.50,20151104,20151111 >> >> >> How do I manage to only output one line, given that the two lines are just >> inverted ? >> >> Thank you for your help. >> >> > -- Best Regards Lookman SANNI
