/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifndef __com_sun_star_rdf_XRepository_idl__ #define __com_sun_star_rdf_XRepository_idl__ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //============================================================================= 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 OOo 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 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */