class ActiveFedora::RDFXMLWriter
def subject_not_done(subject, parent_node)
def subject_not_done(subject, parent_node) subject_done(subject) properties = @graph.properties(subject) add_debug {"subject: #{subject.inspect}, props: #{properties.inspect}"} @graph.query(:subject => subject).each do |st| raise RDF::WriterError, "Illegal use of predicate #{st.predicate.inspect}, not supported in RDF/XML" unless st.predicate.uri? end prop_list = order_properties(properties) add_debug {"=> property order: #{prop_list.to_sentence}"} qname = "rdf:Description" prefixes[:rdf] = RDF.to_uri node = Nokogiri::XML::Element.new(qname, parent_node.document) if subject.is_a?(RDF::Node) # Only need nodeID if it's referenced elsewhere if ref_count(subject) > (@depth == 0 ? 0 : 1) node["rdf:nodeID"] = subject.id else node.add_child(Nokogiri::XML::Comment.new(node.document, "Serialization for #{subject}")) if RDF::RDFXML::debug? end else node["rdf:about"] = relativize(subject) end prop_list.each do |prop| prop_ref = RDF::URI.intern(prop) properties[prop].each do |object| raise RDF::WriterError, "Illegal use of object #{object.inspect}, not supported in RDF/XML" unless object.resource? || object.literal? @depth += 1 predicate(prop_ref, object, node, properties[prop].length == 1) @depth -= 1 end end node end