/************************************************************** * * 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. * *************************************************************/ #ifndef __com_sun_star_rdf_XRepository_idl__ #define __com_sun_star_rdf_XRepository_idl__ #ifndef __com_sun_star_lang_IllegalArgumentException_idl__ #include #endif #ifndef __com_sun_star_container_ElementExistException_idl__ #include #endif #ifndef __com_sun_star_container_NoSuchElementException_idl__ #include #endif #ifndef __com_sun_star_container_XEnumeration_idl__ #include #endif #ifndef __com_sun_star_io_IOException_idl__ #include #endif #ifndef __com_sun_star_io_XInputStream_idl__ #include #endif #ifndef __com_sun_star_io_XOutputStream_idl__ #include #endif #ifndef __com_sun_star_datatransfer_UnsupportedFlavorException_idl__ #include #endif #ifndef __com_sun_star_rdf_FileFormat_idl__ #include #endif #ifndef __com_sun_star_rdf_ParseException_idl__ #include #endif #ifndef __com_sun_star_rdf_QueryException_idl__ #include #endif #ifndef __com_sun_star_rdf_RepositoryException_idl__ #include #endif #ifndef __com_sun_star_rdf_XBlankNode_idl__ #include #endif #ifndef __com_sun_star_rdf_XURI_idl__ #include #endif #ifndef __com_sun_star_rdf_Statement_idl__ #include #endif #ifndef __com_sun_star_rdf_XQuerySelectResult_idl__ #include #endif #ifndef __com_sun_star_rdf_XNamedGraph_idl__ #include #endif //============================================================================= module com { module sun { module star { module rdf { //============================================================================= /** provides access to a set of named RDF graphs.

A repository for storing information according to the data model of the Resource Description Framework. This interface may be used e.g. for repositories that correspond to a loaded ODF document, or for repositories that are backed by some kind of database.

The RDF triples are stored as a set of named RDF graphs. Importing and exporting files in the RDF/XML format is supported. Support for other file formats is optional. Support for querying the repository with the SPARQL query language is provided.

