1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rdf_XNamedGraph_idl__
25*b1cdbd2cSJim Jagielski#define __com_sun_star_rdf_XNamedGraph_idl__
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
28*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/IllegalArgumentException.idl>
29*b1cdbd2cSJim Jagielski#endif
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_container_NoSuchElementException_idl__
32*b1cdbd2cSJim Jagielski#include <com/sun/star/container/NoSuchElementException.idl>
33*b1cdbd2cSJim Jagielski#endif
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_container_XEnumeration_idl__
36*b1cdbd2cSJim Jagielski#include <com/sun/star/container/XEnumeration.idl>
37*b1cdbd2cSJim Jagielski#endif
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rdf_RepositoryException_idl__
40*b1cdbd2cSJim Jagielski#include <com/sun/star/rdf/RepositoryException.idl>
41*b1cdbd2cSJim Jagielski#endif
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rdf_XURI_idl__
44*b1cdbd2cSJim Jagielski#include <com/sun/star/rdf/XURI.idl>
45*b1cdbd2cSJim Jagielski#endif
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski//=============================================================================
49*b1cdbd2cSJim Jagielski
50*b1cdbd2cSJim Jagielskimodule com {   module sun {   module star {   module rdf {
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski//=============================================================================
53*b1cdbd2cSJim Jagielski/** represents an RDF named graph that is stored in an RDF Repository.
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielski    <p>
56*b1cdbd2cSJim Jagielski    Note that this interface inherits from <type>XResource</type>: the
57*b1cdbd2cSJim Jagielski    name of the graph is the string value of the RDF node.
58*b1cdbd2cSJim Jagielski    This is so that you can easily make RDF statements about named graphs.
59*b1cdbd2cSJim Jagielski    </p>
60*b1cdbd2cSJim Jagielski
61*b1cdbd2cSJim Jagielski    <p>
62*b1cdbd2cSJim Jagielski    Note that instances may be destroyed via
63*b1cdbd2cSJim Jagielski    <member>XRepository::destroyGraph</member>.
64*b1cdbd2cSJim Jagielski    If a graph is destroyed, subsequent calls to <member>addStatement</member>,
65*b1cdbd2cSJim Jagielski    <member>removeStatements</member> will fail with an
66*b1cdbd2cSJim Jagielski    <type scope="com::sun::star::container">NoSuchElementException</type>.
67*b1cdbd2cSJim Jagielski    </p>
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski    @since OpenOffice 3.2
70*b1cdbd2cSJim Jagielski
71*b1cdbd2cSJim Jagielski    @see XRepository
72*b1cdbd2cSJim Jagielski */
73*b1cdbd2cSJim Jagielskiinterface XNamedGraph : XURI
74*b1cdbd2cSJim Jagielski{
75*b1cdbd2cSJim Jagielski
76*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
77*b1cdbd2cSJim Jagielski    /** returns the name of the graph.
78*b1cdbd2cSJim Jagielski
79*b1cdbd2cSJim Jagielski        <p>
80*b1cdbd2cSJim Jagielski        The name is unique within the repository.
81*b1cdbd2cSJim Jagielski        </p>
82*b1cdbd2cSJim Jagielski
83*b1cdbd2cSJim Jagielski        @returns
84*b1cdbd2cSJim Jagielski            the name of the graph
85*b1cdbd2cSJim Jagielski     */
86*b1cdbd2cSJim Jagielski    XURI getName();
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
89*b1cdbd2cSJim Jagielski    /** removes all statements from the graph.
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski        @throws com::sun::star::container::NoSuchElementException
92*b1cdbd2cSJim Jagielski            if this graph does not exist in the repository any more
93*b1cdbd2cSJim Jagielski
94*b1cdbd2cSJim Jagielski        @throws RepositoryException
95*b1cdbd2cSJim Jagielski            if an error occurs when accessing the repository.
96*b1cdbd2cSJim Jagielski     */
97*b1cdbd2cSJim Jagielski    void clear()
98*b1cdbd2cSJim Jagielski        raises( com::sun::star::container::NoSuchElementException,
99*b1cdbd2cSJim Jagielski                RepositoryException );
100*b1cdbd2cSJim Jagielski
101*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
102*b1cdbd2cSJim Jagielski    /** adds a RDF statement to the graph.
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielski        <p>
105*b1cdbd2cSJim Jagielski        Note that the ODF elements that can have metadata attached all
106*b1cdbd2cSJim Jagielski        implement the interface <type>XMetadatable</type>, which inherits
107*b1cdbd2cSJim Jagielski        from <type>XResource</type>, meaning that you can simply pass them
108*b1cdbd2cSJim Jagielski        in as arguments here, and it will magically work.
109*b1cdbd2cSJim Jagielski        </p>
110*b1cdbd2cSJim Jagielski
111*b1cdbd2cSJim Jagielski        @param Subject
112*b1cdbd2cSJim Jagielski            the subject of the RDF triple.
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski        @param Predicate
115*b1cdbd2cSJim Jagielski            the predicate of the RDF triple.
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski        @param Object
118*b1cdbd2cSJim Jagielski            the object of the RDF triple.
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
121*b1cdbd2cSJim Jagielski            if any parameter is <NULL/>
122*b1cdbd2cSJim Jagielski
123*b1cdbd2cSJim Jagielski        @throws com::sun::star::container::NoSuchElementException
124*b1cdbd2cSJim Jagielski            if this graph does not exist in the repository any more
125*b1cdbd2cSJim Jagielski
126*b1cdbd2cSJim Jagielski        @throws RepositoryException
127*b1cdbd2cSJim Jagielski            if an error occurs when accessing the repository.
128*b1cdbd2cSJim Jagielski     */
129*b1cdbd2cSJim Jagielski    void addStatement([in] XResource Subject,
130*b1cdbd2cSJim Jagielski            [in] XURI Predicate,
131*b1cdbd2cSJim Jagielski            [in] XNode Object)
132*b1cdbd2cSJim Jagielski        raises( com::sun::star::lang::IllegalArgumentException,
133*b1cdbd2cSJim Jagielski                com::sun::star::container::NoSuchElementException,
134*b1cdbd2cSJim Jagielski                RepositoryException );
135*b1cdbd2cSJim Jagielski
136*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
137*b1cdbd2cSJim Jagielski    /** removes matching RDF statements from the graph.
138*b1cdbd2cSJim Jagielski
139*b1cdbd2cSJim Jagielski        <p>
140*b1cdbd2cSJim Jagielski        Note that the ODF elements that can have metadata attached all
141*b1cdbd2cSJim Jagielski        implement the interface <type>XMetadatable</type>, which inherits
142*b1cdbd2cSJim Jagielski        from <type>XResource</type>, meaning that you can simply pass them
143*b1cdbd2cSJim Jagielski        in as arguments here, and it will magically work.
144*b1cdbd2cSJim Jagielski        </p>
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski        <p>
147*b1cdbd2cSJim Jagielski        Any parameter may be <NULL/>, which acts as a wildcard.
148*b1cdbd2cSJim Jagielski        For example, to remove all statements about myURI:
149*b1cdbd2cSJim Jagielski        <code>removeStatement(myURI, null, null)</code>
150*b1cdbd2cSJim Jagielski        </p>
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski        @param Subject
153*b1cdbd2cSJim Jagielski            the subject of the RDF triple.
154*b1cdbd2cSJim Jagielski
155*b1cdbd2cSJim Jagielski        @param Predicate
156*b1cdbd2cSJim Jagielski            the predicate of the RDF triple.
157*b1cdbd2cSJim Jagielski
158*b1cdbd2cSJim Jagielski        @param Object
159*b1cdbd2cSJim Jagielski            the object of the RDF triple.
160*b1cdbd2cSJim Jagielski
161*b1cdbd2cSJim Jagielski        @throws com::sun::star::container::NoSuchElementException
162*b1cdbd2cSJim Jagielski            if this graph does not exist in the repository any more
163*b1cdbd2cSJim Jagielski
164*b1cdbd2cSJim Jagielski        @throws RepositoryException
165*b1cdbd2cSJim Jagielski            if an error occurs when accessing the repository.
166*b1cdbd2cSJim Jagielski     */
167*b1cdbd2cSJim Jagielski    void removeStatements([in] XResource Subject,
168*b1cdbd2cSJim Jagielski            [in] XURI Predicate,
169*b1cdbd2cSJim Jagielski            [in] XNode Object)
170*b1cdbd2cSJim Jagielski        raises( com::sun::star::container::NoSuchElementException,
171*b1cdbd2cSJim Jagielski                RepositoryException );
172*b1cdbd2cSJim Jagielski
173*b1cdbd2cSJim Jagielski    //-------------------------------------------------------------------------
174*b1cdbd2cSJim Jagielski    /** gets matching RDF statements from a graph.
175*b1cdbd2cSJim Jagielski
176*b1cdbd2cSJim Jagielski        <p>
177*b1cdbd2cSJim Jagielski        Note that the ODF elements that can have metadata attached all
178*b1cdbd2cSJim Jagielski        implement the interface <type>XMetadatable</type>, which inherits
179*b1cdbd2cSJim Jagielski        from <type>XResource</type>, meaning that you can simply pass them
180*b1cdbd2cSJim Jagielski        in as arguments here, and it will magically work.
181*b1cdbd2cSJim Jagielski        </p>
182*b1cdbd2cSJim Jagielski
183*b1cdbd2cSJim Jagielski        <p>
184*b1cdbd2cSJim Jagielski        Any parameter may be <NULL/>, which acts as a wildcard.
185*b1cdbd2cSJim Jagielski        For example, to get all statements about myURI:
186*b1cdbd2cSJim Jagielski        <code>getStatements(myURI, null, null)</code>
187*b1cdbd2cSJim Jagielski        </p>
188*b1cdbd2cSJim Jagielski
189*b1cdbd2cSJim Jagielski        @param Subject
190*b1cdbd2cSJim Jagielski            the subject of the RDF triple.
191*b1cdbd2cSJim Jagielski
192*b1cdbd2cSJim Jagielski        @param Predicate
193*b1cdbd2cSJim Jagielski            the predicate of the RDF triple.
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski        @param Object
196*b1cdbd2cSJim Jagielski            the object of the RDF triple.
197*b1cdbd2cSJim Jagielski
198*b1cdbd2cSJim Jagielski        @returns
199*b1cdbd2cSJim Jagielski            an iterator over all RDF statements in the graph that match
200*b1cdbd2cSJim Jagielski            the parameters, represented as an
201*b1cdbd2cSJim Jagielski            enumeration of <type>Statement</type>
202*b1cdbd2cSJim Jagielski
203*b1cdbd2cSJim Jagielski        @throws com::sun::star::container::NoSuchElementException
204*b1cdbd2cSJim Jagielski            if this graph does not exist in the repository any more
205*b1cdbd2cSJim Jagielski
206*b1cdbd2cSJim Jagielski        @throws RepositoryException
207*b1cdbd2cSJim Jagielski            if an error occurs when accessing the repository.
208*b1cdbd2cSJim Jagielski
209*b1cdbd2cSJim Jagielski        @see Statement
210*b1cdbd2cSJim Jagielski     */
211*b1cdbd2cSJim Jagielski    com::sun::star::container::XEnumeration/*<Statement>*/ getStatements(
212*b1cdbd2cSJim Jagielski            [in] XResource Subject,
213*b1cdbd2cSJim Jagielski            [in] XURI Predicate,
214*b1cdbd2cSJim Jagielski            [in] XNode Object)
215*b1cdbd2cSJim Jagielski        raises( com::sun::star::container::NoSuchElementException,
216*b1cdbd2cSJim Jagielski                RepositoryException );
217*b1cdbd2cSJim Jagielski
218*b1cdbd2cSJim Jagielski//FIXME reification: addReifiedStatement(Statement)...
219*b1cdbd2cSJim Jagielski};
220*b1cdbd2cSJim Jagielski
221*b1cdbd2cSJim Jagielski//=============================================================================
222*b1cdbd2cSJim Jagielski
223*b1cdbd2cSJim Jagielski}; }; }; };
224*b1cdbd2cSJim Jagielski
225*b1cdbd2cSJim Jagielski#endif
226