diff options
Diffstat (limited to 'rdf/base/nsIRDFDataSource.idl')
-rw-r--r-- | rdf/base/nsIRDFDataSource.idl | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/rdf/base/nsIRDFDataSource.idl b/rdf/base/nsIRDFDataSource.idl new file mode 100644 index 000000000..2915425c8 --- /dev/null +++ b/rdf/base/nsIRDFDataSource.idl @@ -0,0 +1,181 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* 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/. */ + +#include "nsISupports.idl" +#include "nsIRDFResource.idl" +#include "nsIRDFNode.idl" +#include "nsISimpleEnumerator.idl" +#include "nsIRDFObserver.idl" + +[scriptable, uuid(0F78DA58-8321-11d2-8EAC-00805F29F370)] +interface nsIRDFDataSource : nsISupports +{ + /** The "URI" of the data source. This used by the RDF service's + * |GetDataSource()| method to cache datasources. + */ + readonly attribute string URI; + + /** Find an RDF resource that points to a given node over the + * specified arc & truth value + * + * @throws NS_RDF_NO_VALUE if there is no source that leads + * to the target with the specified property. + */ + nsIRDFResource GetSource(in nsIRDFResource aProperty, + in nsIRDFNode aTarget, + in boolean aTruthValue); + + /** + * Find all RDF resources that point to a given node over the + * specified arc & truth value + */ + nsISimpleEnumerator GetSources(in nsIRDFResource aProperty, + in nsIRDFNode aTarget, + in boolean aTruthValue); + + /** + * Find a child of that is related to the source by the given arc + * arc and truth value + * + * @throws NS_RDF_NO_VALUE if there is no target accessible from the + * source via the specified property. + */ + nsIRDFNode GetTarget(in nsIRDFResource aSource, + in nsIRDFResource aProperty, + in boolean aTruthValue); + + /** + * Find all children of that are related to the source by the given arc + * arc and truth value. + */ + nsISimpleEnumerator GetTargets(in nsIRDFResource aSource, + in nsIRDFResource aProperty, + in boolean aTruthValue); + + /** + * Add an assertion to the graph. + */ + void Assert(in nsIRDFResource aSource, + in nsIRDFResource aProperty, + in nsIRDFNode aTarget, + in boolean aTruthValue); + + /** + * Remove an assertion from the graph. + */ + void Unassert(in nsIRDFResource aSource, + in nsIRDFResource aProperty, + in nsIRDFNode aTarget); + + /** + * Change an assertion from + * + * [aSource]--[aProperty]-->[aOldTarget] + * + * to + * + * [aSource]--[aProperty]-->[aNewTarget] + */ + void Change(in nsIRDFResource aSource, + in nsIRDFResource aProperty, + in nsIRDFNode aOldTarget, + in nsIRDFNode aNewTarget); + + /** + * 'Move' an assertion from + * + * [aOldSource]--[aProperty]-->[aTarget] + * + * to + * + * [aNewSource]--[aProperty]-->[aTarget] + */ + void Move(in nsIRDFResource aOldSource, + in nsIRDFResource aNewSource, + in nsIRDFResource aProperty, + in nsIRDFNode aTarget); + + /** + * Query whether an assertion exists in this graph. + */ + boolean HasAssertion(in nsIRDFResource aSource, + in nsIRDFResource aProperty, + in nsIRDFNode aTarget, + in boolean aTruthValue); + + /** + * Add an observer to this data source. If the datasource + * supports observers, the datasource source should hold a strong + * reference to the observer. + */ + void AddObserver(in nsIRDFObserver aObserver); + + /** + * Remove an observer from this data source. + */ + void RemoveObserver(in nsIRDFObserver aObserver); + + /** + * Get a cursor to iterate over all the arcs that point into a node. + */ + nsISimpleEnumerator ArcLabelsIn(in nsIRDFNode aNode); + + /** + * Get a cursor to iterate over all the arcs that originate in + * a resource. + */ + nsISimpleEnumerator ArcLabelsOut(in nsIRDFResource aSource); + + /** + * Retrieve all of the resources that the data source currently + * refers to. + */ + nsISimpleEnumerator GetAllResources(); + + /** + * Returns whether a given command is enabled for a set of sources. + */ + boolean IsCommandEnabled(in nsISupports aSources, + in nsIRDFResource aCommand, + in nsISupports aArguments); + + /** + * Perform the specified command on set of sources. + */ + void DoCommand(in nsISupports aSources, + in nsIRDFResource aCommand, + in nsISupports aArguments); + + /** + * Returns the set of all commands defined for a given source. + */ + nsISimpleEnumerator GetAllCmds(in nsIRDFResource aSource); + + /** + * Returns true if the specified node is pointed to by the specified arc. + * Equivalent to enumerating ArcLabelsIn and comparing for the specified arc. + */ + boolean hasArcIn(in nsIRDFNode aNode, in nsIRDFResource aArc); + + /** + * Returns true if the specified node has the specified outward arc. + * Equivalent to enumerating ArcLabelsOut and comparing for the specified arc. + */ + boolean hasArcOut(in nsIRDFResource aSource, in nsIRDFResource aArc); + + /** + * Notify observers that the datasource is about to send several + * notifications at once. + * This must be followed by calling endUpdateBatch(), otherwise + * viewers will get out of sync. + */ + void beginUpdateBatch(); + + /** + * Notify observers that the datasource has completed issuing + * a notification group. + */ + void endUpdateBatch(); +}; |