def test_specific_target_datastream(self): should_be = """ <foxml:datastream ID="specifictarget" FEDORA_URI="info:fedora/1/specifictarget" STATE="A" CONTROL_GROUP="M"> <foxml:datastreamVersion ID="specifictarget.0" LABEL="SpecificTarget data for OAC annotation" MIMETYPE="application/rdf+xml"> <foxml:xmlContent> <rdf:RDF> <rdf:Description rdf:about="info:fedora/1/SpecificTarget"> <rdf:type rdf:resource="oa:SpecificResource"/> <oa:hasSource rdf:resource="source:2"/> <oax:hasStyle rdf:resource="style:3"/> <oa:hasSelector rdf:resource="info:fedora/1/selector"/> </rdf:Description> </rdf:RDF> </foxml:xmlContent> </foxml:datastreamVersion> </foxml:datastream> """ ele = Foxml.get_specific_target_rdf_element(pid="1", source_uri="source:2", oax_style_uri="style:3") ds = Foxml.get_xml_datastream( element=ele, id="specifictarget", mime="application/rdf+xml", label="SpecificTarget data for OAC annotation", fedora_uri="info:fedora/1/specifictarget", )
def build_annotation(self): self._annotation_pid = Fedora.get_pid() foxml = Foxml(pid=self._annotation_pid) self._annotation_uri = "info:fedora/%s" % self._annotation_pid # Object Properties foxml.create_object_properties() # Dublin Core Datastream dc_uri = "%s/DC" % self._annotation_uri dublin_core = Foxml.get_dublin_core_element(pid=self._annotation_pid, title=self._dc_title) foxml.create_xml_datastream( element=dublin_core, id="DC", version_id="DC1", mime="text/xml", label="Dublin Core Record for this object", fedora_uri=dc_uri, format_uri="http://www.openarchives.org/OAI/2.0/oai_dc/", ) # Inline Body Datastream self.body_inline_rdf_element = None if self._body_inline is not None: self._body_uri = "%s/inlinebody" % self._annotation_uri self.body_inline_rdf_element = Foxml.get_body_inline_rdf_element( pid=self._annotation_pid, body_uri=self._body_uri, body_inline=self._body_inline ) foxml.create_xml_datastream( element=self.body_inline_rdf_element, id="inlinebody", mime="application/rdf+xml", label="Inline Body for OAC annotation", fedora_uri=self._body_uri, ) # Annotation Datastream anno_uri = "%s/annotation" % self._annotation_uri self.annotation_rdf = Foxml.get_annotation_rdf_element( pid=self._annotation_pid, body_uri=self._body_uri, oa_selector=self._oa_selector, body_mimetype=self._body_mimetype, annotated=self._annotated, generator=self._generator, annotator=self._annotator, ) foxml.create_xml_datastream( element=self.annotation_rdf, id="annotation", mime="application/rdf+xml", label="OAC annotation core", fedora_uri=anno_uri, ) # RELS-EXT Datastream # This 'get' should never fall back to '' because there is a default annotation content model ('oac:oa-annotation') oac_model = app.config.get("DEFUALT_ANNOTATION_CONTENT_MODEL", "") # The PID of the SDef object for Annotation Serialization # This is not required by Fedora so it was removed. # serialization_service = "oac-sdef:serialize" # self.rels_ext_rdf_element = Foxml.get_rels_ext_model_element(pid=self._annotation_pid, # models=[oac_model], # services=[serialization_service]) self.rels_ext_rdf_element = Foxml.get_rels_ext_model_element(pid=self._annotation_pid, models=[oac_model]) foxml.create_xml_datastream( element=self.rels_ext_rdf_element, id="RELS-EXT", mime="application/rdf+xml", label="RDF Statements about this object", format_uri="info:fedora/fedora-system:FedoraRELSExt-1.0", ) self.specific_target_rdf_element = None self.selector_rdf_element = None if self._oa_selector is not None: # SpecificTarget Datastream sptg_uri = "%s/specifictarget" % self._annotation_uri self.specific_target_rdf_element = Foxml.get_specific_target_rdf_element( pid=self._annotation_pid, source_uri=self._source_uri, oax_style_uri=self._oax_style_uri ) foxml.create_xml_datastream( element=self.specific_target_rdf_element, id="specifictarget", mime="application/rdf+xml", label="SpecificTarget data for OAC annotation", fedora_uri=sptg_uri, ) # Selector Datastream sele_uri = "%s/selector" % self._annotation_uri self.selector_rdf_element = Foxml.get_selector_rdf_element( pid=self._annotation_pid, oa_selector=self._oa_selector, oa_selector_type_uri=self._oa_selector_type_uri, fragment_type=self._fragment_type, ) foxml.create_xml_datastream( element=self.selector_rdf_element, id="selector", mime="application/rdf+xml", label="Selector data for OAC annotation", fedora_uri=sele_uri, ) self._annotation = foxml.get_foxml()