auto-annotated document to a 'pseudo-linked' document which has an url
created with an object-prefix as defined in the vocabulary file
This commit is contained in:
Michael Peter Christen 2012-06-12 14:23:51 +02:00
parent 80e8aaabc8
commit 61bb52d55c
15 changed files with 93 additions and 39 deletions

View File

@ -12,6 +12,7 @@ import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import net.yacy.cora.document.UTF8;
import net.yacy.cora.lod.vocabulary.DCTerms;
import net.yacy.cora.lod.vocabulary.Geo;
import net.yacy.cora.lod.vocabulary.HttpHeader;
import net.yacy.cora.lod.vocabulary.Tagging;
@ -40,6 +41,7 @@ public class JenaTripleStore {
model.setNsPrefix(HttpHeader.PREFIX, HttpHeader.NAMESPACE);
model.setNsPrefix(Geo.PREFIX, Geo.NAMESPACE);
model.setNsPrefix("pnd", "http://dbpedia.org/ontology/individualisedPnd");
model.setNsPrefix(DCTerms.PREFIX, DCTerms.NAMESPACE);
}
public static ConcurrentHashMap<String, Model> privatestorage = null;

View File

@ -41,13 +41,13 @@ public interface Vocabulary {
* get the RDF identifier as an URL stub
* @return
*/
public String getURLStub();
public String getNamespace();
/**
* get the prefix for the predicates of this vocabulary
* @return
*/
public String getShortName();
public String getNamespacePrefix();
/**
* get the predicate name which already contains the prefix url stub

View File

@ -186,12 +186,12 @@ public enum CreativeCommons implements Vocabulary {
}
@Override
public String getURLStub() {
public String getNamespace() {
return IDENTIFIER;
}
@Override
public String getShortName() {
public String getNamespacePrefix() {
return PREFIX;
}

View File

@ -0,0 +1,44 @@
package net.yacy.cora.lod.vocabulary;
import java.util.Set;
import net.yacy.cora.lod.Literal;
import net.yacy.cora.lod.Vocabulary;
public enum DCTerms implements Vocabulary {
references;
public final static String NAMESPACE = "http://purl.org/dc/terms/";
public final static String PREFIX = "dcterms";
private final String predicate;
private DCTerms() {
this.predicate = NAMESPACE + this.name().toLowerCase();
}
private DCTerms(String name) {
this.predicate = NAMESPACE + name;
}
@Override
public String getNamespace() {
return NAMESPACE;
}
@Override
public String getNamespacePrefix() {
return PREFIX;
}
@Override
public Set<Literal> getLiterals() {
return null;
}
@Override
public String getPredicate() {
return this.predicate;
}
}

View File

@ -58,12 +58,12 @@ public enum DublinCore implements Vocabulary {
}
@Override
public String getURLStub() {
public String getNamespace() {
return IDENTIFIER;
}
@Override
public String getShortName() {
public String getNamespacePrefix() {
return PREFIX;
}

View File

@ -37,13 +37,13 @@ public enum Foaf implements Vocabulary {
;
@Override
public String getURLStub() {
public String getNamespace() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getShortName() {
public String getNamespacePrefix() {
// TODO Auto-generated method stub
return null;
}

View File

@ -44,12 +44,12 @@ public enum Geo implements Vocabulary {
}
@Override
public String getURLStub() {
public String getNamespace() {
return NAMESPACE;
}
@Override
public String getShortName() {
public String getNamespacePrefix() {
return PREFIX;
}

View File

@ -96,12 +96,12 @@ public enum HttpHeader implements Vocabulary {
}
@Override
public String getURLStub() {
public String getNamespace() {
return NAMESPACE;
}
@Override
public String getShortName() {
public String getNamespacePrefix() {
return PREFIX;
}

View File

@ -43,12 +43,12 @@ public enum Owl implements Vocabulary {
}
@Override
public String getURLStub() {
public String getNamespace() {
return IDENTIFIER;
}
@Override
public String getShortName() {
public String getNamespacePrefix() {
return PREFIX;
}

View File

@ -47,12 +47,12 @@ public enum Rdf implements Vocabulary {
}
@Override
public String getURLStub() {
public String getNamespace() {
return IDENTIFIER;
}
@Override
public String getShortName() {
public String getNamespacePrefix() {
return PREFIX;
}

View File

@ -35,24 +35,24 @@ import net.yacy.document.geolocalization.Localization;
public class Tagging {
public final static String DEFAULT_NAMESPACE= "http://yacy.net/tagging#";
public final static String DEFAULT_PREFIX = "tag";
public final static String DEFAULT_NAMESPACE= "http://yacy.net/autotagging#";
public final static String DEFAULT_PREFIX = "tags";
private final String navigatorName;
private final Map<String, String> synonym2term;
private final Map<String, String> term2synonym;
private final Map<String, Set<String>> synonym2synonyms;
private String predicate, predicatePrefix, objectPrefix;
private String predicate, namespace, objectspace;
public Tagging(String name) {
this.navigatorName = name;
this.synonym2term = new ConcurrentHashMap<String, String>();
this.term2synonym = new ConcurrentHashMap<String, String>();
this.synonym2synonyms = new ConcurrentHashMap<String, Set<String>>();
this.predicatePrefix = DEFAULT_NAMESPACE;
this.predicate = this.predicatePrefix + name;
this.objectPrefix = "";
this.namespace = DEFAULT_NAMESPACE;
this.predicate = this.namespace + name;
this.objectspace = null;
}
public Tagging(String name, File propFile) throws IOException {
@ -68,14 +68,14 @@ public class Tagging {
p = line.indexOf('#');
if (p >= 0) {
String comment = line.substring(p + 1).trim();
if (comment.startsWith("predicate-prefix:")) {
this.predicatePrefix = comment.substring(17).trim();
if (!this.predicatePrefix.endsWith("/")) this.predicatePrefix += "/";
this.predicate = this.predicatePrefix + name;
if (comment.startsWith("namespace:")) {
this.namespace = comment.substring(10).trim();
if (!this.namespace.endsWith("/") && !this.namespace.endsWith("#")) this.namespace += "#";
this.predicate = this.namespace + name;
}
if (comment.startsWith("object-prefix:")) {
this.objectPrefix = comment.substring(14).trim();
if (!this.objectPrefix.endsWith("/")) this.objectPrefix += "/";
if (comment.startsWith("objectspace:")) {
this.objectspace = comment.substring(12).trim();
if (!this.objectspace.endsWith("/") && !this.objectspace.endsWith("#")) this.objectspace += "#";
}
line = line.substring(0, p).trim();
}
@ -150,6 +150,10 @@ public class Tagging {
return this.predicate;
}
public String getObjectspace() {
return this.objectspace;
}
private final String normalizeKey(String k) {
k = k.trim();
k = k.replaceAll(" \\+", ", "); // remove symbols that are bad in a query attribute

View File

@ -74,9 +74,9 @@ public enum YaCyMetadata implements Vocabulary {
"Cardinal lapp-2 {b256}", // # of embedded links to applications
*/
public final static byte[] HASH_PREFIX = ASCII.getBytes("http://yacy.net/hash#");
public final static byte[] HASH_PREFIX = ASCII.getBytes("http://yacy.net/url#");
public final static int HASH_PREFIX_LENGTH = HASH_PREFIX.length;
public final static String NAMESPACE = "http://yacy.net/vocabularies/yacymetadata#";
public final static String NAMESPACE = "http://yacy.net/md#";
public final static String PREFIX = "yacy";
private final String predicate;
@ -93,12 +93,12 @@ public enum YaCyMetadata implements Vocabulary {
}
@Override
public String getURLStub() {
public String getNamespace() {
return NAMESPACE;
}
@Override
public String getShortName() {
public String getNamespacePrefix() {
return PREFIX;
}

View File

@ -56,6 +56,7 @@ import net.yacy.cora.document.Classification;
import net.yacy.cora.document.MultiProtocolURI;
import net.yacy.cora.document.UTF8;
import net.yacy.cora.lod.JenaTripleStore;
import net.yacy.cora.lod.vocabulary.DCTerms;
import net.yacy.cora.lod.vocabulary.Owl;
import net.yacy.cora.lod.vocabulary.Tagging;
import net.yacy.cora.lod.vocabulary.YaCyMetadata;
@ -216,10 +217,13 @@ dc_rights
* @param tags
*/
public void addMetatags(Map<String, Set<Tagging.Metatag>> tags) {
String subject = YaCyMetadata.hashURI(this.source.hash());
for (String s: this.keywords) {
tags.remove(s);
}
for (Map.Entry<String, Set<Tagging.Metatag>> e: tags.entrySet()) {
Tagging vocabulary = LibraryProvider.autotagging.getVocabulary(e.getKey());
String objectspace = vocabulary.getObjectspace();
StringBuilder sb = new StringBuilder(e.getValue().size() * 20);
for (Tagging.Metatag s: e.getValue()) {
String t = s.toString();
@ -227,10 +231,11 @@ dc_rights
this.keywords.add(t);
}
sb.append(',').append(s.getObject());
if (objectspace != null) {
JenaTripleStore.addTriple(subject, DCTerms.references.getPredicate(), objectspace + s.getObject());
}
}
// put to triplestore
String subject = YaCyMetadata.hashURI(this.source.hash());
Tagging vocabulary = LibraryProvider.autotagging.getVocabulary(e.getKey());
JenaTripleStore.addTriple(subject, vocabulary.getPredicate(), sb.substring(1));
JenaTripleStore.addTriple(subject, Owl.SameAs.getPredicate(), this.source.toNormalform(true, false));
}

View File

@ -46,8 +46,7 @@ import net.yacy.document.geolocalization.OverarchingLocalization;
import net.yacy.kelondro.logging.Log;
import net.yacy.kelondro.util.FileUtils;
public class LibraryProvider
{
public class LibraryProvider {
public static final char tagPrefix = '$';
public static final String path_to_source_dictionaries = "source";

View File

@ -41,12 +41,12 @@ public enum MetadataVocabulary implements Vocabulary {
}
@Override
public String getURLStub() {
public String getNamespace() {
return IDENTIFIER;
}
@Override
public String getShortName() {
public String getNamespacePrefix() {
return PREFIX;
}