summaryrefslogtreecommitdiffstats
path: root/offapi/com/sun/star/rdf
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:06:44 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:06:44 +0000
commited5640d8b587fbcfed7dd7967f3de04b37a76f26 (patch)
tree7a5f7c6c9d02226d7471cb3cc8fbbf631b415303 /offapi/com/sun/star/rdf
parentInitial commit. (diff)
downloadlibreoffice-upstream/4%7.4.7.tar.xz
libreoffice-upstream/4%7.4.7.zip
Adding upstream version 4:7.4.7.upstream/4%7.4.7upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--offapi/com/sun/star/rdf/BlankNode.idl67
-rw-r--r--offapi/com/sun/star/rdf/FileFormat.idl73
-rw-r--r--offapi/com/sun/star/rdf/Literal.idl75
-rw-r--r--offapi/com/sun/star/rdf/ParseException.idl43
-rw-r--r--offapi/com/sun/star/rdf/QueryException.idl44
-rw-r--r--offapi/com/sun/star/rdf/Repository.idl49
-rw-r--r--offapi/com/sun/star/rdf/RepositoryException.idl44
-rw-r--r--offapi/com/sun/star/rdf/Statement.idl52
-rw-r--r--offapi/com/sun/star/rdf/URI.idl85
-rw-r--r--offapi/com/sun/star/rdf/URIs.idl333
-rw-r--r--offapi/com/sun/star/rdf/XBlankNode.idl49
-rw-r--r--offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl397
-rw-r--r--offapi/com/sun/star/rdf/XDocumentRepository.idl222
-rw-r--r--offapi/com/sun/star/rdf/XLiteral.idl61
-rw-r--r--offapi/com/sun/star/rdf/XMetadatable.idl87
-rw-r--r--offapi/com/sun/star/rdf/XNamedGraph.idl201
-rw-r--r--offapi/com/sun/star/rdf/XNode.idl68
-rw-r--r--offapi/com/sun/star/rdf/XQuerySelectResult.idl64
-rw-r--r--offapi/com/sun/star/rdf/XReifiedStatement.idl46
-rw-r--r--offapi/com/sun/star/rdf/XRepository.idl393
-rw-r--r--offapi/com/sun/star/rdf/XRepositorySupplier.idl51
-rw-r--r--offapi/com/sun/star/rdf/XResource.idl50
-rw-r--r--offapi/com/sun/star/rdf/XURI.idl66
23 files changed, 2620 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..bfc8672d4
--- /dev/null
+++ b/offapi/com/sun/star/rdf/URIs.idl
@@ -0,0 +1,333 @@
+/* -*- 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;
+
+ /** custom shading color of an annotated text range or metadata field
+ (replacement of the default field shading color)
+
+ urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0odf#shading
+
+ @since LibreOffice 7.2
+ */
+ const short LO_EXT_SHADING = 2106;
+};
+
+
+}; }; }; };
+
+#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: */