/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.stanbol.entityhub.servicesapi.defaults; import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Defines commonly used name spaces to prevent multiple definitions in several * classes * @author Rupert Westenthaler */ public enum NamespaceEnum { /* * STANBOL internally used Namespaces */ /** * The Stanbol Enhancer namespace defining Enhancer, EnhancementEngine and * EnhancementChain. This is NOT the namespace of the enhancement structure. * As EnhancementStrucutre up to now still the old FISE namespace is used. */ enhancer("http://stanbol.apache.org/ontology/enhancer/enhancer#"), //Namespaces defined by the entityhub /** * The Namespace used by the Entityhub to define its concepts such as * Entity, Representation ... */ entityhub("http://stanbol.apache.org/ontology/entityhub/entityhub#"), /** * The namespace used by the Entityhub to define query related concepts * e.g. the full text search field, semantic context field, result score ... */ entityhubQuery("entityhub-query","http://stanbol.apache.org/ontology/entityhub/query#"), /** * The FISE namespace (1st version of the Enhancement Structure). * Will be replaced by the Stanbol Enhancement Structure by a future * release (see STANBOL-3). */ fise("http://fise.iks-project.eu/ontology/"), //First the XML Namespaces /** * The XSD namespace as used by the datatypes of XML and RDF literals */ xsd("http://www.w3.org/2001/XMLSchema#"), /** * The XSI namespace */ xsi("http://www.w3.org/2001/XMLSchema-instance#"), /** * The XML namespace as used by the language attribute of XML and the language * for RDF literals */ xml("http://www.w3.org/XML/1998/namespace#"), //Start with the semantic Web Namespaces /** * The RDF namespace (rdf:type) */ rdf("http://www.w3.org/1999/02/22-rdf-syntax-ns#"), /** * The RDFS namespace (rdfs:label, rdfs:comment, rdfs:seeAlso) */ rdfs("http://www.w3.org/2000/01/rdf-schema#"), /** * The OWL namespace (owl:sameAs) */ owl("http://www.w3.org/2002/07/owl#"), //CMIS related /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ atom("http://www.w3.org/2005/Atom"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ cmis("http://docs.oasis-open.org/ns/cmis/core/200908/"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ cmisRa("cmis-ra","http://docs.oasis-open.org/ns/cmis/restatom/200908/"), //now the JCR related Namespaces /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ jcr("jcr","http://www.jcp.org/jcr/1.0/"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ jcrSv("jcr-sv","http://www.jcp.org/jcr/sv/1.0/"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ jcrNt("jcr-nt","http://www.jcp.org/jcr/nt/1.0/"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ jcrMix("jcr-mix","http://www.jcp.org/jcr/mix/1.0/"), //Some well known Namespaces of Ontologies /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ geo("http://www.w3.org/2003/01/geo/wgs84_pos#"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ georss("http://www.georss.org/georss/"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ gml("http://www.opengis.net/gml/"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ dcElements("dc-elements","http://purl.org/dc/elements/1.1/"), /** * The DC terms ontology as used by the Entityhub to manage metadata such as * creator, creation/modification dates as well as linking to the license */ dcTerms("dc","http://purl.org/dc/terms/"), // Entityhub prefers DC-Terms, therefore use the "dc" prefix for the terms name space /** * FOAF ontology used as type for the resource providing metadata about an * Entity (foaf:Document) */ foaf("http://xmlns.com/foaf/0.1/"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ vCal("http://www.w3.org/2002/12/cal#"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ vCard("http://www.w3.org/2001/vcard-rdf/3.0#"), /** * The SKOS namespace (skos:Concept) */ skos("http://www.w3.org/2004/02/skos/core#"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ sioc("http://rdfs.org/sioc/ns#"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ siocTypes("sioc-types","http://rdfs.org/sioc/types#"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ bio("dc-bio","http://purl.org/vocab/bio/0.1/"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ rss("http://purl.org/rss/1.0/"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ goodRelations("gr","http://purl.org/goodrelations/v1#"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ swrc("http://swrc.ontoware.org/ontology#"), //The Semantic Web for Research Communities Ontology //Linked Data Ontologies /** * THe DBpedia.org ontology (dbp-ont:Person, dbp-ont:Organisation, dbp-ont:Place, ...) */ dbpediaOnt("dbp-ont","http://dbpedia.org/ontology/"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ dbpediaProp("dbp-prop","http://dbpedia.org/property/"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ geonames("http://www.geonames.org/ontology#"), //copyright and license /** * Creative Commons as used by the Entityhub for license and attribution information */ cc("http://creativecommons.org/ns#"), //Schema.org (see http://schema.org/docs/schemaorg.owl for the Ontology) /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ schema("http://schema.org/",true), /** * The W3C Ontology for Media Resources http://www.w3.org/TR/mediaont-10/ * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ media("http://www.w3.org/ns/ma-ont#"), /* * eHealth domain */ /** * DrugBank is a repository of almost 5000 FDA-approved small molecule and * biotech drugs. * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ drugbank("http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/"), /** * Dailymed is published by the National Library of Medicine, * and provides high quality information about marketed drugs. * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ dailymed("http://www4.wiwiss.fu-berlin.de/dailymed/resource/dailymed/"), /** * SIDER contains information on marketed drugs and their adverse effects. * The information is extracted from public documents and package inserts. * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ sider("http://www4.wiwiss.fu-berlin.de/sider/resource/sider/"), /** * The Linked Clinical Trials (LinkedCT) project aims at publishing the * first open Semantic Web data source for clinical trials data. * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ linkedct("http://data.linkedct.org/resource/linkedct/"), /** * STITCH contains information on chemicals and proteins as well as their * interactions and links. * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ stitch("http://www4.wiwiss.fu-berlin.de/stitch/resource/stitch/"), /** * Diseasome publishes a network of 4,300 disorders and disease genes linked * by known disorder-gene associations for exploring all known phenotype and * disease gene associations, indicating the common genetic origin of many * diseases. * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ diseasome("http://www4.wiwiss.fu-berlin.de/diseasome/resource/diseasome/"), /** * National Cancer Institute Thesaurus (http://www.mindswap.org/2003/CancerOntology/) * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ nci("http://www.mindswap.org/2003/nciOncology.owl#"), /** * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ tcm("http://purl.org/net/tcm/tcm.lifescience.ntu.edu.tw/"), /** * The Music Ontology (http://musicontology.com/) * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ mo("http://purl.org/ontology/mo/"), /** * The Time ontology (http://www.w3.org/TR/owl-time/) * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ owlTime("owl-time","http://www.w3.org/2006/time#"), /** * The Event ontology (http://purl.org/NET/c4dm/event.owl#) * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ event("http://purl.org/NET/c4dm/event.owl#"), /** * The Timeline ontology (http://purl.org/NET/c4dm/timeline.owl#) * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ timeline("http://purl.org/NET/c4dm/timeline.owl#"), /** * Relationship: A vocabulary for describing relationships between people * (http://purl.org/vocab/relationship/) * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ rel("http://purl.org/vocab/relationship/"), /** * Expression of Core FRBR Concepts in RDF (http://vocab.org/frbr/core) * @deprecated All none core namespaces where deprecated. Users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ frbr("http://purl.org/vocab/frbr/core#"), /** * Special namespace used for disambiguation metadata. NOTE: that with STANBOL-1053 * the URI used for disambiguation changed. * */ disambiguation("dis","http://stanbol.apache.org/ontology/disambiguation/disambiguation#"), /* * Old namespaces still kept for historical reasons */ /** * The old URI for the 'entityhub' namespace prefix as used by STANBOL * 0.9.0-incubating. * @see NamespaceEnum#entityhubModel */ @Deprecated rickModel("rick","http://www.iks-project.eu/ontology/rick/model/"), /** * The old URI for the 'entityhub-query' namespace prefix as used by STANBOL * 0.9.0-incubating. * @see NamespaceEnum#entityhubQuery */ @Deprecated rickQuery("rick-query","http://www.iks-project.eu/ontology/rick/query/"), ; /** * The logger */ private static final Logger log = LoggerFactory.getLogger(NamespaceEnum.class); private final String ns; private final String prefix; private final boolean defaultPrefix; /** * Defines a namespace that used the {@link #name()} as prefix. * @param ns the namespace. MUST NOT be NULL nor empty */ NamespaceEnum(String ns) { this(null,ns,false); } /** * Defines a namespace by using the {@link #name()} as prefix. If * <code>true</code> is parsed a second parameter this namespace is marked * as the default<p> * <b>NOTE: </b> Only a single namespace can be defined as default. In case * multiple namespaces are marked as default the one with the lowest * {@link #ordinal()} will be used as default. This will be the topmost entry * in this enumeration. * @param ns the namespace. MUST NOT be <code>null</code> nor empty * @param defaultPrefix the default namespace indicator */ NamespaceEnum(String ns,boolean defaultPrefix) { this(null,ns,defaultPrefix); } /** * Defines a namespace with a customised prefix. This should be used if the * prefix needs to be different as the {@link #name()} of the enumeration * entry. * @param prefix the prefix. If <code>null</code> the {@link #name()} is * used. MUST NOT be an empty string * @param ns the namespace. MUST NOT be <code>null</code> nor empty */ NamespaceEnum(String prefix, String ns) { this(prefix,ns,false); } /** * Defines a namespace with a customised prefix. This should be used if the * prefix needs to be different as the {@link #name()} of the enumeration * entry.<p> * <b>NOTE: </b> Only a single namespace can be defined as default. In case * multiple namespaces are marked as default the one with the lowest * {@link #ordinal()} will be used as default. This will be the topmost entry * in this enumeration. * @param prefix the prefix. If <code>null</code> the {@link #name()} is * used. MUST NOT be an empty string * @param ns the namespace. MUST NOT be <code>null</code> nor empty * @param defaultPrefix the default namespace indicator */ NamespaceEnum(String prefix, String ns,boolean defaultPrefix) { if(ns == null || ns.isEmpty()){ throw new IllegalArgumentException("The namespace MUST NOT be NULL nor empty"); } this.ns = ns; if(prefix == null){ this.prefix = name(); } else if(prefix.isEmpty()){ throw new IllegalArgumentException("The prefix MUST NOT be emtpty." + "Use NULL to use the name or parse the prefix to use"); } else { this.prefix = prefix; } this.defaultPrefix = defaultPrefix; } public String getNamespace(){ return ns; } public String getPrefix(){ return prefix == null ? name() : prefix; } @Override public String toString() { return ns; } /* * ==== Code for Lookup Methods based on Prefix and Namespace ==== */ private final static Map<String, NamespaceEnum> prefix2Namespace; private final static Map<String, NamespaceEnum> namespace2Prefix; private final static NamespaceEnum defaultNamespace; static { Map<String,NamespaceEnum> p2n = new HashMap<String, NamespaceEnum>(); Map<String,NamespaceEnum> n2p = new HashMap<String, NamespaceEnum>(); //The Exceptions are only thrown to check that this Enum is configured //correctly! NamespaceEnum defaultNs = null; for(NamespaceEnum entry : NamespaceEnum.values()){ if(entry.isDefault()){ if(defaultNs == null){ defaultNs = entry; } else { log.warn("Found multiple default namespace definitions! Will use the one with the lowest ordinal value."); log.warn(" > used default: prefix:{}, namespace:{}, ordinal:{}", new Object[]{defaultNs.getPrefix(),defaultNs.getNamespace(),defaultNs.ordinal()}); log.warn(" > this one : prefix:{}, namespace:{}, ordinal:{}", new Object[]{entry.getPrefix(),entry.getNamespace(),entry.ordinal()}); } } if(p2n.containsKey(entry.getPrefix())){ throw new IllegalStateException( String.format("Prefix %s used for multiple namespaces: %s and %s", entry.getPrefix(), p2n.get(entry.getPrefix()), entry.getNamespace())); } else { log.debug("add {} -> {} mapping",entry.getPrefix(),entry.getNamespace()); p2n.put(entry.getPrefix(), entry); } if(n2p.containsKey(entry.getNamespace())){ throw new IllegalStateException( String.format("Multiple Prefixs %s and %s for namespaces: %s", entry.getPrefix(), p2n.get(entry.getNamespace()), entry.getNamespace())); } else { log.debug("add {} -> {} mapping",entry.getNamespace(),entry.getPrefix()); n2p.put(entry.getNamespace(), entry); } } prefix2Namespace = Collections.unmodifiableMap(p2n); namespace2Prefix = Collections.unmodifiableMap(n2p); defaultNamespace = defaultNs; } /** * Getter for the {@link NamespaceEnum} entry based on the string namespace * @param namespace the name space * @return the {@link NamespaceEnum} entry or <code>null</code> if the prased * namespace is not present */ public static NamespaceEnum forNamespace(String namespace){ return namespace2Prefix.get(namespace); } /** * Getter for the {@link NamespaceEnum} entry based on the prefix * @param prefix the prefix or <code>null</code> to get the default namespace * @return the {@link NamespaceEnum} entry or <code>null</code> if the prased * prefix is not present */ public static NamespaceEnum forPrefix(String prefix){ return prefix == null ? defaultNamespace : prefix2Namespace.get(prefix); } /** * Lookup if the parsed short URI (e.g "rdfs:label") uses one of the * registered prefixes of this Enumeration of if the parsed short URI uses * the default namespace (e.g. "name"). In case the prefix could not be found * the parsed URI is returned unchanged * @param shortUri the short URI * @return the full URI if the parsed shortUri uses a prefix defined by this * Enumeration. Otherwise (including <code>null</code>) the parsed value. * @deprecated To obtain the fullName for an URI users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> * <b>NOTE</b> that this service will return <code>null</code> if a shortUri * was parsed AND no mapping for the prefix was defined. This is different to * this version that would return the parsed string. */ public static String getFullName(String shortUri){ //ignore null and empty strings if(shortUri == null || shortUri.isEmpty()) { return shortUri; } int index = shortUri.indexOf(':'); if(index>0){ NamespaceEnum namespace = NamespaceEnum.forPrefix(shortUri.substring(0, index)); if(namespace!= null){ shortUri = namespace.getNamespace()+shortUri.substring(index+1); } } else if(defaultNamespace != null){ shortUri = defaultNamespace.getNamespace()+shortUri; } return shortUri; } /** * Parsed the namespace of the parsed full URI by searching the last occurrence * of '#' or '/' and than looks if the namespace is part of this enumeration. * If a namesoace is found it is replaced by the registered prefix. If not * the parsed URI is resturned * @param fullUri the full uri to convert * @return the converted URI or the parsed value of <code>null</code> was * parsed, no local name was present (e.g. if the namespace itself was parsed) * or the parsed namespace is not known. * @deprecated To obtain the shortName for an URI users should use * the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ public static String getShortName(String fullUri){ if(fullUri == null){ return fullUri; } int index = Math.max(fullUri.lastIndexOf('#'),fullUri.lastIndexOf('/')); //do not convert if the parsed uri does not contain a local name if(index > 0 && index+1 < fullUri.length()){ String ns = fullUri.substring(0, index+1); NamespaceEnum namespace = namespace2Prefix.get(ns); if(namespace != null){ return namespace.getPrefix()+':'+fullUri.substring(index+1); } } return fullUri; } /** * @return the defaultPrefix * @deprecated To obtain the default namespace please lookup the prefx '' * on the the NamespacePrefixService (module: * org.apache.stanbol.commons.namespaceprefixservice) instead (see also * <a href="https://issues.apache.org/jira/browse/STANBOL-824">STANBOL-824)</a> */ public boolean isDefault() { return defaultPrefix; } }