# $Id: rdfr-theory.n3,v 1.10 2002/08/02 16:38:14 jderoo Exp $
# PxButton | commit | cvs commit -m "container stuff" rdfr-theory.n3 |

# axioms for RDFR entailment

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
@prefix mt: <http://www.w3.org/TR/rdf-mt/#> .
@prefix : <rdfr-theory#> .

rdf:Statement a rdfs:Class .

rdf:subject a rdf:Property .
rdf:subject rdfs:domain rdf:Statement .
rdf:subject rdfs:range rdfs:Resource .

rdf:predicate a rdf:Property .
rdf:predicate rdfs:domain rdf:Statement .
rdf:predicate rdfs:range rdf:Property .

rdf:object a rdf:Property .
rdf:object rdfs:domain rdf:Statement .
rdf:object rdfs:range rdfs:Resource .

rdfs:Container a rdfs:Class .
rdf:Bag rdfs:subClassOf rdfs:Container .
rdf:Seq rdfs:subClassOf rdfs:Container .
rdfs:ContainerMembershipProperty rdfs:subClassOf rdf:Property .

rdf:li a rdfs:ContainerMembershipProperty .
rdf:li rdfs:domain rdfs:Container .
rdf:li rdfs:range rdfs:Resource .

{ ?s ?p ?o } log:implies { [ a rdf:Statement; rdf:subject ?s; rdf:property ?p; rdf:object ?o ] } .

{ ?s1 a rdf:Statement; rdf:subject ?s; rdf:predicate ?p; rdf:object ?o; ?q ?v .
  ?s2 a rdf:Statement; rdf:subject ?s; rdf:predicate ?p; rdf:object ?o } log:implies { ?s2 ?q ?v } .

{ ?so log:includes { ?s ?p ?o } } log:implies
  { ?so rdf:li [ a rdf:Statement; rdf:subject ?s; rdf:predicate ?p; rdf:object ?o ] } .
