summaryrefslogtreecommitdiffstats
path: root/offapi/com/sun/star/rdf/XDocumentRepository.idl
diff options
context:
space:
mode:
Diffstat (limited to 'offapi/com/sun/star/rdf/XDocumentRepository.idl')
-rw-r--r--offapi/com/sun/star/rdf/XDocumentRepository.idl222
1 files changed, 222 insertions, 0 deletions
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: */