From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- offapi/com/sun/star/rdf/XDocumentRepository.idl | 222 ++++++++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 offapi/com/sun/star/rdf/XDocumentRepository.idl (limited to 'offapi/com/sun/star/rdf/XDocumentRepository.idl') 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 +#include +#include + + + +module com { module sun { module star { module rdf { + +/** extends XRepository with document-specific functionality. + +

+ 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. +

+ + @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. + +

+ This method will do the following steps: +

    +
  1. Remove all previously set RDFa statements for the Object parameter + from the repository
  2. +
  3. 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: +
      +
    • Subject Predicate + XLiteral(Object->getText()^^RDFaDatatype)
    • +
    +
  4. +
  5. 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: +
      +
    • + Subject Predicate XLiteral(RDFaContent^^RDFaDatatype) +
    • +
    +
  6. +
+

+ +

+ 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)? +

+ + @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 rdfa:content attribute (may be the empty + `string`). + + @param RDFaDatatype + the rdfa:datatype 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 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. + +

+ RDFa statements are handled specially because they are not logically + part of any graph. +

+ + @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 +
    +
  • if the element has no RDFa meta-data attributes: + the empty sequence.
  • +
  • if the element has RDFa meta-data attributes: +
      +
    • a sequence with the RDFa-statements corresponding to the + attributes.
    • +
    • a flag indicating whether there is a xhtml:content + attribute.
    • +
    +
  • +
+ + @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, boolean > + getStatementRDFa([in] XMetadatable Element) + raises( com::sun::star::lang::IllegalArgumentException, + RepositoryException ); + + /** gets matching RDFa statements from the repository. + +

+ This method exists because RDFa statements are not part of any named + graph, and thus they cannot be enumerated with + XNamedGraph::getStatements(). +

+ +

+ Any parameter may be `NULL`, which acts as a wildcard. + For example, to get all statements about myURI: + getStatementsRDFa(myURI, null, null) +

+ + @param Subject + the subject of the RDF triple. + + @param Predicate + the predicate of the RDF triple. + + @param Object + the object of the RDF triple. + + @returns + an iterator over all 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/**/ getStatementsRDFa( + [in] XResource Subject, + [in] XURI Predicate, + [in] XNode Object) + raises( RepositoryException ); + +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3