/************************************************************** * * 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 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef __com_sun_star_rdf_XDocumentRepository_idl__ #define __com_sun_star_rdf_XDocumentRepository_idl__ #ifndef __com_sun_star_beans_Pair_idl__ #include <com/sun/star/beans/Pair.idl> #endif #ifndef __com_sun_star_rdf_XMetadatable_idl__ #include <com/sun/star/rdf/XMetadatable.idl> #endif #ifndef __com_sun_star_rdf_XRepository_idl__ #include <com/sun/star/rdf/XRepository.idl> #endif //============================================================================= module com { module sun { module star { module rdf { //============================================================================= /** extends <type>XRepository</type> with document-specific functionality. <p> This subclass of <type>XRepository</type> 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 <atom>string</atom>, 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 <atom>string</atom>, 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 <member>XNamedGraph::addStatement</member> would be ambiguous: if the object is a <type>XMetadatable</type>, 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 <atom>string</atom>). @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 <member>XNamedGraph::getStatements</member>. </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 <type>Statement</type> @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