+ Tuple *data3[] = {
+ TUPLE( "a", "b", "c" ), // <a,b,?> <a,?,c> ***
+ TUPLE( "a", "c", "d" ), // <a,c,?> <a,?,d> ***
+ TUPLE( "a", "b", "e" ), // <a,b,?> <a,?,e> => -<a,b,c>
+ TUPLE( "b", "d", "d" ), // <b,d,?> <b,?,d>
+ TUPLE( "a", "d", "d" ), // <a,d,?> <a,?,d> => -<a,c,d>
+ TUPLE( "e", "c", "a" ), // <e,c,?> <e,?,a>
+ TUPLE( "f", "b", "d" ), // <f,b,?> <f,?,c>
+ 0
+ };
+ Tuple *query3[] = {
+ TUPLE( "a", 0, "d" ),
+ TUPLE( 0, 0, "d" ),
+ TUPLE( 0, "c", 0 ),
+ TUPLE( "f", "b", "d" ),
+ 0
+ };
+ Relation rel3 = RELATION( &stringitem, &stringitem, &stringitem );
+ Relation_add_constraint( &rel3, 1, 1, 0 ); // AxB -> C
+ Relation_add_constraint( &rel3, 1, 0, 1 ); // AxC -> B
+
+ test_Relation_add( &rel3, data3 );
+ query_report( &rel3, 0 );
+ query_report_all( &rel3, query3 );
+ test_Relation_delete( &rel3, query3 );