@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

@prefix math: <http://www.w3.org/2000/10/swap/math#> .
@prefix type: <http://dig.csail.mit.edu/2009/IARPA-PIR/generic#> .
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
@prefix list: <http://www.w3.org/2000/10/swap/list#> .
@prefix air: <http://dig.csail.mit.edu/TAMI/2007/amord/air#> .
@prefix db: <http//dig.csail.mit.edu/db#> .
@prefix s: <http://dig.csail.mit.edu/2009/IARPA-PIR/sparql#> .
@prefix : <http://dig.csail.mit.edu/2009/IARPA-PIR/Yotam_Work/SC_Retrieval_Policy_New#>.

@forAll :Q, :V, :C, :Y, :Z, :G.

:SC_RP_New a air:Policy;
	air:label "SuperClass Retrieval Policy New";
	air:rule :SC_Retrieval_Rule1.

:SC_Retrieval_Rule1 a air:BeliefRule;
	air:label "SuperClass Retrieval Rule 1";
	air:pattern {
		:Q a s:Query;
		s:VarList :V;
		s:Clause :C.
	};
	air:description(:Q " is a query.");
	air:rule :SC_Retrieval_Rule2.

:SC_Retrieval_Rule2 a air:BeliefRule;
	air:label "SuperClass Retrieval Rule 2";
	air:pattern {
		:C s:TriplePattern :G.
		:G log:includes {[] :Y db:A}.
		:Y list:in (type:B type:C type:D).
		:V s:variable db:A.
		#:C s:TriplePattern [log:notIncludes {db:A [] []}].
	};
	air:description (:Q " retrieves " db:A ", which is illegal.");
	air:assert {:Q air:non-compliant-with :SC_RP_New};
	air:alt [ air:rule :SC_Retrieval_Rule3].

:SC_Retrieval_Rule3 a air:BeliefRule;
	air:label "SuperClass Retrieval Rule 3";
	air:pattern{
		:C s:TriplePattern :G.
		:G log:includes {[] :Y :Z}.
		:Y list:in (type:B type:C type:D).
		:Z db:in db:A.
		:V s:variable :Z.
		#:C s:TriplePattern [log:notIncludes {:Z [] []}].
	};
	air:description( :Q " retrieves " :Z ", and since " :Z " is in " db:A ", this is illegal.");
	air:assert {:Q air:non-compliant-with :SC_RP_New};
	air:alt [air:assert{:Q air:compliant-with :SC_RP_New}].