From: <rv...@us...> - 2009-06-25 02:50:16
|
Revision: 112 http://treebase.svn.sourceforge.net/treebase/?rev=112&view=rev Author: rvos Date: 2009-06-25 02:50:10 +0000 (Thu, 25 Jun 2009) Log Message: ----------- Adding NexusServiceRDFa serialization service Added Paths: ----------- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java Added: trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java (rev 0) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2009-06-25 02:50:10 UTC (rev 112) @@ -0,0 +1,83 @@ +/** + * + */ +package org.cipres.treebase.service.nexus; + +import java.io.ByteArrayInputStream; + +import javax.xml.parsers.ParserConfigurationException; + +import org.cipres.treebase.domain.nexus.NexusDataSet; +import org.cipres.treebase.domain.nexus.nexml.NexmlDocumentConverter; +import org.cipres.treebase.domain.study.Study; +import org.dom4j.DocumentException; +import org.dom4j.io.DocumentResult; +import org.dom4j.io.DocumentSource; +import org.dom4j.io.SAXReader; +import org.nexml.model.Document; +import org.nexml.model.DocumentFactory; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamSource; + + +/** + * @author rvosa + * + */ +public class NexusServiceRDFa extends NexusServiceNexml { + public String serialize(NexusDataSet nexusDataSet) { + Document document = null; + try { + document = DocumentFactory.createDocument(); + } catch (ParserConfigurationException e) { + e.printStackTrace(); + } + NexmlDocumentConverter ndc = new NexmlDocumentConverter(null,getTaxonLabelHome(),document); + String NeXML = ndc.fromTreeBaseToXml(nexusDataSet).getXmlString(); + return transform(NeXML); + } + + public String serialize(Study study) { + Document document = null; + try { + document = DocumentFactory.createDocument(); + } catch (ParserConfigurationException e) { + e.printStackTrace(); + } + NexmlDocumentConverter ndc = new NexmlDocumentConverter(study,getTaxonLabelHome(),document); + String NeXML = ndc.fromTreeBaseToXml(study).getXmlString(); + return transform(NeXML); + } + + private String transform(String input) { + SAXReader reader = new SAXReader(); + ByteArrayInputStream bs = new ByteArrayInputStream(input.getBytes()); + org.dom4j.Document jDomDocument = null; + try { + jDomDocument = reader.read( bs ); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + TransformerFactory factory = TransformerFactory.newInstance(); + Transformer transformer = null; + try { + transformer = factory.newTransformer( new StreamSource( "http://www.nexml.org/nexml/xslt/RDFa2RDFXML.xsl" ) ); + } catch (TransformerConfigurationException e1) { + e1.printStackTrace(); + } + DocumentSource source = new DocumentSource( jDomDocument ); + DocumentResult result = new DocumentResult(); + try { + transformer.transform( source, result ); + } catch (TransformerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + org.dom4j.Document transformedDoc = result.getDocument(); + return transformedDoc.asXML(); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rv...@us...> - 2009-06-28 10:13:13
|
Revision: 138 http://treebase.svn.sourceforge.net/treebase/?rev=138&view=rev Author: rvos Date: 2009-06-28 10:12:13 +0000 (Sun, 28 Jun 2009) Log Message: ----------- xml:base attribute now correctly copied from input nexml document to output rdf document. Modified Paths: -------------- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2009-06-28 10:11:30 UTC (rev 137) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2009-06-28 10:12:13 UTC (rev 138) @@ -12,11 +12,14 @@ import org.cipres.treebase.domain.nexus.nexml.NexmlDocumentConverter; import org.cipres.treebase.domain.study.Study; import org.dom4j.DocumentException; +import org.dom4j.QName; import org.dom4j.io.DocumentResult; import org.dom4j.io.DocumentSource; import org.dom4j.io.SAXReader; +import org.jdom.Namespace; import org.nexml.model.Document; import org.nexml.model.DocumentFactory; + import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; @@ -95,6 +98,9 @@ e.printStackTrace(); } org.dom4j.Document transformedDoc = result.getDocument(); + QName qName = QName.get("base", "xml", "http://www.w3.org/XML/1998/namespace"); + String sourceBase = jDomDocument.getRootElement().attributeValue(qName); + transformedDoc.getRootElement().setAttributeValue(qName, sourceBase); return transformedDoc.asXML(); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rv...@us...> - 2010-02-11 06:37:25
|
Revision: 489 http://treebase.svn.sourceforge.net/treebase/?rev=489&view=rev Author: rvos Date: 2010-02-11 06:37:11 +0000 (Thu, 11 Feb 2010) Log Message: ----------- Completed nexml2cdao conversion. Modified Paths: -------------- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2010-02-10 02:04:54 UTC (rev 488) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2010-02-11 06:37:11 UTC (rev 489) @@ -1,6 +1,12 @@ package org.cipres.treebase.service.nexus; import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLEncoder; +import java.util.Iterator; import java.util.Properties; import javax.xml.parsers.ParserConfigurationException; @@ -72,32 +78,41 @@ private String transform(String input) { SAXReader reader = new SAXReader(); ByteArrayInputStream bs = new ByteArrayInputStream(input.getBytes()); - org.dom4j.Document jDomDocument = null; + org.dom4j.Document nexmlDocument = null; try { - jDomDocument = reader.read( bs ); + nexmlDocument = reader.read( bs ); } catch (DocumentException e) { - // TODO Auto-generated catch block e.printStackTrace(); } + TransformerFactory factory = TransformerFactory.newInstance(); - Transformer transformer = null; + Transformer rdfaTransformer = null; + Transformer cdaoTransformer = null; try { - transformer = factory.newTransformer( new StreamSource( "http://www.nexml.org/nexml/xslt/RDFa2RDFXML.xsl" ) ); + rdfaTransformer = factory.newTransformer( new StreamSource( "http://www.nexml.org/nexml/xslt/RDFa2RDFXML.xsl" ) ); + cdaoTransformer = factory.newTransformer( new StreamSource( "http://www.nexml.org/nexml/xslt/nexml2cdao.xsl" ) ); } catch (TransformerConfigurationException e1) { e1.printStackTrace(); } - DocumentSource source = new DocumentSource( jDomDocument ); - DocumentResult result = new DocumentResult(); + DocumentSource nexmlSource = new DocumentSource( nexmlDocument ); + DocumentResult rdfaResult = new DocumentResult(); + DocumentResult cdaoResult = new DocumentResult(); try { - transformer.transform( source, result ); - } catch (TransformerException e) { - // TODO Auto-generated catch block + rdfaTransformer.transform( nexmlSource, rdfaResult ); + cdaoTransformer.transform( nexmlSource, cdaoResult ); + } catch (TransformerException e) { e.printStackTrace(); } - org.dom4j.Document transformedDoc = result.getDocument(); + + org.dom4j.Document rdfaDoc = rdfaResult.getDocument(); + org.dom4j.Document cdaoDoc = cdaoResult.getDocument(); QName qName = QName.get("base", "xml", "http://www.w3.org/XML/1998/namespace"); - String sourceBase = jDomDocument.getRootElement().attributeValue(qName); - transformedDoc.getRootElement().setAttributeValue(qName, sourceBase); - return transformedDoc.asXML(); + String sourceBase = nexmlDocument.getRootElement().attributeValue(qName); + cdaoDoc.getRootElement().setAttributeValue(qName, sourceBase); + Iterator<org.dom4j.Element> elementIterator = rdfaDoc.getRootElement().elementIterator(); + while ( elementIterator.hasNext() ) { + cdaoDoc.getRootElement().add(elementIterator.next()); + } + return cdaoDoc.asXML(); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rv...@us...> - 2010-02-11 06:52:03
|
Revision: 490 http://treebase.svn.sourceforge.net/treebase/?rev=490&view=rev Author: rvos Date: 2010-02-11 06:51:56 +0000 (Thu, 11 Feb 2010) Log Message: ----------- Fixed org.dom4j.IllegalAddException Modified Paths: -------------- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2010-02-11 06:37:11 UTC (rev 489) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2010-02-11 06:51:56 UTC (rev 490) @@ -109,9 +109,11 @@ QName qName = QName.get("base", "xml", "http://www.w3.org/XML/1998/namespace"); String sourceBase = nexmlDocument.getRootElement().attributeValue(qName); cdaoDoc.getRootElement().setAttributeValue(qName, sourceBase); - Iterator<org.dom4j.Element> elementIterator = rdfaDoc.getRootElement().elementIterator(); + Iterator<org.dom4j.Element> elementIterator = rdfaDoc.getRootElement().elementIterator(); while ( elementIterator.hasNext() ) { - cdaoDoc.getRootElement().add(elementIterator.next()); + org.dom4j.Element elt = elementIterator.next(); + elt.detach(); + cdaoDoc.getRootElement().add(elt); } return cdaoDoc.asXML(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rv...@us...> - 2010-03-12 23:34:19
|
Revision: 565 http://treebase.svn.sourceforge.net/treebase/?rev=565&view=rev Author: rvos Date: 2010-03-12 23:34:13 +0000 (Fri, 12 Mar 2010) Log Message: ----------- Flattened rdf triples. TODO: replace id attributes with purl URIs. Modified Paths: -------------- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2010-03-12 23:32:59 UTC (rev 564) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2010-03-12 23:34:13 UTC (rev 565) @@ -11,6 +11,8 @@ import javax.xml.parsers.ParserConfigurationException; +import org.apache.log4j.Logger; +import org.cipres.treebase.TreebaseUtil; import org.cipres.treebase.domain.nexus.NexusDataSet; import org.cipres.treebase.domain.nexus.nexml.NexmlDocumentConverter; import org.cipres.treebase.domain.study.Study; @@ -35,46 +37,86 @@ * */ public class NexusServiceRDFa extends NexusServiceNexml { + private static final Logger LOGGER = Logger.getLogger(NexusServiceRDFa.class); + + /** + * + */ public String serialize(NexusDataSet nexusDataSet,Properties properties) { NexmlDocumentConverter ndc = getNexmlDocumentConverter(null, properties); return transform(ndc.fromTreeBaseToXml(nexusDataSet).getXmlString()); } + + /** + * + */ public String serialize(NexusDataSet nexusDataSet) { - /* - Document document = null; - try { - document = DocumentFactory.createDocument(); - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } - NexmlDocumentConverter ndc = new NexmlDocumentConverter(null,getTaxonLabelHome(),document); - String NeXML = ndc.fromTreeBaseToXml(nexusDataSet).getXmlString(); - return transform(NeXML); - */ NexmlDocumentConverter ndc = getNexmlDocumentConverter(null, null); return transform(ndc.fromTreeBaseToXml(nexusDataSet).getXmlString()); } + /** + * + */ public String serialize(Study study,Properties properties) { NexmlDocumentConverter ndc = getNexmlDocumentConverter(study, properties); return transform(ndc.fromTreeBaseToXml(study).getXmlString()); } + + /** + * + */ public String serialize(Study study) { - /* - Document document = null; - try { - document = DocumentFactory.createDocument(); - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } - NexmlDocumentConverter ndc = new NexmlDocumentConverter(study,getTaxonLabelHome(),document); - String NeXML = ndc.fromTreeBaseToXml(study).getXmlString(); - return transform(NeXML); - */ NexmlDocumentConverter ndc = getNexmlDocumentConverter(study, null); return transform(ndc.fromTreeBaseToXml(study).getXmlString()); } + /** + * + * @param cdaoDoc + */ + private void normalizeCdaoDoc (org.dom4j.Document cdaoDoc) { + + LOGGER.info("inside normalizeCdaoDoc"); + Iterator<org.dom4j.Element> parentIterator = cdaoDoc.getRootElement().elementIterator(); + while ( parentIterator.hasNext() ) { + org.dom4j.Element parent = parentIterator.next(); + QName rdfIDQName = QName.get("ID", "rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); + String rdfID = parent.attributeValue(rdfIDQName); + if ( ! TreebaseUtil.isEmpty(rdfID) ) { + + LOGGER.info("going to flatten ID "+rdfID); + Iterator<org.dom4j.Element> childIterator = cdaoDoc.getRootElement().elementIterator(); + while ( childIterator.hasNext() ) { + org.dom4j.Element child = childIterator.next(); + QName rdfAboutQName = QName.get("about", "rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); + String rdfAbout = child.attributeValue(rdfAboutQName); + + if ( ! TreebaseUtil.isEmpty(rdfAbout) && rdfAbout.equals("#"+rdfID) ) { + + LOGGER.info("found referencing element"); + Iterator<org.dom4j.Element> grandChildIterator = child.elementIterator(); + while ( grandChildIterator.hasNext() ) { + org.dom4j.Element grandChild = grandChildIterator.next(); + grandChild.detach(); + parent.add(grandChild); + } + + childIterator.remove(); + } + + } + } + } + + } + + /** + * + * @param input + * @return + */ + @SuppressWarnings("unchecked") private String transform(String input) { SAXReader reader = new SAXReader(); ByteArrayInputStream bs = new ByteArrayInputStream(input.getBytes()); @@ -82,6 +124,7 @@ try { nexmlDocument = reader.read( bs ); } catch (DocumentException e) { + System.out.println(input); e.printStackTrace(); } @@ -115,6 +158,7 @@ elt.detach(); cdaoDoc.getRootElement().add(elt); } + normalizeCdaoDoc(cdaoDoc); return cdaoDoc.asXML(); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rv...@us...> - 2010-06-03 17:14:52
|
Revision: 710 http://treebase.svn.sourceforge.net/treebase/?rev=710&view=rev Author: rvos Date: 2010-06-03 17:14:46 +0000 (Thu, 03 Jun 2010) Log Message: ----------- Now changes local URIs into global ones, based on the owl:sameAs value Modified Paths: -------------- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2010-06-03 17:13:16 UTC (rev 709) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2010-06-03 17:14:46 UTC (rev 710) @@ -6,17 +6,23 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; +import java.util.List; +import java.util.Map; import java.util.Properties; import javax.xml.parsers.ParserConfigurationException; import org.apache.log4j.Logger; +import org.cipres.treebase.Constants; import org.cipres.treebase.TreebaseUtil; import org.cipres.treebase.domain.nexus.NexusDataSet; import org.cipres.treebase.domain.nexus.nexml.NexmlDocumentConverter; import org.cipres.treebase.domain.study.Study; import org.dom4j.DocumentException; +import org.dom4j.Node; import org.dom4j.QName; import org.dom4j.io.DocumentResult; import org.dom4j.io.DocumentSource; @@ -72,42 +78,50 @@ } /** - * + * Changes local URIs into global ones, based on owl:sameAs annotations * @param cdaoDoc */ private void normalizeCdaoDoc (org.dom4j.Document cdaoDoc) { + Map<String,String> resourceForId = new HashMap<String,String>(); + QName rdfAboutQName = QName.get("about", "rdf", Constants.RDFURI.toString()); + QName rdfResourceQName = QName.get("resource", "rdf", Constants.RDFURI.toString()); + QName rdfIDQName = QName.get("ID", "rdf", Constants.RDFURI.toString()); LOGGER.info("inside normalizeCdaoDoc"); - Iterator<org.dom4j.Element> parentIterator = cdaoDoc.getRootElement().elementIterator(); - while ( parentIterator.hasNext() ) { - org.dom4j.Element parent = parentIterator.next(); - QName rdfIDQName = QName.get("ID", "rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); - String rdfID = parent.attributeValue(rdfIDQName); - if ( ! TreebaseUtil.isEmpty(rdfID) ) { - - LOGGER.info("going to flatten ID "+rdfID); - Iterator<org.dom4j.Element> childIterator = cdaoDoc.getRootElement().elementIterator(); - while ( childIterator.hasNext() ) { - org.dom4j.Element child = childIterator.next(); - QName rdfAboutQName = QName.get("about", "rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); - String rdfAbout = child.attributeValue(rdfAboutQName); - - if ( ! TreebaseUtil.isEmpty(rdfAbout) && rdfAbout.equals("#"+rdfID) ) { - - LOGGER.info("found referencing element"); - Iterator<org.dom4j.Element> grandChildIterator = child.elementIterator(); - while ( grandChildIterator.hasNext() ) { - org.dom4j.Element grandChild = grandChildIterator.next(); - grandChild.detach(); - parent.add(grandChild); - } - - childIterator.remove(); - } - - } + List<org.dom4j.Element> sameAsObjects = cdaoDoc.selectNodes("//owl:sameAs[@rdf:resource]"); + for ( org.dom4j.Element sameAsElt : sameAsObjects ) { + org.dom4j.Element subjectElt = sameAsElt.getParent(); + String id = subjectElt.attributeValue(rdfAboutQName).substring(1); // remove # + String resource = sameAsElt.attributeValue(rdfResourceQName); + resourceForId.put(id, resource); + subjectElt.detach(); + } + + // replace ID attributes + List<org.dom4j.Element> identifiableObjects = cdaoDoc.selectNodes("//rdf:Description[@rdf:ID]"); + for ( org.dom4j.Element identifiableObject : identifiableObjects ) { + String rdfID = identifiableObject.attributeValue(rdfIDQName); + if ( resourceForId.containsKey(rdfID) ) { + org.dom4j.Attribute idAttr = identifiableObject.attribute(rdfIDQName); + identifiableObject.remove(idAttr); + identifiableObject.addAttribute(rdfAboutQName, resourceForId.get(rdfID)); } } + + // replace about and resource references + for ( String rdfID : resourceForId.keySet() ) { + List<org.dom4j.Element> referencingObjects = cdaoDoc.selectNodes("//rdf:Description[@rdf:about='#"+rdfID+"']"); + referencingObjects.addAll(cdaoDoc.selectNodes("//*[@rdf:resource='#"+rdfID+"']")); + for ( org.dom4j.Element referencingObject : referencingObjects ) { + org.dom4j.Attribute attr = referencingObject.attribute(rdfAboutQName); + if ( null == attr ) { + attr = referencingObject.attribute(rdfResourceQName); + } + if ( null != attr ) { + attr.setValue(resourceForId.get(rdfID)); + } + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rv...@us...> - 2011-08-25 10:30:26
|
Revision: 939 http://treebase.svn.sourceforge.net/treebase/?rev=939&view=rev Author: rvos Date: 2011-08-25 10:30:19 +0000 (Thu, 25 Aug 2011) Log Message: ----------- Because the nexml2cdao.xsl sheet has subsumed the functionality of the RDFa2RDFXML.xsl sheet this class has been considerably simplified: we now no longer need to do two transformations and reconcile the two resulting RDF graphs - we only need to do the one and return its results. Modified Paths: -------------- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java Modified: trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java =================================================================== --- trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2011-08-25 09:20:59 UTC (rev 938) +++ trunk/treebase-core/src/main/java/org/cipres/treebase/service/nexus/NexusServiceRDFa.java 2011-08-25 10:30:19 UTC (rev 939) @@ -1,38 +1,17 @@ package org.cipres.treebase.service.nexus; import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; import java.util.Properties; -import javax.xml.parsers.ParserConfigurationException; - -import org.apache.log4j.Logger; -import org.cipres.treebase.Constants; -import org.cipres.treebase.TreebaseUtil; import org.cipres.treebase.domain.nexus.NexusDataSet; import org.cipres.treebase.domain.nexus.nexml.NexmlDocumentConverter; import org.cipres.treebase.domain.study.Study; import org.dom4j.DocumentException; -import org.dom4j.Node; -import org.dom4j.QName; import org.dom4j.io.DocumentResult; import org.dom4j.io.DocumentSource; import org.dom4j.io.SAXReader; -import org.jdom.Namespace; -import org.nexml.model.Document; -import org.nexml.model.DocumentFactory; import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamSource; @@ -43,14 +22,23 @@ * */ public class NexusServiceRDFa extends NexusServiceNexml { - private static final Logger LOGGER = Logger.getLogger(NexusServiceRDFa.class); /** * */ public String serialize(NexusDataSet nexusDataSet,Properties properties) { NexmlDocumentConverter ndc = getNexmlDocumentConverter(null, properties); - return transform(ndc.fromTreeBaseToXml(nexusDataSet).getXmlString()); + String result = null; + try { + result = transform(ndc.fromTreeBaseToXml(nexusDataSet).getXmlString()); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (TransformerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return result; } /** @@ -58,7 +46,17 @@ */ public String serialize(NexusDataSet nexusDataSet,Properties properties,Study study) { NexmlDocumentConverter ndc = getNexmlDocumentConverter(study, properties); - return transform(ndc.fromTreeBaseToXml(nexusDataSet).getXmlString()); + String result = null; + try { + result = transform(ndc.fromTreeBaseToXml(nexusDataSet).getXmlString()); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (TransformerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return result; } /** @@ -66,7 +64,17 @@ */ public String serialize(NexusDataSet nexusDataSet) { NexmlDocumentConverter ndc = getNexmlDocumentConverter(null, null); - return transform(ndc.fromTreeBaseToXml(nexusDataSet).getXmlString()); + String result = null; + try { + result = transform(ndc.fromTreeBaseToXml(nexusDataSet).getXmlString()); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (TransformerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return result; } /** @@ -74,7 +82,17 @@ */ public String serialize(Study study,Properties properties) { NexmlDocumentConverter ndc = getNexmlDocumentConverter(study, properties); - return transform(ndc.fromTreeBaseToXml(study).getXmlString()); + String result = null; + try { + result = transform(ndc.fromTreeBaseToXml(study).getXmlString()); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (TransformerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return result; } /** @@ -82,105 +100,37 @@ */ public String serialize(Study study) { NexmlDocumentConverter ndc = getNexmlDocumentConverter(study, null); - return transform(ndc.fromTreeBaseToXml(study).getXmlString()); - } - - /** - * Changes local URIs into global ones, based on owl:sameAs annotations - * @param cdaoDoc - */ - private void normalizeCdaoDoc (org.dom4j.Document cdaoDoc) { - Map<String,String> resourceForId = new HashMap<String,String>(); - QName rdfAboutQName = QName.get("about", "rdf", Constants.RDFURI.toString()); - QName rdfResourceQName = QName.get("resource", "rdf", Constants.RDFURI.toString()); - QName rdfIDQName = QName.get("ID", "rdf", Constants.RDFURI.toString()); - - LOGGER.info("inside normalizeCdaoDoc"); - List<org.dom4j.Element> sameAsObjects = cdaoDoc.selectNodes("//owl:sameAs[@rdf:resource]"); - for ( org.dom4j.Element sameAsElt : sameAsObjects ) { - org.dom4j.Element subjectElt = sameAsElt.getParent(); - String id = subjectElt.attributeValue(rdfAboutQName).substring(1); // remove # - String resource = sameAsElt.attributeValue(rdfResourceQName); - resourceForId.put(id, resource); - subjectElt.detach(); - } - - // replace ID attributes - List<org.dom4j.Element> identifiableObjects = cdaoDoc.selectNodes("//rdf:Description[@rdf:ID]"); - for ( org.dom4j.Element identifiableObject : identifiableObjects ) { - String rdfID = identifiableObject.attributeValue(rdfIDQName); - if ( resourceForId.containsKey(rdfID) ) { - org.dom4j.Attribute idAttr = identifiableObject.attribute(rdfIDQName); - identifiableObject.remove(idAttr); - identifiableObject.addAttribute(rdfAboutQName, resourceForId.get(rdfID)); - } - } - - // replace about and resource references - for ( String rdfID : resourceForId.keySet() ) { - List<org.dom4j.Element> referencingObjects = cdaoDoc.selectNodes("//rdf:Description[@rdf:about='#"+rdfID+"']"); - referencingObjects.addAll(cdaoDoc.selectNodes("//*[@rdf:resource='#"+rdfID+"']")); - for ( org.dom4j.Element referencingObject : referencingObjects ) { - org.dom4j.Attribute attr = referencingObject.attribute(rdfAboutQName); - if ( null == attr ) { - attr = referencingObject.attribute(rdfResourceQName); - } - if ( null != attr ) { - attr.setValue(resourceForId.get(rdfID)); - } - } + String result = null; + try { + result = transform(ndc.fromTreeBaseToXml(study).getXmlString()); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (TransformerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } - + return result; } + /** * * @param input * @return + * @throws DocumentException + * @throws TransformerException */ - @SuppressWarnings("unchecked") - private String transform(String input) { + private String transform(String input) throws DocumentException, TransformerException { SAXReader reader = new SAXReader(); - ByteArrayInputStream bs = new ByteArrayInputStream(input.getBytes()); - org.dom4j.Document nexmlDocument = null; - try { - nexmlDocument = reader.read( bs ); - } catch (DocumentException e) { - System.out.println(input); - e.printStackTrace(); - } - - TransformerFactory factory = TransformerFactory.newInstance(); - Transformer rdfaTransformer = null; - Transformer cdaoTransformer = null; - try { - rdfaTransformer = factory.newTransformer( new StreamSource( "http://www.nexml.org/nexml/xslt/RDFa2RDFXML.xsl" ) ); - cdaoTransformer = factory.newTransformer( new StreamSource( "http://www.nexml.org/nexml/xslt/nexml2cdao.xsl" ) ); - } catch (TransformerConfigurationException e1) { - e1.printStackTrace(); - } - DocumentSource nexmlSource = new DocumentSource( nexmlDocument ); - DocumentResult rdfaResult = new DocumentResult(); + org.dom4j.Document nexmlDocument = reader.read( new ByteArrayInputStream(input.getBytes()) ); + DocumentResult cdaoResult = new DocumentResult(); - try { - rdfaTransformer.transform( nexmlSource, rdfaResult ); - cdaoTransformer.transform( nexmlSource, cdaoResult ); - } catch (TransformerException e) { - e.printStackTrace(); - } + + Transformer cdaoTransformer = TransformerFactory.newInstance().newTransformer( new StreamSource( "http://www.nexml.org/nexml/xslt/nexml2cdao.xsl" ) ); + cdaoTransformer.transform( new DocumentSource( nexmlDocument ), cdaoResult ); - org.dom4j.Document rdfaDoc = rdfaResult.getDocument(); org.dom4j.Document cdaoDoc = cdaoResult.getDocument(); - QName qName = QName.get("base", "xml", "http://www.w3.org/XML/1998/namespace"); - String sourceBase = nexmlDocument.getRootElement().attributeValue(qName); - cdaoDoc.getRootElement().setAttributeValue(qName, sourceBase); - Iterator<org.dom4j.Element> elementIterator = rdfaDoc.getRootElement().elementIterator(); - while ( elementIterator.hasNext() ) { - org.dom4j.Element elt = elementIterator.next(); - elt.detach(); - cdaoDoc.getRootElement().add(elt); - } - normalizeCdaoDoc(cdaoDoc); return cdaoDoc.asXML(); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |