1/************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24#ifndef __com_sun_star_rdf_XRepository_idl__ 25#define __com_sun_star_rdf_XRepository_idl__ 26 27#ifndef __com_sun_star_lang_IllegalArgumentException_idl__ 28#include <com/sun/star/lang/IllegalArgumentException.idl> 29#endif 30 31#ifndef __com_sun_star_container_ElementExistException_idl__ 32#include <com/sun/star/container/ElementExistException.idl> 33#endif 34 35#ifndef __com_sun_star_container_NoSuchElementException_idl__ 36#include <com/sun/star/container/NoSuchElementException.idl> 37#endif 38 39#ifndef __com_sun_star_container_XEnumeration_idl__ 40#include <com/sun/star/container/XEnumeration.idl> 41#endif 42 43#ifndef __com_sun_star_io_IOException_idl__ 44#include <com/sun/star/io/IOException.idl> 45#endif 46 47#ifndef __com_sun_star_io_XInputStream_idl__ 48#include <com/sun/star/io/XInputStream.idl> 49#endif 50 51#ifndef __com_sun_star_io_XOutputStream_idl__ 52#include <com/sun/star/io/XOutputStream.idl> 53#endif 54 55#ifndef __com_sun_star_datatransfer_UnsupportedFlavorException_idl__ 56#include <com/sun/star/datatransfer/UnsupportedFlavorException.idl> 57#endif 58 59#ifndef __com_sun_star_rdf_FileFormat_idl__ 60#include <com/sun/star/rdf/FileFormat.idl> 61#endif 62 63#ifndef __com_sun_star_rdf_ParseException_idl__ 64#include <com/sun/star/rdf/ParseException.idl> 65#endif 66 67#ifndef __com_sun_star_rdf_QueryException_idl__ 68#include <com/sun/star/rdf/QueryException.idl> 69#endif 70 71#ifndef __com_sun_star_rdf_RepositoryException_idl__ 72#include <com/sun/star/rdf/RepositoryException.idl> 73#endif 74 75#ifndef __com_sun_star_rdf_XBlankNode_idl__ 76#include <com/sun/star/rdf/XBlankNode.idl> 77#endif 78 79#ifndef __com_sun_star_rdf_XURI_idl__ 80#include <com/sun/star/rdf/XURI.idl> 81#endif 82 83#ifndef __com_sun_star_rdf_Statement_idl__ 84#include <com/sun/star/rdf/Statement.idl> 85#endif 86 87#ifndef __com_sun_star_rdf_XQuerySelectResult_idl__ 88#include <com/sun/star/rdf/XQuerySelectResult.idl> 89#endif 90 91#ifndef __com_sun_star_rdf_XNamedGraph_idl__ 92#include <com/sun/star/rdf/XNamedGraph.idl> 93#endif 94 95 96//============================================================================= 97 98module com { module sun { module star { module rdf { 99 100//============================================================================= 101/** provides access to a set of named RDF graphs. 102 103 <p> 104 A repository for storing information according to the data model of the 105 <a href="http://www.w3.org/RDF/">Resource Description Framework</a>. 106 This interface may be used e.g. for repositories that correspond to a 107 loaded ODF document, or for repositories that are backed by some kind of 108 database. 109 </p> 110 <p> 111 The RDF triples are stored as a set of named RDF graphs. 112 Importing and exporting files in the 113 <a href="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML</a> 114 format is supported. 115 Support for other file formats is optional. 116 Support for querying the repository with the 117 <a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL</a> 118 query language is provided. 119 </p> 120 121 122 @since OOo 3.2 123 124 @see XRepositorySupplier 125 @see XDocumentRepository 126 */ 127interface XRepository 128{ 129 130 //------------------------------------------------------------------------- 131 /** creates a fresh unique blank node. 132 133 @returns 134 a newly generated blank node which is unique in this repository 135 */ 136 XBlankNode createBlankNode(); 137 138 139 //------------------------------------------------------------------------- 140 /** imports a named graph into the repository. 141 142 <p> 143 Implementations must support RDF/XML format. 144 Support for other RDF formats is optional. 145 If the format is not supported by the implementation, an 146 <type scope="com::sun::star::datatransfer">UnsupportedFlavorException 147 </type> is raised. 148 If the format requires use of a BaseURI, but none is given, an 149 <type scope="com::sun::star::lang">IllegalArgumentException</type> 150 is raised. 151 </p> 152 153 @param Format 154 the format of the input file 155 156 @param InStream 157 the input stream, containing an RDF file in the specified format 158 159 @param GraphName 160 the name of the graph that is imported 161 162 @param BaseURI 163 a base URI to resolve relative URI references 164 165 @returns 166 the imported graph 167 168 @throws com::sun::star::lang::IllegalArgumentException 169 if the given stream or the GraphName is <NULL/>, 170 or BaseURI is <NULL/> and the format requires use of a base URI 171 172 @throws com::sun::star::datatransfer::UnsupportedFlavorException 173 if the format requested is unknown or not supported 174 175 @throws com::sun::star::container::ElementExistException 176 if a graph with the given GraphName already exists in the 177 repository 178 179 @throws ParseException 180 if the input does not conform to the specified file format. 181 182 @throws RepositoryException 183 if an error occurs when accessing the repository. 184 185 @throws com::sun::star::io::IOException 186 if an I/O error occurs. 187 188 @see FileFormat 189 */ 190 XNamedGraph importGraph([in] /*FileFormat*/ short Format, 191 [in] com::sun::star::io::XInputStream InStream, 192 [in] XURI GraphName, [in] XURI BaseURI) 193 raises( com::sun::star::lang::IllegalArgumentException, 194 com::sun::star::datatransfer::UnsupportedFlavorException, 195 com::sun::star::container::ElementExistException, 196 ParseException, 197 RepositoryException, 198 com::sun::star::io::IOException ); 199 200 //------------------------------------------------------------------------- 201 /** exports a named graph from the repository. 202 203 <p> 204 Implementations must support RDF/XML format. 205 Support for other RDF formats is optional. 206 If the format is not supported by the implementation, an 207 <type scope="com::sun::star::datatransfer">UnsupportedFlavorException 208 </type> is raised. 209 </p> 210 211 @param Format 212 the format of the output file 213 214 @param OutStream 215 the target output stream 216 217 @param GraphName 218 the name of the graph that is to be exported 219 220 @param BaseURI 221 a base URI to resolve relative URI references 222 223 @throws com::sun::star::lang::IllegalArgumentException 224 if the given stream or the GraphName is <NULL/>, 225 or BaseURI is <NULL/> and the format requires use of a base URI 226 227 @throws com::sun::star::datatransfer::UnsupportedFlavorException 228 if the format requested is unknown or not supported 229 230 @throws com::sun::star::container::NoSuchElementException 231 if a graph with the given GraphName does not exist 232 233 @throws RepositoryException 234 if an error occurs when accessing the repository. 235 236 @throws com::sun::star::io::IOException 237 if an I/O error occurs. 238 239 @see FileFormat 240 */ 241 void exportGraph([in] /*FileFormat*/ short Format, 242 [in] com::sun::star::io::XOutputStream OutStream, 243 [in] XURI GraphName, [in] XURI BaseURI) 244 raises( com::sun::star::lang::IllegalArgumentException, 245 com::sun::star::datatransfer::UnsupportedFlavorException, 246 com::sun::star::container::NoSuchElementException, 247 RepositoryException, 248 com::sun::star::io::IOException ); 249 250 //------------------------------------------------------------------------- 251 /** gets the names of all the graphs in the repository. 252 253 @returns 254 a list containing the names of the graphs in the repository 255 256 @throws RepositoryException 257 if an error occurs when accessing the repository. 258 */ 259 sequence<XURI> getGraphNames() 260 raises( RepositoryException ); 261 262 //------------------------------------------------------------------------- 263 /** gets a graph by its name. 264 265 @param GraphName 266 the name of the graph that is to be returned 267 268 @returns 269 the graph with the given name if it exists, else <NULL/> 270 271 @throws com::sun::star::lang::IllegalArgumentException 272 if the given GraphName is invalid 273 274 @throws RepositoryException 275 if an error occurs when accessing the repository. 276 */ 277 XNamedGraph getGraph([in] XURI GraphName) 278 raises( com::sun::star::lang::IllegalArgumentException, 279 RepositoryException ); 280 281 //------------------------------------------------------------------------- 282 /** creates a graph with the given name. 283 284 <p> 285 The name must be unique within the repository. 286 </p> 287 288 @param GraphName 289 the name of the graph that is to be created 290 291 @returns 292 the graph with the given name 293 294 @throws com::sun::star::lang::IllegalArgumentException 295 if the given GraphName is invalid 296 297 @throws com::sun::star::container::ElementExistException 298 if a graph with the given GraphName already exists 299 300 @throws RepositoryException 301 if an error occurs when accessing the repository. 302 */ 303 XNamedGraph createGraph([in] XURI GraphName) 304 raises( com::sun::star::lang::IllegalArgumentException, 305 com::sun::star::container::ElementExistException, 306 RepositoryException ); 307 308 //------------------------------------------------------------------------- 309 /** destroys the graph with the given name, and removes it from the 310 repository. 311 312 <p> 313 This invalidates any instances of <type>XNamedGraph</type> 314 for the argument. 315 </p> 316 317 @param GraphName 318 the name of the graph that is to be destroyed 319 320 @throws com::sun::star::lang::IllegalArgumentException 321 if the given GraphName is invalid 322 323 @throws com::sun::star::container::NoSuchElementException 324 if a graph with the given GraphName does not exist 325 326 @throws RepositoryException 327 if an error occurs when accessing the repository. 328 */ 329 void destroyGraph([in] XURI GraphName) 330 raises( com::sun::star::lang::IllegalArgumentException, 331 com::sun::star::container::NoSuchElementException, 332 RepositoryException ); 333 334 //------------------------------------------------------------------------- 335 /** gets matching RDF statements from the repository. 336 337 <p> 338 Any parameter may be <NULL/>, which acts as a wildcard. 339 For example, to get all statements about myURI: 340 <code>getStatements(myURI, null, null)</code> 341 </p> 342 343 @param Subject 344 the subject of the RDF triple. 345 346 @param Predicate 347 the predicate of the RDF triple. 348 349 @param Object 350 the object of the RDF triple. 351 352 @returns 353 an iterator over all RDF statements in the repository that match 354 the parameters, represented as an 355 enumeration of <type>Statement</type> 356 357 @throws RepositoryException 358 if an error occurs when accessing the repository. 359 360 @see Statement 361 @see XNamedGraph::getStatements 362 */ 363 com::sun::star::container::XEnumeration/*<Statement>*/ getStatements( 364 [in] XResource Subject, 365 [in] XURI Predicate, 366 [in] XNode Object) 367 raises( RepositoryException ); 368 369 370 //------------------------------------------------------------------------- 371 /** executes a SPARQL "SELECT" query. 372 373 <p> 374 This method runs a SPARQL query that returns a list of variable 375 bindings, i.e., a query beginning with "SELECT". 376 The result is basically a (rectangular) table with labeled columns, 377 where individual cells may be <NULL/>. 378 </p> 379 380 @param Query 381 the SPARQL query <atom>string</atom> 382 383 @returns 384 an enumeration, containing 385 <ol> 386 <li>a list of query variable names (column labels)</li> 387 <li>the query results (rows), 388 each being a list of bindings for the above variables</li> 389 </ol> 390 391 @throws QueryException 392 if the query is malformed, or evaluation fails 393 394 @throws RepositoryException 395 if an error occurs when accessing the repository. 396 397 @see XQuerySelectResult 398 */ 399 XQuerySelectResult querySelect([in] string Query) 400 raises( QueryException, 401 RepositoryException ); 402 403 //------------------------------------------------------------------------- 404 /** executes a SPARQL "CONSTRUCT" query. 405 406 <p> 407 This method runs a SPARQL query that constructs a result graph, 408 i.e., a query beginning with "CONSTRUCT". 409 </p> 410 411 @param Query 412 the SPARQL query <atom>string</atom> 413 414 @returns 415 an iterator over the query result graph, represented as an 416 enumeration of <type>Statement</type> 417 418 @throws QueryException 419 if the query is malformed, or evaluation fails 420 421 @throws RepositoryException 422 if an error occurs when accessing the repository. 423 424 @see Statement 425 */ 426 com::sun::star::container::XEnumeration/*<Statement>*/ queryConstruct( 427 [in] string Query) 428 raises( QueryException, 429 RepositoryException ); 430 431 //------------------------------------------------------------------------- 432 /** executes a SPARQL "ASK" query. 433 434 <p> 435 This method runs a SPARQL query that computes a boolean, 436 i.e., a query beginning with "ASK". 437 </p> 438 439 @param Query 440 the SPARQL query <atom>string</atom> 441 442 @returns 443 the boolean query result 444 445 @throws QueryException 446 if the query is malformed, or evaluation fails 447 448 @throws RepositoryException 449 if an error occurs when accessing the repository. 450 */ 451 boolean queryAsk([in] string Query) 452 raises( QueryException, 453 RepositoryException ); 454 455}; 456 457//============================================================================= 458 459}; }; }; }; 460 461#endif 462