# 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.

# Graph store -- for SPARQL/Update

@prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd:    <http://www.w3.org/2001/XMLSchema#> .
@prefix ja:     <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix :       <#> .

## Graphstore - one default graph, two named graphs, all empty.

<> rdf:type         ja:GraphStore ;
    ja:defaultGraph
        [ rdf:type ja:MemoryModel ] ;
    ja:namedGraph [ ja:graphName <http://example/graph1> ;
                    ja:graph    :data1 ] ;
    ja:namedGraph [ ja:graphName <http://example/graph2> ;
                    ja:graph    :data2 ] ;
    . 

# Empty
:data1 rdf:type ja:MemoryModel ;
    .

# Empty
:data2 rdf:type ja:MemoryModel ;
    .
