diff options
Diffstat (limited to 'offapi/com/sun/star/rdf')
23 files changed, 2611 insertions, 0 deletions
diff --git a/offapi/com/sun/star/rdf/BlankNode.idl b/offapi/com/sun/star/rdf/BlankNode.idl new file mode 100644 index 000000000..9ab41dd74 --- /dev/null +++ b/offapi/com/sun/star/rdf/BlankNode.idl @@ -0,0 +1,67 @@ +/* -*- 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_BlankNode_idl__ +#define __com_sun_star_rdf_BlankNode_idl__ + +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/rdf/XBlankNode.idl> + + + +module com { module sun { module star { module rdf { + +/** represents a blank node that may occur in a RDF graph. + + @since OOo 3.0 + + @see XRepository + */ +service BlankNode : XBlankNode +{ + + /** create a blank RDF node. + + <p> + Be careful! With this constructor you can create a node that aliases + another node that already exists in some repository. + That may or may not be what you want. + If you want to create a new blank node that is guaranteed to be unique, + use XRepository::createBlankNode() instead. + <p> + + @param NodeID + the ID for the blank node. + + @throws com::sun::star::lang::IllegalArgumentException + if the argument does not represent a valid blank node ID + + @see XRepository::createBlankNode + */ + create( [in] string NodeID ) + raises( com::sun::star::lang::IllegalArgumentException ); + +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/FileFormat.idl b/offapi/com/sun/star/rdf/FileFormat.idl new file mode 100644 index 000000000..5b48ed2ac --- /dev/null +++ b/offapi/com/sun/star/rdf/FileFormat.idl @@ -0,0 +1,73 @@ +/* -*- 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_FileFormat_idl__ +#define __com_sun_star_rdf_FileFormat_idl__ + + + +module com { module sun { module star { module rdf { + +/** Constants to specify RDF file formats. + + <p> + These constants are mainly for use with + XRepository::importGraph() + and XRepository::exportGraph(). + </p> + + <p> + Note that these are integers because UNO IDL does not permit + `string` constants. + </p> + + @since OOo 3.0 + + @see XRepository::importGraph + @see XRepository::exportGraph + */ +constants FileFormat +{ + + /// <a href="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML</a> + const short RDF_XML = 0; // "application/rdf+xml"; + + /// <a href="http://www.w3.org/DesignIssues/Notation3">N3 (Notation-3)</a> + const short N3 = 1; // "text/rdf+n3"; + + /// <a href="http://www.w3.org/TR/n-triples/">N-Triples</a> + const short NTRIPLES = 2; // "text/plain"; + + /// <a href="http://www.w3.org/TR/trig/">TriG</a> + const short TRIG = 3; // "application/trig"; + + /// <a href="https://web.archive.org/web/20110724134923/http://sw.nokia.com/trix/">TriX</a> + const short TRIX = 4; // "application/trix"; + + /// <a href="http://www.dajobe.org/2004/01/turtle/">Turtle</a> + const short TURTLE = 5; // "application/turtle"; + +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/Literal.idl b/offapi/com/sun/star/rdf/Literal.idl new file mode 100644 index 000000000..33eb39e00 --- /dev/null +++ b/offapi/com/sun/star/rdf/Literal.idl @@ -0,0 +1,75 @@ +/* -*- 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_Literal_idl__ +#define __com_sun_star_rdf_Literal_idl__ + +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/rdf/XLiteral.idl> + + + +module com { module sun { module star { module rdf { + +/** represents a literal that may occur in a RDF graph. + + @since OOo 3.0 + + @see XRepository + */ +service Literal : XLiteral +{ + + /** creates a plain literal RDF node. + + @param Value + the string value of the literal + */ + create( [in] string Value ); + + /** creates a typed literal RDF node. + + @param Value + the string value of the literal + + @param Type + the data type of the literal + */ + createWithType( [in] string Value, [in] XURI Type ); + + /** creates a literal RDF node with a language. + + @param Value + the string value of the literal + + @param Language + the language of the literal + */ + createWithLanguage( [in] string Value, [in] string Language ); + + // NOTE: there is no createWithTypeAndLanguage! +}; + + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/ParseException.idl b/offapi/com/sun/star/rdf/ParseException.idl new file mode 100644 index 000000000..f8a32930e --- /dev/null +++ b/offapi/com/sun/star/rdf/ParseException.idl @@ -0,0 +1,43 @@ +/* -*- 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_ParseException_idl__ +#define __com_sun_star_rdf_ParseException_idl__ + +#include <com/sun/star/uno/Exception.idl> + + +module com { module sun { module star { module rdf { + +/** represents an error condition that is signaled on parsing an RDF file. + + @since OOo 3.0 + + @see XRepository + */ +exception ParseException : com::sun::star::uno::Exception +{ +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/QueryException.idl b/offapi/com/sun/star/rdf/QueryException.idl new file mode 100644 index 000000000..ec59016e8 --- /dev/null +++ b/offapi/com/sun/star/rdf/QueryException.idl @@ -0,0 +1,44 @@ +/* -*- 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_QueryException_idl__ +#define __com_sun_star_rdf_QueryException_idl__ + +#include <com/sun/star/uno/Exception.idl> + + +module com { module sun { module star { module rdf { + +/** represents an error condition that is signaled on evaluating a query + against an RDF Repository. + + @since OOo 3.0 + + @see XRepository + */ +exception QueryException : com::sun::star::uno::Exception +{ +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/Repository.idl b/offapi/com/sun/star/rdf/Repository.idl new file mode 100644 index 000000000..f1945070d --- /dev/null +++ b/offapi/com/sun/star/rdf/Repository.idl @@ -0,0 +1,49 @@ +/* -*- 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_Repository_idl__ +#define __com_sun_star_rdf_Repository_idl__ + +#include <com/sun/star/rdf/XRepository.idl> + + + +module com { module sun { module star { module rdf { + +/** provides access to a set of named RDF graphs. + + @since OOo 3.0 + + @see XRepository + @see XRepositorySupplier + */ +service Repository : XRepository +{ + /** constructs repository with in-memory storage. + */ + create(); + // FIXME: if we want to support HTTP/SQL-based storage, or inference, define more constructors here +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/RepositoryException.idl b/offapi/com/sun/star/rdf/RepositoryException.idl new file mode 100644 index 000000000..34564ca11 --- /dev/null +++ b/offapi/com/sun/star/rdf/RepositoryException.idl @@ -0,0 +1,44 @@ +/* -*- 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_RepositoryException_idl__ +#define __com_sun_star_rdf_RepositoryException_idl__ + +#include <com/sun/star/uno/Exception.idl> + + +module com { module sun { module star { module rdf { + +/** represents an error condition that is signaled on accessing an RDF + Repository. + + @since OOo 3.0 + + @see XRepository + */ +exception RepositoryException : com::sun::star::uno::Exception +{ +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/Statement.idl b/offapi/com/sun/star/rdf/Statement.idl new file mode 100644 index 000000000..5f6852cfc --- /dev/null +++ b/offapi/com/sun/star/rdf/Statement.idl @@ -0,0 +1,52 @@ +/* -*- 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_Statement_idl__ +#define __com_sun_star_rdf_Statement_idl__ + +#include <com/sun/star/rdf/XURI.idl> + + + +module com { module sun { module star { module rdf { + +/** represents a RDF statement, or triple. + + @since OOo 3.2 + + @see XRepository + */ +struct Statement +{ + /// the subject of the RDF statement. + XResource Subject; + /// the predicate of the RDF statement. + XURI Predicate; + /// the object of the RDF statement. + XNode Object; + /// the named graph that contains this statement, or `NULL`. + XURI Graph; +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/URI.idl b/offapi/com/sun/star/rdf/URI.idl new file mode 100644 index 000000000..dbdbc2248 --- /dev/null +++ b/offapi/com/sun/star/rdf/URI.idl @@ -0,0 +1,85 @@ +/* -*- 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_URI_idl__ +#define __com_sun_star_rdf_URI_idl__ + +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/rdf/XURI.idl> + + + +module com { module sun { module star { module rdf { + +/** represents a URI node that may occur in a RDF graph. + + @since OOo 3.0 + + @see XRepository + */ +service URI : XURI +{ + + /** creates a URI RDF node. + + @param Value + the URI, represented as `string`. + + @throws com::sun::star::lang::IllegalArgumentException + if the argument does not represent a valid URI + */ + create( [in] string Value ) + raises( com::sun::star::lang::IllegalArgumentException ); + + /** creates a URI RDF node from namespace prefix and local name. + + @param Namespace + the namespace prefix of the URI, represented as + `string`. + + @param LocalName + the local name of the URI, represented as `string`. + + @throws com::sun::star::lang::IllegalArgumentException + if the arguments do not represent a valid URI + */ + createNS( [in] string Namespace, [in] string LocalName ) + raises( com::sun::star::lang::IllegalArgumentException ); + + /** creates a URI RDF node for a well-known URI. + + @param Id + the URI, represented as a constant from URIs. + + @throws com::sun::star::lang::IllegalArgumentException + if the argument is not a valid constant from URIs + + @see URIs + */ + createKnown( [in] short Id ) + raises( com::sun::star::lang::IllegalArgumentException ); + +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/URIs.idl b/offapi/com/sun/star/rdf/URIs.idl new file mode 100644 index 000000000..6172fa877 --- /dev/null +++ b/offapi/com/sun/star/rdf/URIs.idl @@ -0,0 +1,324 @@ +/* -*- 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_URIs_idl__ +#define __com_sun_star_rdf_URIs_idl__ + + + +module com { module sun { module star { module rdf { + + +/** Constants to specify some well-known URIs. + + <p> + These constants are for use with URI::createKnown(). + </p> + + @since OOo 3.2 + + @see URI::createKnown + */ +constants URIs +{ + /// http://www.w3.org/2001/XMLSchema-datatypes#NCName + const short XSD_NCNAME = 1; + /// http://www.w3.org/2001/XMLSchema-datatypes#string + const short XSD_STRING = 2; + /// http://www.w3.org/2001/XMLSchema-datatypes#normalizedString + const short XSD_NORMALIZEDSTRING = 3; + /// http://www.w3.org/2001/XMLSchema-datatypes#boolean + const short XSD_BOOLEAN = 4; + /// http://www.w3.org/2001/XMLSchema-datatypes#decimal + const short XSD_DECIMAL = 5; + /// http://www.w3.org/2001/XMLSchema-datatypes#float + const short XSD_FLOAT = 6; + /// http://www.w3.org/2001/XMLSchema-datatypes#double + const short XSD_DOUBLE = 7; + /// http://www.w3.org/2001/XMLSchema-datatypes#integer + const short XSD_INTEGER = 8; + /// http://www.w3.org/2001/XMLSchema-datatypes#nonNegativeInteger + const short XSD_NONNEGATIVEINTEGER = 9; + /// http://www.w3.org/2001/XMLSchema-datatypes#positiveInteger + const short XSD_POSITIVEINTEGER = 10; + /// http://www.w3.org/2001/XMLSchema-datatypes#nonPositiveInteger + const short XSD_NONPOSITIVEINTEGER = 11; + /// http://www.w3.org/2001/XMLSchema-datatypes#negativeInteger + const short XSD_NEGATIVEINTEGER = 12; + /// http://www.w3.org/2001/XMLSchema-datatypes#long + const short XSD_LONG = 13; + /// http://www.w3.org/2001/XMLSchema-datatypes#int + const short XSD_INT = 14; + /// http://www.w3.org/2001/XMLSchema-datatypes#short + const short XSD_SHORT = 15; + /// http://www.w3.org/2001/XMLSchema-datatypes#byte + const short XSD_BYTE = 16; + /// http://www.w3.org/2001/XMLSchema-datatypes#unsignedLong + const short XSD_UNSIGNEDLONG = 17; + /// http://www.w3.org/2001/XMLSchema-datatypes#unsignedInt + const short XSD_UNSIGNEDINT = 18; + /// http://www.w3.org/2001/XMLSchema-datatypes#unsignedShort + const short XSD_UNSIGNEDSHORT = 19; + /// http://www.w3.org/2001/XMLSchema-datatypes#unsignedByte + const short XSD_UNSIGNEDBYTE = 20; + /// http://www.w3.org/2001/XMLSchema-datatypes#hexBinary + const short XSD_HEXBINARY = 21; + /// http://www.w3.org/2001/XMLSchema-datatypes#base64Binary + const short XSD_BASE64BINARY = 22; + /// http://www.w3.org/2001/XMLSchema-datatypes#dateTime + const short XSD_DATETIME = 23; + /// http://www.w3.org/2001/XMLSchema-datatypes#time + const short XSD_TIME = 24; + /// http://www.w3.org/2001/XMLSchema-datatypes#date + const short XSD_DATE = 25; + /// http://www.w3.org/2001/XMLSchema-datatypes#gYearMonth + const short XSD_GYEARMONTH = 26; + /// http://www.w3.org/2001/XMLSchema-datatypes#gYear + const short XSD_GYEAR = 27; + /// http://www.w3.org/2001/XMLSchema-datatypes#gMonthDay + const short XSD_GMONTHDAY = 28; + /// http://www.w3.org/2001/XMLSchema-datatypes#gDay + const short XSD_GDAY = 29; + /// http://www.w3.org/2001/XMLSchema-datatypes#gMonth + const short XSD_GMONTH = 30; + /// http://www.w3.org/2001/XMLSchema-datatypes#anyURI + const short XSD_ANYURI = 31; + /// http://www.w3.org/2001/XMLSchema-datatypes#token + const short XSD_TOKEN = 32; + /// http://www.w3.org/2001/XMLSchema-datatypes#language + const short XSD_LANGUAGE = 33; + /// http://www.w3.org/2001/XMLSchema-datatypes#NMTOKEN + const short XSD_NMTOKEN = 34; + /// http://www.w3.org/2001/XMLSchema-datatypes#Name + const short XSD_NAME = 35; + /// http://www.w3.org/2001/XMLSchema-datatypes#duration + const short XSD_DURATION = 36; + /// http://www.w3.org/2001/XMLSchema-datatypes#QName + const short XSD_QNAME = 37; + /// http://www.w3.org/2001/XMLSchema-datatypes#NOTATION + const short XSD_NOTATION = 38; + /// http://www.w3.org/2001/XMLSchema-datatypes#NMTOKENS + const short XSD_NMTOKENS = 39; + /// http://www.w3.org/2001/XMLSchema-datatypes#ID + const short XSD_ID = 40; + /// http://www.w3.org/2001/XMLSchema-datatypes#IDREF + const short XSD_IDREF = 41; + /// http://www.w3.org/2001/XMLSchema-datatypes#IDREFS + const short XSD_IDREFS = 42; + /// http://www.w3.org/2001/XMLSchema-datatypes#ENTITY + const short XSD_ENTITY = 43; + /// http://www.w3.org/2001/XMLSchema-datatypes#ENTITIES + const short XSD_ENTITIES = 44; + + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#type + const short RDF_TYPE = 1000; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#subject + const short RDF_SUBJECT = 1001; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate + const short RDF_PREDICATE = 1002; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#object + const short RDF_OBJECT = 1003; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#Property + const short RDF_PROPERTY = 1004; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement + const short RDF_STATEMENT = 1005; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#value + const short RDF_VALUE = 1006; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#first + const short RDF_FIRST = 1007; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#rest + const short RDF_REST = 1008; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#nil + const short RDF_NIL = 1009; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral + const short RDF_XMLLITERAL = 1010; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt + const short RDF_ALT = 1011; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag + const short RDF_BAG = 1012; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#List + const short RDF_LIST = 1013; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq + const short RDF_SEQ = 1014; + /// http://www.w3.org/1999/02/22-rdf-syntax-ns#_1 + const short RDF_1 = 1015; + /* hmm... that's a lot of potential constants: + _n where n is a decimal integer greater than zero with no leading zeros. + */ + + /// http://www.w3.org/2000/01/rdf-schema#comment + const short RDFS_COMMENT = 1100; + /// http://www.w3.org/2000/01/rdf-schema#label + const short RDFS_LABEL = 1101; + /// http://www.w3.org/2000/01/rdf-schema#domain + const short RDFS_DOMAIN = 1102; + /// http://www.w3.org/2000/01/rdf-schema#range + const short RDFS_RANGE = 1103; + /// http://www.w3.org/2000/01/rdf-schema#subClassOf + const short RDFS_SUBCLASSOF = 1104; + /// http://www.w3.org/2000/01/rdf-schema#Literal + const short RDFS_LITERAL = 1105; + /// http://www.w3.org/2000/01/rdf-schema#member + const short RDFS_MEMBER = 1106; + /// http://www.w3.org/2000/01/rdf-schema#subPropertyOf + const short RDFS_SUBPROPERTYOF = 1107; + /// http://www.w3.org/2000/01/rdf-schema#isDefinedBy + const short RDFS_ISDEFINEDBY = 1108; + /// http://www.w3.org/2000/01/rdf-schema#seeAlso + const short RDFS_SEEALSO = 1109; + /// http://www.w3.org/2000/01/rdf-schema#Resource + const short RDFS_RESOURCE = 1110; + /// http://www.w3.org/2000/01/rdf-schema#Class + const short RDFS_CLASS = 1111; + /// http://www.w3.org/2000/01/rdf-schema#Datatype + const short RDFS_DATATYPE = 1112; + /// http://www.w3.org/2000/01/rdf-schema#Container + const short RDFS_CONTAINER = 1113; + /// http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty + const short RDFS_CONTAINERMEMBERSHIPPROPERTY = 1114; + + /// http://www.w3.org/2002/07/owl#Class + const short OWL_CLASS = 1200; + /// http://www.w3.org/2002/07/owl#ObjectProperty + const short OWL_OBJECTPROPERTY = 1201; + /// http://www.w3.org/2002/07/owl#DatatypeProperty + const short OWL_DATATYPEPROPERTY = 1202; + /// http://www.w3.org/2002/07/owl#FunctionalProperty + const short OWL_FUNCTIONALPROPERTY = 1203; + /// http://www.w3.org/2002/07/owl#Thing + const short OWL_THING = 1204; + /// http://www.w3.org/2002/07/owl#Nothing + const short OWL_NOTHING = 1205; + /// http://www.w3.org/2002/07/owl#Individual + const short OWL_INDIVIDUAL = 1206; + /// http://www.w3.org/2002/07/owl#equivalentClass + const short OWL_EQUIVALENTCLASS = 1207; + /// http://www.w3.org/2002/07/owl#equivalentProperty + const short OWL_EQUIVALENTPROPERTY = 1208; + /// http://www.w3.org/2002/07/owl#sameAs + const short OWL_SAMEAS = 1209; + /// http://www.w3.org/2002/07/owl#differentFrom + const short OWL_DIFFERENTFROM = 1210; + /// http://www.w3.org/2002/07/owl#AllDifferent + const short OWL_ALLDIFFERENT = 1211; + /// http://www.w3.org/2002/07/owl#distinctMembers + const short OWL_DISTINCTMEMBERS = 1212; + /// http://www.w3.org/2002/07/owl#inverseOf + const short OWL_INVERSEOF = 1213; + /// http://www.w3.org/2002/07/owl#TransitiveProperty + const short OWL_TRANSITIVEPROPERTY = 1214; + /// http://www.w3.org/2002/07/owl#SymmetricProperty + const short OWL_SYMMETRICPROPERTY = 1215; + /// http://www.w3.org/2002/07/owl#InverseFunctionalProperty + const short OWL_INVERSEFUNCTIONALPROPERTY = 1216; + /// http://www.w3.org/2002/07/owl#Restriction + const short OWL_RESTRICTION = 1217; + /// http://www.w3.org/2002/07/owl#onProperty + const short OWL_ONPROPERTY = 1218; + /// http://www.w3.org/2002/07/owl#allValuesFrom + const short OWL_ALLVALUESFROM = 1219; + /// http://www.w3.org/2002/07/owl#someValuesFrom + const short OWL_SOMEVALUESFROM = 1220; + /// http://www.w3.org/2002/07/owl#minCardinality + const short OWL_MINCARDINALITY = 1221; + /// http://www.w3.org/2002/07/owl#maxCardinality + const short OWL_MAXCARDINALITY = 1222; + /// http://www.w3.org/2002/07/owl#cardinality + const short OWL_CARDINALITY = 1223; + /// http://www.w3.org/2002/07/owl#Ontology + const short OWL_ONTOLOGY = 1224; + /// http://www.w3.org/2002/07/owl#imports + const short OWL_IMPORTS = 1225; + /// http://www.w3.org/2002/07/owl#versionInfo + const short OWL_VERSIONINFO = 1226; + /// http://www.w3.org/2002/07/owl#priorVersion + const short OWL_PRIORVERSION = 1227; + /// http://www.w3.org/2002/07/owl#backwardCompatibleWith + const short OWL_BACKWARDCOMPATIBLEWITH = 1228; + /// http://www.w3.org/2002/07/owl#incompatibleWith + const short OWL_INCOMPATIBLEWITH = 1229; + /// http://www.w3.org/2002/07/owl#DeprecatedClass + const short OWL_DEPRECATEDCLASS = 1230; + /// http://www.w3.org/2002/07/owl#DeprecatedProperty + const short OWL_DEPRECATEDPROPERTY = 1231; + /// http://www.w3.org/2002/07/owl#AnnotationProperty + const short OWL_ANNOTATIONPROPERTY = 1232; + /// http://www.w3.org/2002/07/owl#OntologyProperty + const short OWL_ONTOLOGYPROPERTY = 1233; + /// http://www.w3.org/2002/07/owl#oneOf + const short OWL_ONEOF = 1234; + /// http://www.w3.org/2002/07/owl#dataRange + const short OWL_DATARANGE = 1235; + /// http://www.w3.org/2002/07/owl#disjointWith + const short OWL_DISJOINTWITH = 1236; + /// http://www.w3.org/2002/07/owl#unionOf + const short OWL_UNIONOF = 1237; + /// http://www.w3.org/2002/07/owl#complementOf + const short OWL_COMPLEMENTOF = 1238; + /// http://www.w3.org/2002/07/owl#intersectionOf + const short OWL_INTERSECTIONOF = 1239; + /// http://www.w3.org/2002/07/owl#hasValue + const short OWL_HASVALUE = 1240; + + /// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#hasPart + const short PKG_HASPART = 2000; +/* REMOVED + /// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#idref + const short PKG_IDREF = 2001; + /// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#path + const short PKG_PATH = 2002; +*/ + /// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#mimeType + const short PKG_MIMETYPE = 2003; + /// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Package + const short PKG_PACKAGE = 2004; + /// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Element + const short PKG_ELEMENT = 2005; + /// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#File + const short PKG_FILE = 2006; + /// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#MetadataFile + const short PKG_METADATAFILE = 2007; + /// http://docs.oasis-open.org/ns/office/1.2/meta/pkg#Document + const short PKG_DOCUMENT = 2008; + + /// http://docs.oasis-open.org/ns/office/1.2/meta/odf#prefix + const short ODF_PREFIX = 2100; + /// http://docs.oasis-open.org/ns/office/1.2/meta/odf#suffix + const short ODF_SUFFIX = 2101; + /// http://docs.oasis-open.org/ns/office/1.2/meta/odf#Element + const short ODF_ELEMENT = 2102; + /// http://docs.oasis-open.org/ns/office/1.2/meta/odf#ContentFile + const short ODF_CONTENTFILE = 2103; + /// http://docs.oasis-open.org/ns/office/1.2/meta/odf#StylesFile + const short ODF_STYLESFILE = 2104; +/* REMOVED + /// http://docs.oasis-open.org/ns/office/1.2/meta/odf#MetadataFile + const short ODF_METADATAFILE = 2105; +*/ + + /// urn:oasis:names:tc:opendocument:xmlns:text:1.0meta-field +// const short TEXT_META_FIELD = 3000; +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XBlankNode.idl b/offapi/com/sun/star/rdf/XBlankNode.idl new file mode 100644 index 000000000..a945682d8 --- /dev/null +++ b/offapi/com/sun/star/rdf/XBlankNode.idl @@ -0,0 +1,49 @@ +/* -*- 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_XBlankNode_idl__ +#define __com_sun_star_rdf_XBlankNode_idl__ + +#include <com/sun/star/rdf/XResource.idl> + + + +module com { module sun { module star { module rdf { + +/** represents a blank node that may occur in a RDF graph. + + <p> + Blank nodes are distinct, but have no URI; in other words, + they are resources that are anonymous. + </p> + + @since OOo 3.0 + + @see XRepository + */ +interface XBlankNode : XResource +{ +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl b/offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl new file mode 100644 index 000000000..b7d143555 --- /dev/null +++ b/offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl @@ -0,0 +1,397 @@ +/* -*- 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_XDocumentMetadataAccess_idl__ +#define __com_sun_star_rdf_XDocumentMetadataAccess_idl__ + +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/lang/WrappedTargetException.idl> +#include <com/sun/star/beans/PropertyValue.idl> +#include <com/sun/star/container/ElementExistException.idl> +#include <com/sun/star/container/NoSuchElementException.idl> +#include <com/sun/star/io/IOException.idl> +#include <com/sun/star/io/XInputStream.idl> +#include <com/sun/star/datatransfer/UnsupportedFlavorException.idl> +#include <com/sun/star/embed/XStorage.idl> +#include <com/sun/star/task/XInteractionHandler.idl> +#include <com/sun/star/rdf/FileFormat.idl> +#include <com/sun/star/rdf/ParseException.idl> +#include <com/sun/star/rdf/XURI.idl> +#include <com/sun/star/rdf/XMetadatable.idl> +#include <com/sun/star/rdf/XRepositorySupplier.idl> + + + +module com { module sun { module star { module rdf { + +/** document metadata functionality related to the "manifest.rdf". + + <p> + This interface contains some methods that create connections between + the content and the RDF metadata of an ODF document. + The main idea is to make querying and manipulating the + data in the metadata manifest easier. + </p> + + <p> + Note that this interface inherits from XURI: the + base URI of the document is the string value of the RDF node. + This is so that you can easily make RDF statements about the document. + </p> + + @since OOo 3.2 + + @see XDocumentRepository + */ +interface XDocumentMetadataAccess +{ + interface XURI; + interface XRepositorySupplier; + + /** get the unique ODF element with the given metadata reference. + + @param MetadataReference + a metadata reference, comprising the stream name and the XML ID + For example: Pair("content.xml", "foo-element-1") + + @returns + the ODF element with the given metadata references if it exists, + else `NULL` + */ + XMetadatable getElementByMetadataReference( + [in] com::sun::star::beans::StringPair MetadataReference); + + /** get the ODF element that corresponds to a URI. + + @param URI + a URI that may identify an ODF element + + @returns + the ODF element that corresponds to the given URI, or `NULL` + + @throws com::sun::star::lang::IllegalArgumentException + if the given URI is `NULL` + */ + XMetadatable getElementByURI([in] XURI URI) + raises( com::sun::star::lang::IllegalArgumentException ); + + /** get the names of all metadata files with a given type. + + @param Type + the <code>rdf:type</code> property of the requested named graphs + + @returns + the names of all metadata graphs that have a <code>rdf:type</code> + property with the given Type as object + + @throws com::sun::star::lang::IllegalArgumentException + if the given Type is `NULL` + */ + sequence<XURI> getMetadataGraphsWithType([in] XURI Type) + raises( com::sun::star::lang::IllegalArgumentException ); + + /** add a metadata file to the manifest. + + <p> + This convenience method does the following: + <ul> + <li>create a new graph with the given name in the repository</li> + <li>insert statements declaring the new graph to be a + metadata file into the manifest graph</li> + <li>insert statements declaring <code>rdf:type</code> properties + for the new graph into the manifest graph</li> + </ul> + </p> + + @param FileName + the name of the stream in the ODF storage where the graph will + be stored + + @param Types + a list of types that will be inserted as <code>rdf:type</code> + properties for the graph + + @returns + the name of the new graph + + @throws com::sun::star::lang::IllegalArgumentException + if the FileName is invalid + + @throws com::sun::star::container::ElementExistException + if a stream with the given FileName already exists + */ + XURI addMetadataFile([in] string FileName, + [in] sequence<XURI> Types ) + raises( com::sun::star::lang::IllegalArgumentException, + com::sun::star::container::ElementExistException ); + + /** import a metadata file into the document repository, and add it to the + manifest. + + <p> + This convenience method does the following: + <ol> + <li>import the given file into a graph with the given name + in the repository</li> + <li>insert statements declaring the new graph to be a + metadata file into the manifest graph</li> + <li>insert statements declaring <code>rdf:type</code> properties + for the new graph into the manifest graph</li> + </ol> + </p> + + @param Format + the file format, see FileFormat + + @param InStream + the input stream + + @param FileName + the name of the stream in the ODF storage where the graph will + be stored + + @param BaseURI + a base URI to resolve relative URI references + + @param Types + a list of types that will be inserted as <code>rdf:type</code> + properties for the graph + + @returns + the name of the new graph + + @throws com::sun::star::lang::IllegalArgumentException + if the given stream is `NULL`, + or BaseURI is `NULL` and the format requires use of a base URI, + or the FileName is invalid + + @throws com::sun::star::datatransfer::UnsupportedFlavorException + if the format requested is unknown or not supported + + @throws com::sun::star::container::ElementExistException + if a stream with the given FileName already exists + + @throws ParseException + if the input does not conform to the specified file format. + + @throws com::sun::star::io::IOException + if an I/O error occurs. + + @see FileFormat + */ + XURI importMetadataFile( [in] /*FileFormat*/ short Format, + [in] com::sun::star::io::XInputStream InStream, + [in] string FileName, [in] XURI BaseURI, + [in] sequence<XURI> Types ) + raises( com::sun::star::lang::IllegalArgumentException, + com::sun::star::datatransfer::UnsupportedFlavorException, + com::sun::star::container::ElementExistException, + ParseException, + com::sun::star::io::IOException ); + + /** remove a metadata file from the manifest and the repository. + + <p> + This convenience method does the following: + <ol> + <li>delete the graph with the given GraphName in the repository</li> + <li>remove the statements declaring the graph to be a + metadata file from the manifest graph</li> + </ol> + </p> + + @param GraphName + the name of the graph that is to be removed + + @throws com::sun::star::lang::IllegalArgumentException + if the given GraphName is `NULL` + + @throws com::sun::star::container::NoSuchElementException + if a graph with the given GraphName does not exist + */ + void removeMetadataFile([in] XURI GraphName) + raises( com::sun::star::lang::IllegalArgumentException, + com::sun::star::container::NoSuchElementException ); + + /** add a content or styles file to the manifest. + + <p> + This convenience method adds the required statements declaring a + content or styles file to the manifest graph. + <ul> + <li>If the FileName ends in "content.xml", + an <code>odf:ContentFile</code> is added.</li> + <li>If the FileName ends in "styles.xml" , + an <code>odf:StylesFile</code> is added.</li> + <li>Other FileNames are invalid.</li> + </ul> + </p> + + @param FileName + the name of the stream in the ODF storage + + @throws com::sun::star::lang::IllegalArgumentException + if the FileName is invalid + + @throws com::sun::star::container::ElementExistException + if a stream with the given FileName already exists + */ + void addContentOrStylesFile([in] string FileName) + raises( com::sun::star::lang::IllegalArgumentException, + com::sun::star::container::ElementExistException ); + + /** remove a content or styles file from the manifest. + + <p> + This convenience method removes the statements declaring a + content or styles file from the manifest graph. + </p> + + @param FileName + the name of the stream in the ODF storage + + @throws com::sun::star::lang::IllegalArgumentException + if the FileName is invalid + + @throws com::sun::star::container::NoSuchElementException + if a graph with the given GraphName does not exist + */ + void removeContentOrStylesFile([in] string FileName) + raises( com::sun::star::lang::IllegalArgumentException, + com::sun::star::container::NoSuchElementException ); + + /** initialize document metadata from a storage. + + <p> + This method re-initializes the document metadata, + loads the stream named "manifest.rdf" from the storage, and then + loads all metadata streams mentioned in the manifest. + </p> + + <p> + Note that it is not an error if the storage does not contain + a manifest. + In this case, the document metadata will be default initialized. + </p> + + <p> + If an InteractionHandler argument is given, it will be used for + error reporting. Otherwise, errors will be reported as exceptions. + </p> + + @param Storage + a storage, representing e.g. an ODF package file, or sub-document + + @param BaseURI + a base URI to resolve relative URI references + <p>N.B.: when loading from an ODF package, the base URI is not the + URI of the package, but the URI of the directory in the package + that contains the metadata.rdf</p> + + @param InteractionHandler + an InteractionHandler, used for error reporting + + @throws com::sun::star::lang::IllegalArgumentException + if any argument is `NULL` + + @throws com::sun::star::lang::WrappedTargetException + if an error occurs while loading and no InteractionHandler given + */ + void loadMetadataFromStorage( + [in] com::sun::star::embed::XStorage Storage, + [in] XURI BaseURI, + [in] com::sun::star::task::XInteractionHandler InteractionHandler ) + raises( com::sun::star::lang::IllegalArgumentException, + com::sun::star::lang::WrappedTargetException ); + + /** store document metadata to a storage. + + <p> + This method stores all the graphs in the document metadata repository + to the given storage. + </p> + + <p> + Note that to be stored correctly, a named graph must have a complete + entry in the manifest graph. + </p> + + @param Storage + a storage, representing e.g. an ODF package file, or sub-document + + @throws com::sun::star::lang::IllegalArgumentException + if Storage argument is `NULL` + + @throws com::sun::star::lang::WrappedTargetException + if an error occurs while loading + */ + void storeMetadataToStorage( + [in] com::sun::star::embed::XStorage Storage ) + raises( com::sun::star::lang::IllegalArgumentException, + com::sun::star::lang::WrappedTargetException ); + + /** loads document metadata from a medium. + + <p>If the Medium contains an InteractionHandler, it will be used for + error reporting.</p> + + @param Medium + the com::sun::star::document::MediaDescriptor + representing the source + + @throws com::sun::star::lang::IllegalArgumentException + if the argument does not contain a URL or Stream property + + @throws com::sun::star::lang::WrappedTargetException + if an error occurs while loading + + @see com::sun::star::document::MediaDescriptor + */ + void loadMetadataFromMedium( + [in] sequence < com::sun::star::beans::PropertyValue > Medium ) + raises( com::sun::star::lang::IllegalArgumentException, + com::sun::star::lang::WrappedTargetException ); + + /** stores document metadata to a medium. + + @param Medium + the com::sun::star::document::MediaDescriptor + representing the target + + @throws com::sun::star::lang::IllegalArgumentException + if the argument does not contain a URL or Stream property + + @throws com::sun::star::lang::WrappedTargetException + if an error occurs while storing + + @see com::sun::star::document::MediaDescriptor + */ + void storeMetadataToMedium( + [in] sequence < com::sun::star::beans::PropertyValue > Medium ) + raises( com::sun::star::lang::IllegalArgumentException, + com::sun::star::lang::WrappedTargetException ); + +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XDocumentRepository.idl b/offapi/com/sun/star/rdf/XDocumentRepository.idl new file mode 100644 index 000000000..039e37699 --- /dev/null +++ b/offapi/com/sun/star/rdf/XDocumentRepository.idl @@ -0,0 +1,222 @@ +/* -*- 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_XDocumentRepository_idl__ +#define __com_sun_star_rdf_XDocumentRepository_idl__ + +#include <com/sun/star/beans/Pair.idl> +#include <com/sun/star/rdf/XMetadatable.idl> +#include <com/sun/star/rdf/XRepository.idl> + + + +module com { module sun { module star { module rdf { + +/** extends XRepository with document-specific functionality. + + <p> + This subclass of XRepository provides some methods which + only make sense for repositories that are attached to a document. + For example, the methods allow for manipulating in-content metadata, + which is stored as RDFa. + </p> + + @since OOo 3.2 + + @see XRepositorySupplier + @see XDocumentMetadataAccess + */ +interface XDocumentRepository : XRepository +{ + + /** update the RDFa statement(s) that correspond to an ODF element in the + repository. + + <p> + This method will do the following steps: + <ol> + <li>Remove all previously set RDFa statements for the Object parameter + from the repository</li> + <li>If the RDFaContent parameter is the empty `string`, + for every Predicate in the given list of Predicates, + add the following RDF statement to an unspecified named graph: + <ul> + <li><code>Subject Predicate + XLiteral(Object->getText()^^RDFaDatatype)</code></li> + </ul> + </li> + <li>If the RDFaContent parameter is not the empty `string`, + for every Predicate in the given list of Predicates, + add the following RDF statement to an unspecified named graph: + <ul> + <li> + <code>Subject Predicate XLiteral(RDFaContent^^RDFaDatatype)</code> + </li> + </ul> + </li> + </ol> + </p> + + <p> + RDFa statements are handled specially because they are not logically + part of any named graph in the repository. + Also, they have rather unusual semantics; + just using XNamedGraph::addStatement() would be + ambiguous: + if the object is a XMetadatable, do we insert + the object itself (URI) or its literal content (RDFa)? + </p> + + @param Subject + the subject of the RDF triple(s). + + @param Predicates + the predicates of the RDF triple(s). + + @param Object + the object of the RDF triple(s) is the text content of this + parameter. + + @param RDFaContent + the <code>rdfa:content</code> attribute (may be the empty + `string`). + + @param RDFaDatatype + the <code>rdfa:datatype</code> attribute (may be `NULL`) + + @throws com::sun::star::lang::IllegalArgumentException + if any parameter is `NULL`, Predicates is empty, + or Object is of a type that can not have RDFa metadata attached. + + @throws RepositoryException + if an error occurs when accessing the repository. + */ + void setStatementRDFa( + [in] XResource Subject, + [in] sequence<XURI> Predicates, + [in] XMetadatable Object, + [in] string RDFaContent, + [in] XURI RDFaDatatype) + raises( com::sun::star::lang::IllegalArgumentException, + RepositoryException ); + + /** remove the RDFa statement(s) that correspond to an ODF element from the + repository. + + <p> + RDFa statements are handled specially because they are not logically + part of any graph. + </p> + + @param Element + the element whose RDFa statement(s) should be removed + + @throws com::sun::star::lang::IllegalArgumentException + if the given Element is `NULL`, or of a type that can not have + RDFa metadata attached. + + @throws RepositoryException + if an error occurs when accessing the repository. + */ + void removeStatementRDFa([in] XMetadatable Element) + raises( com::sun::star::lang::IllegalArgumentException, + RepositoryException ); + + /** find the RDFa statement(s) associated with an ODF element. + + @param Element + the ODF element for which RDFa statements should be found + + @returns + <ul> + <li>if the element has no RDFa meta-data attributes: + the empty sequence.</li> + <li>if the element has RDFa meta-data attributes: + <ul> + <li>a sequence with the RDFa-statements corresponding to the + attributes.</li> + <li>a flag indicating whether there is a xhtml:content + attribute.</li> + </ul> + </li> + </ul> + + @throws com::sun::star::lang::IllegalArgumentException + if the given Element is `NULL`, or of a type that can not have + RDFa metadata attached. + + @throws RepositoryException + if an error occurs when accessing the repository. + + @see Statement + */ + com::sun::star::beans::Pair< sequence<Statement>, boolean > + getStatementRDFa([in] XMetadatable Element) + raises( com::sun::star::lang::IllegalArgumentException, + RepositoryException ); + + /** gets matching RDFa statements from the repository. + + <p> + This method exists because RDFa statements are not part of any named + graph, and thus they cannot be enumerated with + XNamedGraph::getStatements(). + </p> + + <p> + Any parameter may be `NULL`, which acts as a wildcard. + For example, to get all statements about myURI: + <code>getStatementsRDFa(myURI, null, null)</code> + </p> + + @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 RDFa 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 XRepository::getStatements + @see XNamedGraph::getStatements + */ + com::sun::star::container::XEnumeration/*<Statement>*/ getStatementsRDFa( + [in] XResource Subject, + [in] XURI Predicate, + [in] XNode Object) + raises( RepositoryException ); + +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XLiteral.idl b/offapi/com/sun/star/rdf/XLiteral.idl new file mode 100644 index 000000000..7366d021f --- /dev/null +++ b/offapi/com/sun/star/rdf/XLiteral.idl @@ -0,0 +1,61 @@ +/* -*- 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_XLiteral_idl__ +#define __com_sun_star_rdf_XLiteral_idl__ + +#include <com/sun/star/rdf/XURI.idl> + + + +module com { module sun { module star { module rdf { + +/** represents a literal that may occur in a RDF graph. + + <p> + RDF literals may come in three varieties: + <ul> + <li>just a string Value</li> + <li>Value and Language</li> + <li>typed literal: Value and Datatype (represented by a URI)</li> + </ul> + Note that there is no literal with both Language and Datatype. + </p> + + @since OOo 3.0 + + @see XRepository + */ +interface XLiteral : XNode +{ + /// the content of the literal + [readonly, attribute] string Value; + /// the language of the literal; may be the empty `string` + [readonly, attribute] string Language; + /// the data type of the literal; may be `NULL` + [readonly, attribute] XURI Datatype; + //FIXME: TODO: have not looked at handling all kinds of types, maybe just have an any attr here... +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XMetadatable.idl b/offapi/com/sun/star/rdf/XMetadatable.idl new file mode 100644 index 000000000..fc80bef99 --- /dev/null +++ b/offapi/com/sun/star/rdf/XMetadatable.idl @@ -0,0 +1,87 @@ +/* -*- 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_XMetadatable_idl__ +#define __com_sun_star_rdf_XMetadatable_idl__ + +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/beans/StringPair.idl> +#include <com/sun/star/rdf/XURI.idl> + + + +module com { module sun { module star { module rdf { + +/** marks an object representing an ODF element that may have RDF meta data + attached. + + <p> + To make using ODF elements as part of RDF statements more convenient, + this interface inherits from XURI. + The URI is constructed by concatenating the URI of the document, the + stream name, a fragment separator, and the XML ID. + </p> + + <p> + Note that using the XURI interface on an instance of + XMetadatable may have the side effect of creating a metadata + reference for the instance. + </p> + + @since OOo 3.2 + + @see XRepository + @see XDocumentMetadataAccess + */ +interface XMetadatable : XURI +{ + /** a metadata reference, comprising the stream name and the XML ID. + + <p> + Note that this metadata reference must be unique for the ODF document. + This implies that the XML ID part must be unique for every stream. + A pair of two empty strings signifies "no metadata reference". + For example: Pair("content.xml", "foo-element-1") + </p> + + @throws com::sun::star::lang::IllegalArgumentException + if the given metadata reference is invalid, or not unique + */ + [attribute] com::sun::star::beans::StringPair MetadataReference { + set raises ( com::sun::star::lang::IllegalArgumentException ); + }; + + /** creates a metadata reference for this object, if necessary. + + <p> + If this object already has a metadata reference, do nothing; + otherwise, create metadata reference with a fresh, unique XML ID + and assign it to the MetadataReference attribute. + </p> + */ + void ensureMetadataReference(); + +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XNamedGraph.idl b/offapi/com/sun/star/rdf/XNamedGraph.idl new file mode 100644 index 000000000..3de01b476 --- /dev/null +++ b/offapi/com/sun/star/rdf/XNamedGraph.idl @@ -0,0 +1,201 @@ +/* -*- 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_XNamedGraph_idl__ +#define __com_sun_star_rdf_XNamedGraph_idl__ + +#include <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/container/NoSuchElementException.idl> +#include <com/sun/star/container/XEnumeration.idl> +#include <com/sun/star/rdf/RepositoryException.idl> +#include <com/sun/star/rdf/XURI.idl> + + + +module com { module sun { module star { module rdf { + +/** represents an RDF named graph that is stored in an RDF Repository. + + <p> + Note that this interface inherits from XResource: the + name of the graph is the string value of the RDF node. + This is so that you can easily make RDF statements about named graphs. + </p> + + <p> + Note that instances may be destroyed via + XRepository::destroyGraph(). + If a graph is destroyed, subsequent calls to addStatement(), + removeStatements() will fail with an + com::sun::star::container::NoSuchElementException. + </p> + + @since OOo 3.2 + + @see XRepository + */ +interface XNamedGraph : XURI +{ + + /** returns the name of the graph. + + <p> + The name is unique within the repository. + </p> + + @returns + the name of the graph + */ + XURI getName(); + + /** removes all statements from the graph. + + @throws com::sun::star::container::NoSuchElementException + if this graph does not exist in the repository any more + + @throws RepositoryException + if an error occurs when accessing the repository. + */ + void clear() + raises( com::sun::star::container::NoSuchElementException, + RepositoryException ); + + /** adds a RDF statement to the graph. + + <p> + Note that the ODF elements that can have metadata attached all + implement the interface XMetadatable, which inherits + from XResource, meaning that you can simply pass them + in as arguments here, and it will magically work. + </p> + + @param Subject + the subject of the RDF triple. + + @param Predicate + the predicate of the RDF triple. + + @param Object + the object of the RDF triple. + + @throws com::sun::star::lang::IllegalArgumentException + if any parameter is `NULL` + + @throws com::sun::star::container::NoSuchElementException + if this graph does not exist in the repository any more + + @throws RepositoryException + if an error occurs when accessing the repository. + */ + void addStatement([in] XResource Subject, + [in] XURI Predicate, + [in] XNode Object) + raises( com::sun::star::lang::IllegalArgumentException, + com::sun::star::container::NoSuchElementException, + RepositoryException ); + + /** removes matching RDF statements from the graph. + + <p> + Note that the ODF elements that can have metadata attached all + implement the interface XMetadatable, which inherits + from XResource, meaning that you can simply pass them + in as arguments here, and it will magically work. + </p> + + <p> + Any parameter may be `NULL`, which acts as a wildcard. + For example, to remove all statements about myURI: + <code>removeStatement(myURI, null, null)</code> + </p> + + @param Subject + the subject of the RDF triple. + + @param Predicate + the predicate of the RDF triple. + + @param Object + the object of the RDF triple. + + @throws com::sun::star::container::NoSuchElementException + if this graph does not exist in the repository any more + + @throws RepositoryException + if an error occurs when accessing the repository. + */ + void removeStatements([in] XResource Subject, + [in] XURI Predicate, + [in] XNode Object) + raises( com::sun::star::container::NoSuchElementException, + RepositoryException ); + + /** gets matching RDF statements from a graph. + + <p> + Note that the ODF elements that can have metadata attached all + implement the interface XMetadatable, which inherits + from XResource, meaning that you can simply pass them + in as arguments here, and it will magically work. + </p> + + <p> + Any parameter may be `NULL`, which acts as a wildcard. + For example, to get all statements about myURI: + <code>getStatements(myURI, null, null)</code> + </p> + + @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 graph that match + the parameters, represented as an + enumeration of Statement + + @throws com::sun::star::container::NoSuchElementException + if this graph does not exist in the repository any more + + @throws RepositoryException + if an error occurs when accessing the repository. + + @see Statement + */ + com::sun::star::container::XEnumeration/*<Statement>*/ getStatements( + [in] XResource Subject, + [in] XURI Predicate, + [in] XNode Object) + raises( com::sun::star::container::NoSuchElementException, + RepositoryException ); + +//FIXME reification: addReifiedStatement(Statement)... +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XNode.idl b/offapi/com/sun/star/rdf/XNode.idl new file mode 100644 index 000000000..a954965af --- /dev/null +++ b/offapi/com/sun/star/rdf/XNode.idl @@ -0,0 +1,68 @@ +/* -*- 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_XNode_idl__ +#define __com_sun_star_rdf_XNode_idl__ + +#include <com/sun/star/uno/XInterface.idl> + + + +module com { module sun { module star { module rdf { + +/** represents a node that may occur in a RDF graph. + + <p> + In the RDF data model, there are three distinct types of nodes: + URIs, blank nodes, and literals. + </p> + + <pre> + XNode + | + |---XLiteral + | + XResource + | + |---XBlankNode + | + XURI + </pre> + + @since OOo 3.0 + + @see XRepository + @see Statement + @see XResource + @see XBlankNode + @see XURI + @see XLiteral + */ +interface XNode +{ + /// the string value of the node. + [readonly, attribute] string StringValue; +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XQuerySelectResult.idl b/offapi/com/sun/star/rdf/XQuerySelectResult.idl new file mode 100644 index 000000000..52df495be --- /dev/null +++ b/offapi/com/sun/star/rdf/XQuerySelectResult.idl @@ -0,0 +1,64 @@ +/* -*- 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_XQuerySelectResult_idl__ +#define __com_sun_star_rdf_XQuerySelectResult_idl__ + +#include <com/sun/star/container/XEnumeration.idl> + + + +module com { module sun { module star { module rdf { + +/** represents the result of a SPARQL "SELECT" query. + + <p> + The result consists of: + <ol> + <li>a list of query variable names (column labels)</li> + <li>an iterator of query results (rows), + each being a list of bindings for the above variables</li> + </ol> + Note that each query result retrieved via + com::sun::star::container::XEnumeration::nextElement() + has the type XNode[], + the length of the sequence being the same as the number of query variables. + </p> + + @since OOo 3.0 + + @see XRepository::querySelect + @see XNode + */ +interface XQuerySelectResult : com::sun::star::container::XEnumeration +{ + /** get the names of the query variables. + + <p> + </p> + */ + sequence<string> getBindingNames(); +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XReifiedStatement.idl b/offapi/com/sun/star/rdf/XReifiedStatement.idl new file mode 100644 index 000000000..37dac62c5 --- /dev/null +++ b/offapi/com/sun/star/rdf/XReifiedStatement.idl @@ -0,0 +1,46 @@ +/* -*- 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_XReifiedStatement_idl__ +#define __com_sun_star_rdf_XReifiedStatement_idl__ + +#include <com/sun/star/rdf/Statement.idl> + + + +module com { module sun { module star { module rdf { + +/** represents a reified RDF statement. + + @since OOo 3.0 + + @see XRepository + */ +interface XReifiedStatement : XResource +{ + /// the statement that is reified + [readonly, attribute] Statement Statement; +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XRepository.idl b/offapi/com/sun/star/rdf/XRepository.idl new file mode 100644 index 000000000..a8cf4652c --- /dev/null +++ b/offapi/com/sun/star/rdf/XRepository.idl @@ -0,0 +1,393 @@ +/* -*- 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 <com/sun/star/lang/IllegalArgumentException.idl> +#include <com/sun/star/container/ElementExistException.idl> +#include <com/sun/star/container/NoSuchElementException.idl> +#include <com/sun/star/container/XEnumeration.idl> +#include <com/sun/star/io/IOException.idl> +#include <com/sun/star/io/XInputStream.idl> +#include <com/sun/star/io/XOutputStream.idl> +#include <com/sun/star/datatransfer/UnsupportedFlavorException.idl> +#include <com/sun/star/rdf/FileFormat.idl> +#include <com/sun/star/rdf/ParseException.idl> +#include <com/sun/star/rdf/QueryException.idl> +#include <com/sun/star/rdf/RepositoryException.idl> +#include <com/sun/star/rdf/XBlankNode.idl> +#include <com/sun/star/rdf/XURI.idl> +#include <com/sun/star/rdf/Statement.idl> +#include <com/sun/star/rdf/XQuerySelectResult.idl> +#include <com/sun/star/rdf/XNamedGraph.idl> + + + +module com { module sun { module star { module rdf { + +/** provides access to a set of named RDF graphs. + + <p> + A repository for storing information according to the data model of the + <a href="http://www.w3.org/RDF/">Resource Description Framework</a>. + 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. + </p> + <p> + The RDF triples are stored as a set of named RDF graphs. + Importing and exporting files in the + <a href="http://www.w3.org/TR/rdf-syntax-grammar/">RDF/XML</a> + format is supported. + Support for other file formats is optional. + Support for querying the repository with the + <a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL</a> + query language is provided. + </p> + + + @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. + + <p> + 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. + </p> + + @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. + + <p> + 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. + </p> + + @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<XURI> 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. + + <p> + The name must be unique within the repository. + </p> + + @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. + + <p> + This invalidates any instances of XNamedGraph + for the argument. + </p> + + @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. + + <p> + Any parameter may be `NULL`, which acts as a wildcard. + For example, to get all statements about myURI: + <code>getStatements(myURI, null, null)</code> + </p> + + @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/*<Statement>*/ getStatements( + [in] XResource Subject, + [in] XURI Predicate, + [in] XNode Object) + raises( RepositoryException ); + + + /** executes a SPARQL "SELECT" query. + + <p> + 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`. + </p> + + @param Query + the SPARQL query `string` + + @returns + an enumeration, containing + <ol> + <li>a list of query variable names (column labels)</li> + <li>the query results (rows), + each being a list of bindings for the above variables</li> + </ol> + + @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. + + <p> + This method runs a SPARQL query that constructs a result graph, + i.e., a query beginning with "CONSTRUCT". + </p> + + @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/*<Statement>*/ queryConstruct( + [in] string Query) + raises( QueryException, + RepositoryException ); + + /** executes a SPARQL "ASK" query. + + <p> + This method runs a SPARQL query that computes a boolean, + i.e., a query beginning with "ASK". + </p> + + @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: */ diff --git a/offapi/com/sun/star/rdf/XRepositorySupplier.idl b/offapi/com/sun/star/rdf/XRepositorySupplier.idl new file mode 100644 index 000000000..6218385f8 --- /dev/null +++ b/offapi/com/sun/star/rdf/XRepositorySupplier.idl @@ -0,0 +1,51 @@ +/* -*- 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_XRepositorySupplier_idl__ +#define __com_sun_star_rdf_XRepositorySupplier_idl__ + +#include <com/sun/star/rdf/XRepository.idl> + + + +module com { module sun { module star { module rdf { + +/** provides access to an RDF Repository. + + @since OOo 3.0 + + @see XRepository + */ +interface XRepositorySupplier +{ + /** provides the RDF Repository associated with this object. + + @returns + an object of type XRepository + */ + XRepository getRDFRepository(); + +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XResource.idl b/offapi/com/sun/star/rdf/XResource.idl new file mode 100644 index 000000000..eeb5c638b --- /dev/null +++ b/offapi/com/sun/star/rdf/XResource.idl @@ -0,0 +1,50 @@ +/* -*- 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_XResource_idl__ +#define __com_sun_star_rdf_XResource_idl__ + +#include <com/sun/star/rdf/XNode.idl> + + + +module com { module sun { module star { module rdf { + +/** represents a resource node that may occur in a RDF graph. + + <p> + Note that this interface exists only to separate resources from literals. + </p> + + @since OOo 3.0 + + @see XRepository + @see XBlankNode + @see XURI + */ +interface XResource : XNode +{ +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/rdf/XURI.idl b/offapi/com/sun/star/rdf/XURI.idl new file mode 100644 index 000000000..5386186d9 --- /dev/null +++ b/offapi/com/sun/star/rdf/XURI.idl @@ -0,0 +1,66 @@ +/* -*- 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_XURI_idl__ +#define __com_sun_star_rdf_XURI_idl__ + +#include <com/sun/star/rdf/XResource.idl> + + + +module com { module sun { module star { module rdf { + +/** represents a URI node that may occur in a RDF graph. + + <p> + Note that this is actually an IRI, but the RDF literature speaks of URIs + only, so we chose to use established terminology. + </p> + + <p> + The URI is split into a Namespace and a LocalName, + using the first applicable of the following criteria: + <ol> + <li>after the first occurrence of the fragment separator: "#"</li> + <li>after the last occurrence of the path separator: "/"</li> + <li>after the last occurrence of the scheme separator: ":"</li> + </ol> + A URI without a ":" is invalid. + This implies that the Namespace part of a URI must not be empty, while + the LocalName part may be empty. + </p> + + @since OOo 3.0 + + @see XRepository + */ +interface XURI : XResource +{ + /// prefix + [readonly, attribute] string Namespace; + /// suffix + [readonly, attribute] string LocalName; +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |