# 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.

# Setting up a single graph which is a rule-backed infModel

@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 ;
    ja:graph :inf .

:inf rdf:type ja:InfModel ;
    ja:baseModel :data ;
    ja:reasoner
        [ ja:reasonerURL <http://jena.hpl.hp.com/2003/GenericRuleReasoner> ;
          ja:rulesFrom <owlax.jena> 
        ] ;
    .

:data rdf:type ja:MemoryModel ;
    ja:content [ja:externalContent <input-data.ttl>] ;
    .
