///////////////////////////////////////////////////////////////
 * 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.
///////////////////////////////////////////////////////////////

[[extension-index-rdf,RDF Index/Query]]
= OpenRDF Index/Query =

[devstatus]
--------------
source=extensions/indexing-rdf/dev-status.xml
--------------

Index/Query services backed by http://www.openrdf.org/[OpenRDF Sesame] framework for processing RDF data.

include::../../build/docs/buildinfo/artifact.txt[]

== In Memory ==

Assembly is done using the provided Assembler:

[snippet,java]
----
source=extensions/indexing-rdf/src/test/java/org/apache/zest/index/rdf/DocumentationSupport.java
tag=memory
----

No configuration needed.

== On Filesystem ==

=== Assembly ===

Assembly is done using the provided Assembler:

[snippet,java]
----
source=extensions/indexing-rdf/src/test/java/org/apache/zest/index/rdf/DocumentationSupport.java
tag=native
----

=== Configuration ===

Here are the configuration properties for the Native RDF Index/Query:

[snippet,java]
----
source=libraries/rdf/src/main/java/org/apache/zest/library/rdf/repository/NativeConfiguration.java
tag=config
----


== In a RDBMS ==

=== Assembly ===

Assembly is done using the provided Assembler:

[snippet,java]
----
source=extensions/indexing-rdf/src/test/java/org/apache/zest/index/rdf/DocumentationSupport.java
tag=rdbms
----

=== Configuration ===

Here are the configuration properties for the RDBMS based RDF Index/Query:

[snippet,java]
----
source=libraries/rdf/src/main/java/org/apache/zest/library/rdf/repository/RdbmsRepositoryConfiguration.java
tag=config
----
