http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
----------------------------------------------------------------------
diff --git 
a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
new file mode 100644
index 0000000..f506308
--- /dev/null
+++ 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
@@ -0,0 +1,1566 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import java.io.InputStream ;
+import java.io.OutputStream ;
+import java.io.Reader ;
+import java.io.Writer ;
+import java.util.Calendar ;
+import java.util.Iterator ;
+import java.util.List ;
+
+import org.apache.jena.datatypes.RDFDatatype ;
+import org.apache.jena.graph.Node ;
+import org.apache.jena.graph.Triple ;
+import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.graph.SecuredGraph;
+import org.apache.jena.permissions.graph.SecuredPrefixMapping;
+import org.apache.jena.permissions.model.impl.SecuredNodeIterator;
+import org.apache.jena.permissions.model.impl.SecuredRSIterator;
+import org.apache.jena.permissions.model.impl.SecuredResIterator;
+import org.apache.jena.permissions.model.impl.SecuredStatementIterator;
+import org.apache.jena.rdf.model.* ;
+import org.apache.jena.shared.PropertyNotFoundException ;
+
+/**
+ * The interface for secured Model instances.
+ * 
+ * Use the SecuredModel.Factory to create instances
+ */
+public interface SecuredModel extends Model, SecuredPrefixMapping
+{
+
+       @Override
+       public SecuredModel abort();
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create for each statement as a triple.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel add( final List<Statement> statements )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create for each statement in the securedModel as a 
triple.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel add( final Model m ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create the triple SecTriple(s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel add( final Resource s, final Property p, final 
RDFNode o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create the triple SecTriple(s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel add( final Resource s, final Property p, final 
String o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create the triple SecTriple(s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel add( final Resource s, final Property p,
+                       final String o, final boolean wellFormed )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create the triple SecTriple(s,p,literal(lex,datatype))
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel add( final Resource s, final Property p,
+                       final String lex, final RDFDatatype datatype )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create the triple SecTriple(s,p,literal(o,l,false))
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel add( final Resource s, final Property p,
+                       final String o, final String l ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create the statement as a triple
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel add( final Statement s ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create all the statements as triples.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel add( final Statement[] statements )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create all the statements as triples.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel add( final StmtIterator iter )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create triple(s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel addLiteral( final Resource s, final Property p,
+                       final boolean o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create triple(s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel addLiteral( final Resource s, final Property p,
+                       final char o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create triple(s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel addLiteral( final Resource s, final Property p,
+                       final double o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create triple(s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel addLiteral( final Resource s, final Property p,
+                       final float o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create triple(s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel addLiteral( final Resource s, final Property p,
+                       final int o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create triple(s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel addLiteral( final Resource s, final Property p,
+                       final Literal o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create triple(s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel addLiteral( final Resource s, final Property p,
+                       final long o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create triple(s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       @Deprecated
+       public SecuredModel addLiteral( final Resource s, final Property p,
+                       final Object o ) throws AccessDeniedException;
+
+       @Override
+       public SecuredRDFNode asRDFNode( final Node n );
+
+       @Override
+       /**
+        * @sec.graph Read if t does exist
+        * @sec.graph Update it t does not exist
+        * @sec.triple Read if t does exist
+        * @sec.triple Create if t does exist
+        * @throws AccessDeniedException
+        */
+       public SecuredStatement asStatement( final Triple t )
+                       throws AccessDeniedException;
+
+       @Override
+       public SecuredModel begin();
+
+       @Override
+       public SecuredModel commit();
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, SecNode.ANY )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean contains( final Resource s, final Property p )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean contains( final Resource s, final Property p, final 
RDFNode o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean contains( final Resource s, final Property p, final 
String o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, literal(o,l,null) )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean contains( final Resource s, final Property p,
+                       final String o, final String l ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read s as a triple with null replaced by SecNode.ANY
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean contains( final Statement s ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read every statement in securedModel.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsAll( final Model model )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read every statement
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsAll( final StmtIterator iter )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read any statement in securedModel to be included in 
check, if
+        *            no
+        *            statement in securedModel can be read will return false;
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsAny( final Model model )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read any statement in iter to be included in check, if no
+        *            statement in iter can be read will return false;
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsAny( final StmtIterator iter )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, literal(o) )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsLiteral( final Resource s, final Property p,
+                       final boolean o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, literal(o) )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsLiteral( final Resource s, final Property p,
+                       final char o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, literal(o) )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsLiteral( final Resource s, final Property p,
+                       final double o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, literal(o) )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsLiteral( final Resource s, final Property p,
+                       final float o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, literal(o) )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsLiteral( final Resource s, final Property p,
+                       final int o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, literal(o) )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsLiteral( final Resource s, final Property p,
+                       final long o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, typedLiteral(o) )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsLiteral( final Resource s, final Property p,
+                       final Object o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( s, p, resource) where 
SecTriple(s,p,resource) is in the
+        *            securedModel.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean containsResource( final RDFNode r )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( SecNode.ANY, RDF.type, Rdf.Alt)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredAlt createAlt() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( uri, RDF.type, Rdf.Alt)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredAlt createAlt( final String uri )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( SecNode.ANY, RDF.type, Rdf.Bag)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredBag createBag() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( uri, RDF.type, Rdf.Bag)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredBag createBag( final String uri )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredRDFList createList() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( RDF.nil, SecNode.IGNORE, 
SecNode.IGNORE)
+        * @sec.triple Create for each member SecTriple(SecNode.ANY,
+        *            RDF.first.asNode(),
+        *            member.asNode())
+        * @sec.triple Create SecTriple(SecNode.ANY, RDF.rest.asNode(), 
SecNode.ANY)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredRDFList createList( final Iterator<? extends RDFNode> 
members )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( RDF.nil, SecNode.IGNORE, 
SecNode.IGNORE)
+        * @sec.triple Create for each member SecTriple(SecNode.ANY,
+        *            RDF.first.asNode(),
+        *            member.asNode())
+        * @sec.triple Create SecTriple(SecNode.ANY, RDF.rest.asNode(), 
SecNode.ANY)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredRDFList createList( final RDFNode[] members )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s,p,o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createLiteralStatement( final Resource s,
+                       final Property p, final boolean o ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s,p,o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createLiteralStatement( final Resource s,
+                       final Property p, final char o ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s,p,o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createLiteralStatement( final Resource s,
+                       final Property p, final double o ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s,p,o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createLiteralStatement( final Resource s,
+                       final Property p, final float o ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s,p,o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createLiteralStatement( final Resource s,
+                       final Property p, final int o ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s,p,o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createLiteralStatement( final Resource s,
+                       final Property p, final long o ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s,p,o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createLiteralStatement( final Resource s,
+                       final Property p, final Object o ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s,p,o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Property createProperty( final String uri )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s,p,o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Property createProperty( final String nameSpace,
+                       final String localName ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Read s as a triple
+        * @sec.triple create SecTriple( SecNode.Future, RDF.subject, 
t.getSubject()
+        *            )
+        * @sec.triple create SecTriple( SecNode.Future, RDF.subject,
+        *            t.getPredicate() )
+        * @sec.triple create SecTriple( SecNode.Future, RDF.subject, 
t.getObject() )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public ReifiedStatement createReifiedStatement( final Statement s )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Read s as a triple
+        * @sec.triple create SecTriple( uri, RDF.subject, t.getSubject() )
+        * @sec.triple create SecTriple( uri, RDF.subject, t.getPredicate() )
+        * @sec.triple create SecTriple( uri, RDF.subject, t.getObject() )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public ReifiedStatement createReifiedStatement( final String uri,
+                       final Statement s ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Read s as a triple
+        * @sec.triple create SecTriple( SecNode.FUTURE, SecNode.IGNORE,
+        *            SecNode.IGNORE )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResource createResource() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Read s as a triple
+        * @sec.triple create SecTriple( Anonymous(id), SecNode.IGNORE,
+        *            SecNode.IGNORE )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResource createResource( final AnonId id )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.type, type )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResource createResource( final Resource type )
+                       throws AccessDeniedException;
+
+       @Override
+       @Deprecated
+       public SecuredResource createResource( final ResourceF f );
+
+       @Override
+       public SecuredResource createResource( final String uri );
+
+       /**
+        * @sec.graph Update if uri exists
+        * @sec.graph Create if uri does not exist
+        * @sec.triple Read if SecTriple( uri, RDF.type, type ) exists
+        * @sec.triple Create if SecTriple( uri, RDF.type, type ) does not exist
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResource createResource( final String uri, final Resource 
type )
+                       throws AccessDeniedException;
+
+       @Override
+       @Deprecated
+       public SecuredResource createResource( final String uri, final 
ResourceF f );
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.type, RDF.Alt )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredSeq createSeq() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( uri, RDF.type, RDF.Alt )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredSeq createSeq( final String uri )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createStatement( final Resource s,
+                       final Property p, final RDFNode o ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createStatement( final Resource s,
+                       final Property p, final String o ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createStatement( final Resource s,
+                       final Property p, final String o, final boolean 
wellFormed )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s, p, literal(o,l,false ))
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createStatement( final Resource s,
+                       final Property p, final String o, final String l )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( s, p, literal(o,l,wellFormed )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement createStatement( final Resource s,
+                       final Property p, final String o, final String l,
+                       final boolean wellFormed ) throws AccessDeniedException;
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final boolean v );
+
+       @Override
+       public Literal createTypedLiteral( final Calendar d );
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final char v );
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final double v );
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final float v );
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final int v );
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final long v );
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final Object value );
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final Object value,
+                       final RDFDatatype dtype );
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final Object value,
+                       final String typeURI );
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final String v );
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final String lex,
+                       final RDFDatatype dtype );
+
+       @Override
+       public SecuredLiteral createTypedLiteral( final String lex,
+                       final String typeURI );
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read for every triple contributed to the difference.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Model difference( final Model model ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read if read lock is requested
+        * @sec.graph Update if write lock is requested
+        * @throws AccessDeniedException
+        */
+       @Override
+       public void enterCriticalSection( final boolean readLockRequested )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public String expandPrefix( final String prefixed )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( resource, RDF.type, RDF.alt )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredAlt getAlt( final Resource r ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( uri, RDF.type, RDF.alt )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredAlt getAlt( final String uri ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read if statement exists
+        * @sec.graph Update if statement does not exist
+        * @sec.triple Read s as a triple
+        * @sec.triple Read SecTriple( result, RDF.subject, s.getSubject() ) if
+        *            reification existed
+        * @sec.triple Read SecTriple( result, RDF.predicate, s.getPredicate() 
) if
+        *            reification existed
+        * @sec.triple Read SecTriple( result, RDF.object, s.getObject() ) if
+        *            reification existed
+        * @sec.triple Create SecTriple( result, RDF.subject, s.getSubject() ) 
if
+        *            reification did not exist.
+        * @sec.triple Create SecTriple( result, RDF.redicate, s.getPredicate() 
) if
+        *            reification did not exist
+        * @sec.triple Create SecTriple( result, RDF.object, s.getObject() ) if
+        *            reification did not exist
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResource getAnyReifiedStatement( final Statement s )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( resource, RDF.type, RDF.Bag )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredBag getBag( final Resource r ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( uri, RDF.type, RDF.Bag )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredBag getBag( final String uri ) throws 
AccessDeniedException;
+
+       @Override
+       public SecuredGraph getGraph();
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read on the returned statement.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement getProperty( final Resource s, final Property p 
)
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Property getProperty( final String uri )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Property getProperty( final String nameSpace, final String 
localName )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read if the node exists
+        * @sec.graph Update if the node does not exist
+        * @throws AccessDeniedException
+        */
+       @Override
+       public RDFNode getRDFNode( final Node n ) throws AccessDeniedException;
+
+       /**
+        * .
+        * If the PropertyNotFoundException was thrown by the enclosed 
securedModel
+        * and the
+        * user can not read SecTriple(s, p, SecNode.ANY) AccessDeniedExcepiton 
is
+        * thrown,
+        * otherwise the PropertyNotFoundException will be thrown.
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on the returned statement
+        * @sec.triple Read on SecTriple(s, p, SecNode.ANY) if
+        *            PropertyNotFoundException
+        *            was thrown
+        * @throws AccessDeniedException
+        * @throws PropertyNotFoundException
+        */
+       @Override
+       public SecuredStatement getRequiredProperty( final Resource s,
+                       final Property p ) throws PropertyNotFoundException,
+                       AccessDeniedException;
+
+       @Override
+       public SecuredResource getResource( final String uri );
+
+       @Override
+       @Deprecated
+       public SecuredResource getResource( final String uri, final ResourceF f 
);
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on SecTriple(resource, RDF.type, RDF.Seq)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredSeq getSeq( final Resource r ) throws 
AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on SecTriple(uri, RDF.type, RDF.Seq)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredSeq getSeq( final String uri ) throws 
AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all triples contributed to the new securedModel.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Model intersection( final Model model ) throws 
AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean isEmpty() throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read all compared triples. Triples that can not be read 
will
+        *            not be compared.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean isIsomorphicWith( final Model g )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on s as triple
+        * @sec.triple Read on at least one set reified statements.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean isReified( final Statement s ) throws 
AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all triples returned.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatementIterator listLiteralStatements(
+                       final Resource subject, final Property predicate,
+                       final boolean object ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all triples returned.
+        * @throws AccessDeniedException
+        */
+
+       @Override
+       public SecuredStatementIterator listLiteralStatements(
+                       final Resource subject, final Property predicate, final 
char object )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all triples returned.
+        * @throws AccessDeniedException
+        */
+
+       @Override
+       public SecuredStatementIterator listLiteralStatements(
+                       final Resource subject, final Property predicate,
+                       final double object ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all triples returned.
+        * @throws AccessDeniedException
+        */
+
+       @Override
+       public SecuredStatementIterator listLiteralStatements(
+                       final Resource subject, final Property predicate, final 
float object )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all triples returned.
+        * @throws AccessDeniedException
+        */
+
+       @Override
+       public SecuredStatementIterator listLiteralStatements(
+                       final Resource subject, final Property predicate, final 
long object )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public NsIterator listNameSpaces() throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on each RDFNode returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredNodeIterator<RDFNode> listObjects() throws 
AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on each RDFNode returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredNodeIterator<RDFNode> listObjectsOfProperty( final 
Property p )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on each RDFNode returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredNodeIterator<RDFNode> listObjectsOfProperty( final 
Resource s,
+                       final Property p ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on each Reified statement returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredRSIterator listReifiedStatements()
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on each Reified statement returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredRSIterator listReifiedStatements( final Statement st )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned;
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResIterator listResourcesWithProperty( final Property p )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned;
+        * @throws AccessDeniedException
+        */
+
+       @Override
+       public SecuredResIterator listResourcesWithProperty( final Property p,
+                       final boolean o ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned;
+        * @throws AccessDeniedException
+        */
+
+       @Override
+       public SecuredResIterator listResourcesWithProperty( final Property p,
+                       final char o ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned;
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResIterator listResourcesWithProperty( final Property p,
+                       final double o ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned;
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResIterator listResourcesWithProperty( final Property p,
+                       final float o ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned;
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResIterator listResourcesWithProperty( final Property p,
+                       final long o ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned;
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResIterator listResourcesWithProperty( final Property p,
+                       final Object o ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResIterator listResourcesWithProperty( final Property p,
+                       final RDFNode o ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all triples returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatementIterator listStatements()
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all triples returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatementIterator listStatements( final Resource s,
+                       final Property p, final RDFNode o ) throws 
AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all triples returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatementIterator listStatements( final Resource subject,
+                       final Property predicate, final String object )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all triples returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatementIterator listStatements( final Resource subject,
+                       final Property predicate, final String object, final 
String lang )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all triples returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatementIterator listStatements( final Selector s )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResIterator listSubjects() throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResIterator listSubjectsWithProperty( final Property p )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResIterator listSubjectsWithProperty( final Property p,
+                       final RDFNode o ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResIterator listSubjectsWithProperty( final Property p,
+                       final String o ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read at least one SecTriple( resource, p, o ) for each
+        *            resource
+        *            returned
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResIterator listSubjectsWithProperty( final Property p,
+                       final String o, final String l ) throws 
AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredPrefixMapping lock() throws AccessDeniedException;
+
+       @Override
+       public SecuredModel notifyEvent( final Object e );
+
+       /**
+        * 
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public String qnameFor( final String uri ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel query( final Selector s ) throws 
AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel read( final InputStream in, final String base )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel read( final InputStream in, final String base,
+                       final String lang ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel read( final Reader reader, final String base )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel read( final Reader reader, final String base,
+                       final String lang ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel read( final String url ) throws 
AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel read( final String url, final String lang )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel read( final String url, final String base,
+                       final String lang ) throws AccessDeniedException;
+
+       /**
+        * 
+        * Listener will be filtered to only report events that the user can 
see.
+        * 
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel register( final ModelChangedListener listener )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @sec.triple Delete on every statement in statments.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel remove( final List<Statement> statements )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @sec.triple Delete on every statement in baseModel.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel remove( final Model m ) throws 
AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @sec.triple Delete on SecTriple( s, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel remove( final Resource s, final Property p, final 
RDFNode o ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @sec.triple Delete on statment.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel remove( final Statement s )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @sec.triple Delete on every statement in statments.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel remove( final Statement[] statements )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @sec.triple Delete on every statement in iter.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel remove( final StmtIterator iter )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @sec.triple Delete on every statement in the securedModel
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel removeAll() throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @sec.triple Delete on every statement identified by SecTriple( s,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel removeAll( final Resource s, final Property p,
+                       final RDFNode r ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @sec.triple Delete on every reification statement for each statement 
in
+        *            statments.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public void removeAllReifications( final Statement s )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredPrefixMapping removeNsPrefix( final String prefix )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @sec.triple Delete on every reification statement fore each 
statement in
+        *            rs.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public void removeReification( final ReifiedStatement rs )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public String setReaderClassName( final String lang, final String 
className )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public String setWriterClassName( final String lang, final String 
className )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public String shortForm( final String uri ) throws 
AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public long size() throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all statements contributed to the union.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Model union( final Model model ) throws AccessDeniedException;
+
+       @Override
+       public SecuredModel unregister( final ModelChangedListener listener );
+
+       @Override
+       public SecuredResource wrapAsResource( final Node n );
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all statements that are written.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel write( final OutputStream out )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all statements that are written.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel write( final OutputStream out, final String lang )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all statements that are written.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel write( final OutputStream out, final String lang,
+                       final String base ) throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all statements that are written.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel write( final Writer writer )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all statements that are written.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel write( final Writer writer, final String lang )
+                       throws AccessDeniedException;
+
+       /**
+        * 
+        * @sec.graph Read
+        * @sec.triple Read on all statements that are written.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredModel write( final Writer writer, final String lang,
+                       final String base ) throws AccessDeniedException;
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredProperty.java
----------------------------------------------------------------------
diff --git 
a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredProperty.java
 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredProperty.java
new file mode 100644
index 0000000..9a5add6
--- /dev/null
+++ 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredProperty.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.rdf.model.Property ;
+
+/**
+ * The interface for secured Property instances.
+ * 
+ * Use the SecuredProperty.Factory to create instances
+ */
+public interface SecuredProperty extends SecuredResource, Property
+{
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public int getOrdinal() throws AccessDeniedException;
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFList.java
----------------------------------------------------------------------
diff --git 
a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFList.java
 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFList.java
new file mode 100644
index 0000000..b629333
--- /dev/null
+++ 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFList.java
@@ -0,0 +1,414 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.SecurityEvaluator.Action;
+import org.apache.jena.rdf.model.* ;
+import org.apache.jena.util.iterator.ExtendedIterator ;
+
+public interface SecuredRDFList extends RDFList, SecuredResource
+{
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple(SecNode.FUTURE, listFirst(), value)
+        * @sec.triple Create SecTriple(SecNode.FUTURE, listFirst(), listNil())
+        * @throws AccessDeniedException
+        */
+       @Override
+       public void add( final RDFNode value ) throws AccessDeniedException;
+
+       /**
+        * Resulting list will contain the readable nodes from this list
+        * concatenated with nodes
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, value )
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.rest, this )
+        */
+       @Override
+       public RDFList append( final Iterator<? extends RDFNode> nodes )
+                       throws AccessDeniedException;
+
+       /**
+        * Resulting list will contain the readable nodes from this list
+        * concatenated
+        * with the list argument
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, value )
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.rest, this )
+        */
+       @Override
+       public RDFList append( final RDFList list ) throws 
AccessDeniedException;
+
+       /**
+        * Uses the security settings for the application of the function calls.
+        * Thus if the function reads data the Read must be allowed, etc.
+        * 
+        * @sec.graph Read
+        * @sec.triple Read (to be included in the calculation)
+        * @sec.triple other permissions required by the function.
+        * @throws AccessDeniedException
+        *             graph Read or other permissions are not met
+        */
+       @Override
+       public void apply( final ApplyFn fn ) throws AccessDeniedException;
+
+       /**
+        * This method is intended to provide the capabilities to apply 
functions
+        * that
+        * need to do more than read the graph.
+        * 
+        * If the user does not have constraints access to the item in the list 
the
+        * item
+        * is not included in the function.
+        * 
+        * @param constraints
+        *            The permissions the user must have on the items in the 
list.
+        * @param fn
+        *            The function to apply.
+        * 
+        * @sec.graph Read
+        * @sec.triple Read and constraints
+        * @throws AccessDeniedException
+        */
+       public void apply( Set<Action> constraints, final ApplyFn fn )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.triple Read for triples containing the returned RDFNodes.
+        * @return List<SecuredRDFNode>
+        */
+       @Override
+       public List<RDFNode> asJavaList();
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, node ) for 
each
+        *            node in
+        *            nodes.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public void concatenate( final Iterator<? extends RDFNode> nodes )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, node ) for 
each
+        *            node in
+        *            list.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public void concatenate( final RDFList list ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, value )
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.rest, this )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredRDFList cons( final RDFNode value )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read for triple containing value.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean contains( final RDFNode value ) throws 
AccessDeniedException;
+
+       /**
+        * Creates a copy of this list comprising the readable elements of this
+        * list.
+        * @sec.graph Read to read the items to copy
+        * @sec.triple Read on each triple to be read.
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, value )
+        * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.rest, this )
+        */
+       @Override
+       public SecuredRDFList copy();
+
+       /**
+        * Answer the node that is the i'th element of the list, assuming that 
the
+        * head is item zero. If the list is too
+        * short to have an i'th element, throws a ListIndexException.
+        * 
+        * List may be shortened by security constraints.
+        * 
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public SecuredRDFNode get( final int i ) throws AccessDeniedException,
+                       EmptyListException, ListIndexException, 
InvalidListException;
+
+       /**
+        * The value that is at the head of the list.
+        * 
+        * head may be shifted by security constraints.
+        * 
+        * @sec.graph Read
+        * @sec.triple Read for triple containing value.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        */
+       @Override
+       public RDFNode getHead() throws AccessDeniedException, 
EmptyListException;
+
+       /**
+        * The value that is at the tail of the list.
+        * 
+        * tail may be shifted by security constraints.
+        * 
+        * @sec.graph Read
+        * @sec.triple Read for triple containing value.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public SecuredRDFList getTail() throws AccessDeniedException,
+                       EmptyListException, ListIndexException, 
InvalidListException;
+
+       /**
+        * @sec.graph Read
+        */
+       @Override
+       public String getValidityErrorMessage() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read for triple containing value.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public int indexOf( final RDFNode value ) throws AccessDeniedException,
+                       EmptyListException, ListIndexException, 
InvalidListException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read for triple containing value.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public int indexOf( final RDFNode value, final int start )
+                       throws AccessDeniedException, EmptyListException,
+                       ListIndexException, InvalidListException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean isEmpty() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean isValid() throws AccessDeniedException, 
EmptyListException,
+                       ListIndexException, InvalidListException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read for triple containing value to be included in the 
result.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public ExtendedIterator<RDFNode> iterator() throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read + requiredPerms for triple containing value to be
+        *            included in the result.
+        * @throws AccessDeniedException
+        */
+       public ExtendedIterator<RDFNode> iterator( Set<Action> requiredPerms )
+                       throws AccessDeniedException, EmptyListException,
+                       ListIndexException, InvalidListException;
+
+       /**
+        * Only readable triples will be passed to the function. If the function
+        * does
+        * any action other than read those permissions must also be granted.
+        * 
+        * @sec.graph Read
+        * @sec.triple Read for triple containing value.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public Object reduce( final ReduceFn fn, final Object initial )
+                       throws AccessDeniedException, EmptyListException,
+                       ListIndexException, InvalidListException;
+
+       /**
+        * Only readable triples will be passed to the function. In addition,
+        * only triples that pass the requiredActions tests will be passed to 
the
+        * function.
+        * 
+        * @sec.graph Read
+        * @sec.triple Read for triple containing value.
+        * @param requiredActions
+        *            The set of permission (in addition to Read) that the user 
must
+        *            have
+        * @param fn
+        *            The reduction function
+        * @param initial
+        *            The initial state for the ruduce value.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       public Object reduce( Set<Action> requiredActions, final ReduceFn fn,
+                       final Object initial ) throws AccessDeniedException,
+                       EmptyListException, ListIndexException, 
InvalidListException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Delete for triple containing value.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public RDFList remove( final RDFNode val ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Delete for all triples.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       @Deprecated
+       public void removeAll() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Delete for the head triple.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public RDFList removeHead() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Delete for triple containing value.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public void removeList() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update for triplie i, and value.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public SecuredRDFNode replace( final int i, final RDFNode value )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read for triples included in the comparison.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public boolean sameListAs( final RDFList list )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create for triple containing value.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public SecuredRDFNode setHead( final RDFNode value )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public void setStrict( final boolean strict ) throws 
AccessDeniedException;
+
+       /**
+        * Size may be modified by security constraionts.
+        * 
+        * @sec.graph Read
+        * @sec.triple Read for triples counted in the result.
+        * @throws AccessDeniedException
+        * @throws EmptyListException
+        * @throws ListIndexException
+        * @throws InvalidListException
+        */
+       @Override
+       public int size() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create for triple containing value.
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredRDFList with( final RDFNode value )
+                       throws AccessDeniedException;
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFNode.java
----------------------------------------------------------------------
diff --git 
a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFNode.java
 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFNode.java
new file mode 100644
index 0000000..fee3a91
--- /dev/null
+++ 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFNode.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import org.apache.jena.graph.Node ;
+import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.impl.SecuredItem;
+import org.apache.jena.rdf.model.Model ;
+import org.apache.jena.rdf.model.RDFNode ;
+
+/**
+ * The interface for secured RDFNode instances.
+ * 
+ * Use one the SecuredRDFNode derived class Factories to create instances
+ */
+public interface SecuredRDFNode extends RDFNode, SecuredItem
+{
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Node asNode() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public <T extends RDFNode> boolean canAs( final Class<T> view )
+                       throws AccessDeniedException;
+
+       @Override
+       public SecuredModel getModel();
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public RDFNode inModel( final Model m ) throws AccessDeniedException;
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredReifiedStatement.java
----------------------------------------------------------------------
diff --git 
a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredReifiedStatement.java
 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredReifiedStatement.java
new file mode 100644
index 0000000..471f718
--- /dev/null
+++ 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredReifiedStatement.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.rdf.model.ReifiedStatement ;
+
+/**
+ * The interface for secured ReifiedStatement instances.
+ * 
+ * Use the SecuredReifiedStatement.Factory to create instances
+ */
+public interface SecuredReifiedStatement extends ReifiedStatement,
+               SecuredResource
+{
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement getStatement();
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredResource.java
----------------------------------------------------------------------
diff --git 
a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredResource.java
 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredResource.java
new file mode 100644
index 0000000..45576e7
--- /dev/null
+++ 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredResource.java
@@ -0,0 +1,333 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import org.apache.jena.datatypes.RDFDatatype ;
+import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.model.impl.SecuredStatementIterator;
+import org.apache.jena.rdf.model.* ;
+
+/**
+ * The interface for secured Resource instances.
+ * 
+ * Use the SecuredResource.Factory to create instances
+ */
+public interface SecuredResource extends Resource, SecuredRDFNode
+{
+
+       @Override
+       public SecuredResource abort();
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create (this, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResource addLiteral( final Property p, final boolean o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create (this, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Resource addLiteral( final Property p, final char o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create (this, value, d )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Resource addLiteral( final Property value, final double d )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create (this, value, d )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Resource addLiteral( final Property value, final float d )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create (this, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Resource addLiteral( final Property p, final Literal o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create (this, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Resource addLiteral( final Property p, final long o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create (this, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Resource addLiteral( final Property p, final Object o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create (this, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Resource addProperty( final Property p, final RDFNode o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create (this, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Resource addProperty( final Property p, final String o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create (this, p, literal(lexicalForm,datatype) )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Resource addProperty( final Property p, final String lexicalForm,
+                       final RDFDatatype datatype ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create (this, p, o )
+        * @throws AccessDeniedException
+        */
+       @Override
+       public Resource addProperty( final Property p, final String o,
+                       final String l ) throws AccessDeniedException;
+
+       @Override
+       public SecuredResource asResource();
+
+       @Override
+       public SecuredResource begin();
+
+       @Override
+       public SecuredResource commit();
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean equals( final Object o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public AnonId getId() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public String getLocalName() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public String getNameSpace() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement getProperty( final Property p )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResource getPropertyResourceValue( final Property p )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement getRequiredProperty( final Property p )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public String getURI() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple(this,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasLiteral( final Property p, final boolean o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple(this,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasLiteral( final Property p, final char o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple(this,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasLiteral( final Property p, final double o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple(this,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasLiteral( final Property p, final float o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple(this,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasLiteral( final Property p, final long o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple(this,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasLiteral( final Property p, final Object o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple(this,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasProperty( final Property p ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple(this,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasProperty( final Property p, final RDFNode o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple(this,p,o)
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasProperty( final Property p, final String o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple(this,p,literal(o,l))
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasProperty( final Property p, final String o, final 
String l )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasURI( final String uri ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read on returned Statements
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatementIterator listProperties()
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read on returned Statements
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatementIterator listProperties( final Property p )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Delete on associated Statements
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResource removeAll( final Property p )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Delete on all Statements
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredResource removeProperties() throws AccessDeniedException;
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredSeq.java
----------------------------------------------------------------------
diff --git 
a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredSeq.java
 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredSeq.java
new file mode 100644
index 0000000..7ce88b4
--- /dev/null
+++ 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredSeq.java
@@ -0,0 +1,385 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.rdf.model.RDFNode ;
+import org.apache.jena.rdf.model.ResourceF ;
+import org.apache.jena.rdf.model.Seq ;
+
+/**
+ * The interface for secured Seq instances.
+ * 
+ * Use the SecuredSeq.Factory to create instances
+ * 
+ * Sequence may have breaks in the order.
+ * http://www.w3.org/TR/2004/REC-rdf-mt-20040210/#Containers
+ * 
+ */
+public interface SecuredSeq extends Seq, SecuredContainer
+{
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredSeq add( final int index, final boolean o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredSeq add( final int index, final char o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredSeq add( final int index, final double o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredSeq add( final int index, final float o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredSeq add( final int index, final long o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredSeq add( final int index, final Object o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredSeq add( final int index, final RDFNode o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredSeq add( final int index, final String o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Create SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredSeq add( final int index, final String o, final String l )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredAlt getAlt( final int index ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredBag getBag( final int index ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public boolean getBoolean( final int index ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public byte getByte( final int index ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public char getChar( final int index ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public double getDouble( final int index ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public float getFloat( final int index ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public int getInt( final int index ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public String getLanguage( final int index ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredLiteral getLiteral( final int index )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public long getLong( final int index ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredRDFNode getObject( final int index )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredResource getResource( final int index )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       @Deprecated
+       public SecuredResource getResource( final int index, final ResourceF f )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public SecuredSeq getSeq( final int index ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public short getShort( final int index ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public String getString( final int index ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public int indexOf( final boolean o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public int indexOf( final char o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public int indexOf( final double o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public int indexOf( final float o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public int indexOf( final long o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public int indexOf( final Object o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public int indexOf( final RDFNode o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public int indexOf( final String o ) throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read SecTriple( this, RDF.li(1), o )
+        */
+       @Override
+       public int indexOf( final String o, final String l )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Delete SecTriple( this, RDF.li(1), o )
+        * @sec.triple Update Triples after index
+        */
+       @Override
+       public SecuredSeq remove( final int index ) throws 
AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( 
this,
+        *            RDF.li(index), o )
+        */
+       @Override
+       public SecuredSeq set( final int index, final boolean o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( 
this,
+        *            RDF.li(index), o )
+        */
+       @Override
+       public SecuredSeq set( final int index, final char o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( 
this,
+        *            RDF.li(index), o )
+        */
+       @Override
+       public SecuredSeq set( final int index, final double o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( 
this,
+        *            RDF.li(index), o )
+        */
+       @Override
+       public SecuredSeq set( final int index, final float o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( 
this,
+        *            RDF.li(index), o )
+        */
+       @Override
+       public SecuredSeq set( final int index, final long o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( 
this,
+        *            RDF.li(index), o )
+        */
+       @Override
+       public SecuredSeq set( final int index, final Object o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( 
this,
+        *            RDF.li(index), o )
+        */
+       @Override
+       public SecuredSeq set( final int index, final RDFNode o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( 
this,
+        *            RDF.li(index), o )
+        */
+       @Override
+       public SecuredSeq set( final int index, final String o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( 
this,
+        *            RDF.li(index), o )
+        */
+       @Override
+       public SecuredSeq set( final int index, final String o, final String l )
+                       throws AccessDeniedException;
+
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredStatement.java
----------------------------------------------------------------------
diff --git 
a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredStatement.java
 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredStatement.java
new file mode 100644
index 0000000..c10a9a2
--- /dev/null
+++ 
b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredStatement.java
@@ -0,0 +1,295 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions.model;
+
+import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.impl.SecuredItem;
+import org.apache.jena.rdf.model.* ;
+
+/**
+ * The interface for secured Statement instances.
+ * 
+ * Use the SecuredStatement.Factory to create instances
+ */
+public interface SecuredStatement extends Statement, SecuredItem
+{
+       /**
+        * @sec.graph Update
+        * @sec.triple Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement changeLiteralObject( boolean o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement changeLiteralObject( char o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement changeLiteralObject( double o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement changeLiteralObject( float o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement changeLiteralObject( int o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement changeLiteralObject( long o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement changeObject( RDFNode o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement changeObject( String o )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement changeObject( String o, boolean wellFormed )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement changeObject( String o, String l )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Update
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement changeObject( String o, String l, boolean 
wellFormed )
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read, Update
+        * @sec.triple Create
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredReifiedStatement createReifiedStatement()
+                       throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read, Update
+        * @sec.triple Create
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredReifiedStatement createReifiedStatement( String uri )
+                       throws AccessDeniedException;
+
+       @Override
+       public SecuredAlt getAlt();
+
+       @Override
+       public SecuredBag getBag();
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean getBoolean() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public byte getByte() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public char getChar() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public double getDouble() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public float getFloat() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public int getInt() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public String getLanguage() throws AccessDeniedException;
+
+       @Override
+       public SecuredLiteral getLiteral();
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public long getLong() throws AccessDeniedException;
+
+       @Override
+       public SecuredModel getModel();
+
+       @Override
+       public SecuredRDFNode getObject();
+
+       @Override
+       public SecuredProperty getPredicate();
+
+       @Override
+       public SecuredStatement getProperty( Property p );
+
+       @Override
+       public SecuredResource getResource();
+
+       @Override
+       @Deprecated
+       public SecuredResource getResource( ResourceF f );
+
+       @Override
+       public SecuredSeq getSeq();
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public short getShort() throws AccessDeniedException;
+
+       @Override
+       public SecuredStatement getStatementProperty( Property p );
+
+       /**
+        * @sec.graph Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public String getString() throws AccessDeniedException;
+
+       @Override
+       public SecuredResource getSubject();
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean hasWellFormedXML() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public boolean isReified() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Read
+        * @sec.triple Read
+        * @throws AccessDeniedException
+        */
+       @Override
+       public RSIterator listReifiedStatements() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Delete
+        * @throws AccessDeniedException
+        */
+       @Override
+       public SecuredStatement remove() throws AccessDeniedException;
+
+       /**
+        * @sec.graph Update
+        * @sec.triple Delete
+        * @throws AccessDeniedException
+        */
+       @Override
+       public void removeReification() throws AccessDeniedException;
+
+}

Reply via email to