@since OpenOffice 3.2 @see XRepositorySupplier @see XDocumentRepository */ interface XRepository { //------------------------------------------------------------------------- /** creates a fresh unique blank node. @returns a newly generated blank node which is unique in this repository */ XBlankNode createBlankNode(); //------------------------------------------------------------------------- /** imports a named graph into the repository.

Implementations must support RDF/XML format. Support for other RDF formats is optional. If the format is not supported by the implementation, an UnsupportedFlavorException is raised. If the format requires use of a BaseURI, but none is given, an IllegalArgumentException is raised.

@param Format the format of the input file @param InStream the input stream, containing an RDF file in the specified format @param GraphName the name of the graph that is imported @param BaseURI a base URI to resolve relative URI references @returns the imported graph @throws com::sun::star::lang::IllegalArgumentException if the given stream or the GraphName is , or BaseURI is and the format requires use of a base URI @throws com::sun::star::datatransfer::UnsupportedFlavorException if the format requested is unknown or not supported @throws com::sun::star::container::ElementExistException if a graph with the given GraphName already exists in the repository @throws ParseException if the input does not conform to the specified file format. @throws RepositoryException if an error occurs when accessing the repository. @throws com::sun::star::io::IOException if an I/O error occurs. @see FileFormat */ XNamedGraph importGraph([in] /*FileFormat*/ short Format, [in] com::sun::star::io::XInputStream InStream, [in] XURI GraphName, [in] XURI BaseURI) raises( com::sun::star::lang::IllegalArgumentException, com::sun::star::datatransfer::UnsupportedFlavorException, com::sun::star::container::ElementExistException, ParseException, RepositoryException, com::sun::star::io::IOException ); //------------------------------------------------------------------------- /** exports a named graph from the repository.

Implementations must support RDF/XML format. Support for other RDF formats is optional. If the format is not supported by the implementation, an UnsupportedFlavorException is raised.

@param Format the format of the output file @param OutStream the target output stream @param GraphName the name of the graph that is to be exported @param BaseURI a base URI to resolve relative URI references @throws com::sun::star::lang::IllegalArgumentException if the given stream or the GraphName is , or BaseURI is and the format requires use of a base URI @throws com::sun::star::datatransfer::UnsupportedFlavorException if the format requested is unknown or not supported @throws com::sun::star::container::NoSuchElementException if a graph with the given GraphName does not exist @throws RepositoryException if an error occurs when accessing the repository. @throws com::sun::star::io::IOException if an I/O error occurs. @see FileFormat */ void exportGraph([in] /*FileFormat*/ short Format, [in] com::sun::star::io::XOutputStream OutStream, [in] XURI GraphName, [in] XURI BaseURI) raises( com::sun::star::lang::IllegalArgumentException, com::sun::star::datatransfer::UnsupportedFlavorException, com::sun::star::container::NoSuchElementException, RepositoryException, com::sun::star::io::IOException ); //------------------------------------------------------------------------- /** gets the names of all the graphs in the repository. @returns a list containing the names of the graphs in the repository @throws RepositoryException if an error occurs when accessing the repository. */ sequence getGraphNames() raises( RepositoryException ); //------------------------------------------------------------------------- /** gets a graph by its name. @param GraphName the name of the graph that is to be returned @returns the graph with the given name if it exists, else @throws com::sun::star::lang::IllegalArgumentException if the given GraphName is invalid @throws RepositoryException if an error occurs when accessing the repository. */ XNamedGraph getGraph([in] XURI GraphName) raises( com::sun::star::lang::IllegalArgumentException, RepositoryException ); //------------------------------------------------------------------------- /** creates a graph with the given name.

The name must be unique within the repository.

@param GraphName the name of the graph that is to be created @returns the graph with the given name @throws com::sun::star::lang::IllegalArgumentException if the given GraphName is invalid @throws com::sun::star::container::ElementExistException if a graph with the given GraphName already exists @throws RepositoryException if an error occurs when accessing the repository. */ XNamedGraph createGraph([in] XURI GraphName) raises( com::sun::star::lang::IllegalArgumentException, com::sun::star::container::ElementExistException, RepositoryException ); //------------------------------------------------------------------------- /** destroys the graph with the given name, and removes it from the repository.

This invalidates any instances of XNamedGraph for the argument.

@param GraphName the name of the graph that is to be destroyed @throws com::sun::star::lang::IllegalArgumentException if the given GraphName is invalid @throws com::sun::star::container::NoSuchElementException if a graph with the given GraphName does not exist @throws RepositoryException if an error occurs when accessing the repository. */ void destroyGraph([in] XURI GraphName) raises( com::sun::star::lang::IllegalArgumentException, com::sun::star::container::NoSuchElementException, RepositoryException ); //------------------------------------------------------------------------- /** gets matching RDF statements from the repository.

Any parameter may be , which acts as a wildcard. For example, to get all statements about myURI: getStatements(myURI, null, null)

@param Subject the subject of the RDF triple. @param Predicate the predicate of the RDF triple. @param Object the object of the RDF triple. @returns an iterator over all RDF statements in the repository that match the parameters, represented as an enumeration of Statement @throws RepositoryException if an error occurs when accessing the repository. @see Statement @see XNamedGraph::getStatements */ com::sun::star::container::XEnumeration/**/ getStatements( [in] XResource Subject, [in] XURI Predicate, [in] XNode Object) raises( RepositoryException ); //------------------------------------------------------------------------- /** executes a SPARQL "SELECT" query.

This method runs a SPARQL query that returns a list of variable bindings, i.e., a query beginning with "SELECT". The result is basically a (rectangular) table with labeled columns, where individual cells may be .

@param Query the SPARQL query string @returns an enumeration, containing
  1. a list of query variable names (column labels)
  2. the query results (rows), each being a list of bindings for the above variables
@throws QueryException if the query is malformed, or evaluation fails @throws RepositoryException if an error occurs when accessing the repository. @see XQuerySelectResult */ XQuerySelectResult querySelect([in] string Query) raises( QueryException, RepositoryException ); //------------------------------------------------------------------------- /** executes a SPARQL "CONSTRUCT" query.

This method runs a SPARQL query that constructs a result graph, i.e., a query beginning with "CONSTRUCT".

@param Query the SPARQL query string @returns an iterator over the query result graph, represented as an enumeration of Statement @throws QueryException if the query is malformed, or evaluation fails @throws RepositoryException if an error occurs when accessing the repository. @see Statement */ com::sun::star::container::XEnumeration/**/ queryConstruct( [in] string Query) raises( QueryException, RepositoryException ); //------------------------------------------------------------------------- /** executes a SPARQL "ASK" query.

This method runs a SPARQL query that computes a boolean, i.e., a query beginning with "ASK".

@param Query the SPARQL query string @returns the boolean query result @throws QueryException if the query is malformed, or evaluation fails @throws RepositoryException if an error occurs when accessing the repository. */ boolean queryAsk([in] string Query) raises( QueryException, RepositoryException ); }; //============================================================================= }; }; }; }; #endif