# 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.

# Dataset which has named graphs and a default graph.

@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 :       <#> .

## Datatset

<> rdf:type         ja:RDFDataset ;
    # Database-backed model
    ja:defaultGraph _:modelDB1 ;
    # And also a memory model - can mix and match.
    ja:namedGraph [ ja:graphName <http://example/graph1> ;
                    ja:graph    :data1 ] ;
    .

_:modelDB1 rdf:type ja:RDBModel ;
    ja:connection
    [
        ja:dbType       "MySQL" ;
        ja:dbURL        <jdbc:mysql://localhost/jena-db> ;
        ja:dbUser       "user" ;
        ja:dbPassword   "password" ;
        ja:dbClass      "com.mysql.jdbc.Driver" ;
    ] ;
    ## Add a model name - this is the name of the mode in the database
    ## It is NOT the name in the dataset (that comes from 
    ## ja:namedGraph/ja:graphName)
    ja:modelName "DEFAULT"
    . 
