mirror of
https://github.com/yacy/yacy_search_server.git
synced 2024-09-19 00:01:41 +02:00
- using http://purl.org/dc/terms/references to refer from an
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:
parent
80e8aaabc8
commit
61bb52d55c
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
44
source/net/yacy/cora/lod/vocabulary/DCTerms.java
Normal file
44
source/net/yacy/cora/lod/vocabulary/DCTerms.java
Normal 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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user