rv = gRDFService->GetResource(propertyStr, getter_AddRefs(property));
rv = gRDFService->GetUnicodeResource(ns.GetUnicode(), getter_AddRefs(property));
RDFContentSinkImpl::OpenProperty(const nsIParserNode& aNode){    nsresult rv;    // an "object" non-terminal is either a "description", a "typed    // node", or a "container", so this change the content sink's    // state appropriately.    const char* nameSpaceURI;    nsCOMPtr<nsIAtom> tag;    ParseTagString(aNode.GetText(), &nameSpaceURI, getter_AddRefs(tag));    nsCAutoString propertyStr(nameSpaceURI);    const PRUnichar *attrName;    tag->GetUnicode(&attrName);    propertyStr += NS_ConvertUCS2toUTF8(attrName);    nsCOMPtr<nsIRDFResource> property;    rv = gRDFService->GetResource(propertyStr, getter_AddRefs(property));    if (NS_FAILED(rv)) return rv;    // See if they've specified a 'resource' attribute, in which case    // they mean *that* to be the object of this property.    nsCOMPtr<nsIRDFResource> target;    GetResourceAttribute(aNode, getter_AddRefs(target));    PRBool isAnonymous = PR_FALSE;    if (! target) {        // See if an 'ID' attribute has been specified, in which case        // this corresponds to the fourth form of [6.12].        // XXX strictly speaking, we should reject the RDF/XML as        // invalid if they've specified both an 'ID' and a 'resource'        // attribute. Bah.        // XXX strictly speaking, 'about=' isn't allowed here, but        // what the hell.        GetIdAboutAttribute(aNode, getter_AddRefs(target), &isAnonymous);    }    if (target) {        // They specified an inline resource for the value of this        // property. Create an RDF resource for the inline resource        // URI, add the properties to it, and attach the inline        // resource to its parent.        PRInt32 count;        rv = AddProperties(aNode, target, &count);        NS_ASSERTION(NS_SUCCEEDED(rv), "problem adding properties");        if (NS_FAILED(rv)) return rv;        if (count || !isAnonymous) {            // If the resource was "anonymous" (i.e., they hadn't            // explicitly set an ID or resource attribute), then we'll            // only assert this property from the context element *if*            // there were properties specified on the anonymous            // resource.            rv = mDataSource->Assert(GetContextElement(0), property, target, PR_TRUE);            if (NS_FAILED(rv)) return rv;        }        // XXX Technically, we should _not_ fall through here and push        // the element onto the stack: this is supposed to be a closed        // node. But right now I'm lazy and the code will just Do The        // Right Thing so long as the RDF is well-formed.    }    // Push the element onto the context stack and change state.    PushContext(property, mState);    mState = eRDFContentSinkState_InPropertyElement;    return NS_OK;}