/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * 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 . */ #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 com::sun::star::datatransfer::UnsupportedFlavorException is raised. If the format requires use of a BaseURI, but none is given, an com::sun::star::lang::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 `NULL`, or BaseURI is `NULL` 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 com::sun::star::datatransfer::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 `NULL`, or BaseURI is `NULL` 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 `NULL` @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 `NULL`, 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 `NULL`.

@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: */