/** * YaCyMetadata * Copyright 2011 by Michael Peter Christen, mc@yacy.net, Frankfurt am Main, Germany * First released 16.12.2011 at http://yacy.net * * $LastChangedDate: 2011-04-14 00:04:23 +0200 (Do, 14 Apr 2011) $ * $LastChangedRevision: 7653 $ * $LastChangedBy: orbiter $ * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program in the file lgpl21.txt * If not, see <http://www.gnu.org/licenses/>. */ package net.yacy.cora.lod.vocabulary; import java.util.Set; import net.yacy.cora.document.encoding.ASCII; import net.yacy.cora.lod.Literal; import net.yacy.cora.lod.Vocabulary; /** * this is the vocabulary of the 'classic' YaCy metadata database */ public enum YaCyMetadata implements Vocabulary { hash, // the url's hash host, // the url's host path, // the path element of the url without file bname file, // the file name inside the url mod, // last-modified from the httpd load, // time when the url was loaded fresh, // time until this url is fresh referrer, // (one of) the url's referrer hash(es) md5, // the md5 of the url content (to identify changes) size, // size of file in bytes sizename, // printable version of the size wc, // size of file by number of words; for video and audio: seconds dt, // doctype, taken from extension or any other heuristic flags, // flags; any stuff (see Word-Entity definition) lang, // language llocal, // # of outlinks to same domain; for video and image: width lother, // # of outlinks to outside domain; for video and image: height limage, // # of embedded image links laudio, // # of embedded audio links; for audio: track number; for video: number of audio tracks lvideo, // # of embedded video links lapp; // # of embedded links to applications /* "String hash-12, " + // the url's hash "Cardinal mod-4 {b256}, " + // last-modified from the httpd "Cardinal load-4 {b256}, " + // time when the url was loaded "Cardinal fresh-4 {b256}, " + // time until this url is fresh "String referrer-12, " + // (one of) the url's referrer hash(es) "byte[] md5-8, " + // the md5 of the url content (to identify changes) "Cardinal size-6 {b256}, " + // size of file in bytes "Cardinal wc-3 {b256}, " + // size of file by number of words; for video and audio: seconds "byte[] dt-1, " + // doctype, taken from extension or any other heuristic "Bitfield flags-4, " + // flags; any stuff (see Word-Entity definition) "String lang-2, " + // language "Cardinal llocal-2 {b256}, " + // # of outlinks to same domain; for video and image: width "Cardinal lother-2 {b256}, " + // # of outlinks to outside domain; for video and image: height "Cardinal limage-2 {b256}, " + // # of embedded image links "Cardinal laudio-2 {b256}, " + // # of embedded audio links; for audio: track number; for video: number of audio tracks "Cardinal lvideo-2 {b256}, " + // # of embedded video links "Cardinal lapp-2 {b256}", // # of embedded links to applications */ 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/md#"; public final static String PREFIX = "yacy"; private final String predicate; public static String hashURI(byte[] hash) { byte[] b = new byte[HASH_PREFIX_LENGTH + hash.length]; System.arraycopy(HASH_PREFIX, 0, b, 0, HASH_PREFIX_LENGTH); System.arraycopy(hash, 0, b, HASH_PREFIX_LENGTH, hash.length); return ASCII.String(b); } private YaCyMetadata() { this.predicate = NAMESPACE + this.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; } @Override public String getURIref() { return PREFIX + ':' + this.name(); } }