The RDF service interface. This is a singleton object which should be
obtained from the nsServiceManager
.
Construct an RDF resource from a single-byte URI. nsIRDFService
caches resources that are in-use, so multiple calls to GetResource()
for the same uri
will return identical pointers. FindResource
is used to find out whether there already exists a resource corresponding to that url.
Construct an RDF resource from a Unicode URI. This is provided
as a convenience method, allowing automatic, in-line C++
conversion from nsString
objects. The uri
will
be converted to a single-byte representation internally.
Construct an RDF literal from a Unicode string.
Construct an RDF literal from a PRTime.
Construct an RDF literal from an int.
Construct an RDF literal from a data blob
Registers a resource with the RDF system, making it unique w.r.t.
GetResource.
An implementation of nsIRDFResource should call this in its
Init() method if it wishes the resource to be globally unique
(which is usually the case).
@note that the resource will not be ref-counted by the
RDF service: the assumption is that the resource implementation
will call nsIRDFService::UnregisterResource() when the last
reference to the resource is released.
@note that the nsIRDFService implementation may choose to
maintain a reference to the resource’s URI; therefore, the
resource implementation should ensure that the resource’s URI
(accessible via nsIRDFResource::GetValue(const char* *aURI)) is
valid before calling RegisterResource(). Furthermore, the
resource implementation should ensure that this pointer
remains valid for the lifetime of the resource. (The
implementation of the resource cache in nsIRDFService uses the
URI maintained “internally” in the resource as a key into the
cache rather than copying the resource URI itself.)
Called to notify the resource manager that a resource is no
longer in use. This method should only be called from the
destructor of a “custom” resource implementation to notify the
RDF service that the last reference to the resource has been
released, so the resource is no longer valid.
@note As mentioned in nsIRDFResourceFactory::CreateResource(),
the RDF service will use the result of
nsIRDFResource::GetValue() as a key into its cache. For this
reason, you must always un-cache the resource before
releasing the storage for the const char*
URI.
Register a named data source. The RDF service will call
nsIRDFDataSource::GetURI()
to determine the URI under
which to register the data source.
@note that the data source will not be refcounted by the
RDF service! The assumption is that an RDF data source
registers with the service once it is initialized (via
nsIRDFDataSource::Init()
), and unregisters when the
last reference to the data source is released.
Unregister a named data source. The RDF service will call
nsIRDFDataSource::GetURI()
to determine the URI under which the
data source was registered.
Get the named data source corresponding to the URI. If a data
source has been registered via RegisterDataSource()
, that
data source will be returned.
If no data source is currently
registered for the specified URI, and a data source constructor
function has been registered via RegisterDatasourceConstructor()
,
the RDF service will call the constructor to attempt to construct a
new data source. If construction is successful, the data source will
be initialized via nsIRDFDataSource::Init()
.
Same as GetDataSource, but if a remote/XML data source needs to be
constructed, then this method will issue a blocking Refresh
call on that data source.