diff --git a/htroot/ViewFile.java b/htroot/ViewFile.java index a23746628..d9e26ea91 100644 --- a/htroot/ViewFile.java +++ b/htroot/ViewFile.java @@ -40,6 +40,7 @@ import net.yacy.cora.document.ASCII; import net.yacy.cora.document.MultiProtocolURI; import net.yacy.cora.document.UTF8; import net.yacy.cora.lod.JenaTripleStore; +import net.yacy.cora.lod.vocabulary.YaCyMetadata; import net.yacy.cora.protocol.RequestHeader; import net.yacy.cora.services.federated.yacy.CacheStrategy; import net.yacy.document.Condenser; @@ -54,6 +55,9 @@ import net.yacy.kelondro.data.meta.URIMetadataRow; import net.yacy.search.Switchboard; import net.yacy.search.index.Segment; import net.yacy.search.index.Segments; + +import com.hp.hpl.jena.rdf.model.Model; + import de.anomic.crawler.Cache; import de.anomic.crawler.retrieval.Response; import de.anomic.server.serverObjects; @@ -344,7 +348,8 @@ public class ViewFile { prop.putNum("error_size", size); prop.put("error_mimeTypeAvailable", (response.getMimeType() == null) ? "0" : "1"); prop.put("error_mimeTypeAvailable_mimeType", response.getMimeType()); - prop.putXML("error_triples", JenaTripleStore.getMetadataByURLHash(url.hash())); + Model model = JenaTripleStore.getSubmodelBySubject(YaCyMetadata.hashURI(url.hash())); + prop.putXML("error_triples", JenaTripleStore.getRDFByModel(model)); return prop; } diff --git a/htroot/api/yacydoc.java b/htroot/api/yacydoc.java index 5fbf31794..8bd2ac332 100644 --- a/htroot/api/yacydoc.java +++ b/htroot/api/yacydoc.java @@ -30,7 +30,9 @@ import java.net.MalformedURLException; import net.yacy.cora.date.ISO8601Formatter; import net.yacy.cora.document.ASCII; import net.yacy.cora.lod.JenaTripleStore; +import net.yacy.cora.lod.vocabulary.YaCyMetadata; import net.yacy.cora.protocol.RequestHeader; +import net.yacy.cora.protocol.RequestHeader.FileType; import net.yacy.kelondro.data.meta.DigestURI; import net.yacy.kelondro.data.meta.URIMetadataRow; import net.yacy.kelondro.data.word.Word; @@ -38,6 +40,9 @@ import net.yacy.kelondro.logging.Log; import net.yacy.search.Switchboard; import net.yacy.search.index.Segment; import net.yacy.search.index.Segments; + +import com.hp.hpl.jena.rdf.model.Model; + import de.anomic.server.serverObjects; import de.anomic.server.serverSwitch; @@ -129,7 +134,10 @@ public class yacydoc { prop.put("yacy_outbound", entry.lother()); // extract the submodel from the triplestore - prop.putXML("triples", JenaTripleStore.getMetadataByURLHash(entry.hash())); + Model model = JenaTripleStore.getSubmodelBySubject(YaCyMetadata.hashURI(entry.hash())); + String rdf = JenaTripleStore.getRDFByModel(model); + prop.putXML("triples", rdf); + prop.put("rdf", header.fileType() == FileType.XML ? rdf : ""); // return rewrite properties return prop; diff --git a/source/net/yacy/cora/lod/JenaTripleStore.java b/source/net/yacy/cora/lod/JenaTripleStore.java index 40f604f74..a45df78c6 100644 --- a/source/net/yacy/cora/lod/JenaTripleStore.java +++ b/source/net/yacy/cora/lod/JenaTripleStore.java @@ -262,9 +262,7 @@ public class JenaTripleStore { return m; } - public static String getMetadataByURLHash(byte[] urlhash) { - String subject = YaCyMetadata.hashURI(urlhash); - Model model = JenaTripleStore.getSubmodelBySubject(subject); + public static String getRDFByModel(Model model) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); model.write(baos, "RDF/XML-ABBREV"); return UTF8.String(baos.toByteArray()); diff --git a/source/net/yacy/cora/protocol/RequestHeader.java b/source/net/yacy/cora/protocol/RequestHeader.java index 24dd640f8..86b01256a 100644 --- a/source/net/yacy/cora/protocol/RequestHeader.java +++ b/source/net/yacy/cora/protocol/RequestHeader.java @@ -116,6 +116,7 @@ public class RequestHeader extends HeaderFramework { path = path.toLowerCase(); if (path.endsWith(".json")) return FileType.JSON; if (path.endsWith(".xml")) return FileType.XML; + if (path.endsWith(".rdf")) return FileType.XML; if (path.endsWith(".rss")) return FileType.XML; return FileType.HTML; }