
eu.monnetproject.label.skos.SKOSLabelExtractionPolicy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ontology.label Show documentation
Show all versions of ontology.label Show documentation
com.github.monnetproject.ontology.label OSGi Bundle from the Monnet Project's ontology.project project.
The newest version!
package eu.monnetproject.label.skos;
import eu.monnetproject.lang.Language;
import eu.monnetproject.label.LabelExtractor;
import eu.monnetproject.ontology.*;
import java.net.URI;
import java.util.LinkedList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import aQute.bnd.annotation.component.*;
/**
*
* @author John McCrae
*/
@aQute.bnd.annotation.component.Component(provide = LabelExtractor.class)
public class SKOSLabelExtractionPolicy implements LabelExtractor {
private static final String SKOS = "http://www.w3.org/2004/02/skos/core#";
private static final String SKOSXL = "http://www.w3.org/2008/05/skos-xl#";
public SKOSLabelExtractionPolicy() {
}
/*
* public SKOSLabelExtractor(OntologyHandler handler) { this.handler =
* handler; }
*
* public Collection getLabels(Entity entity) { return
* getLabels(entity, defaultLanguage); }
*
* public Collection getLabels(Entity entity, Language language) {
* Set rval = new HashSet(); rval.addAll(getLabel(entity,
* language, "prefLabel")); rval.addAll(getLabel(entity, language,
* "altLabel")); rval.addAll(getLabel(entity, language, "hiddenLabel"));
* return rval;
}
*/
public Map> getLabels(Entity entity) {
Map> rval = new HashMap>();
for (AnnotationProperty prop : entity.getAnnotations().keySet()) {
if (prop.getURI().equals(URI.create(SKOS + "prefLabel"))
|| prop.getURI().equals(URI.create(SKOS + "altLabel"))
|| prop.getURI().equals(URI.create(SKOS + "hiddenLabel"))) {
for (AnnotationValue value2 : entity.getAnnotationValues(prop)) {
if (value2 instanceof LiteralValue) {
LiteralValue value = (LiteralValue) value2;
Language lang = value.getLanguage() == null ? LabelExtractor.NO_LANGUAGE : value.getLanguage();
if (!rval.containsKey(lang)) {
rval.put(lang, new HashSet());
}
rval.get(lang).add(value.getValue());
}
}
} else if (prop.getURI().equals(URI.create(SKOSXL + "prefLabel"))
|| prop.getURI().equals(URI.create(SKOSXL + "altLabel"))
|| prop.getURI().equals(URI.create(SKOSXL + "hiddenLabel"))) {
for (AnnotationValue val1 : entity.getAnnotationValues(prop)) {
if (val1 instanceof Individual) {
for (Map.Entry> props2 : ((Individual) val1).getProperties().entrySet()) {
Property prop2 = props2.getKey();
if (prop2.getURI().equals(URI.create(SKOSXL + "literalForm"))) {
for (LiteralOrIndividual val2 : props2.getValue()) {
if (val2 instanceof LiteralValue) {
LiteralValue lit = (LiteralValue) val2;
Language lang = lit.getLanguage() == null ? LabelExtractor.NO_LANGUAGE : lit.getLanguage();
if (!rval.containsKey(lang)) {
rval.put(lang, new HashSet());
}
rval.get(lang).add(lit.getValue());
}
}
}
}
}
for (Map.Entry> props2 : ((Individual) val1).getAnnotations().entrySet()) {
Property prop2 = props2.getKey();
if (prop2.getURI().equals(URI.create(SKOSXL + "literalForm"))) {
for (AnnotationValue val2 : props2.getValue()) {
if (val2 instanceof LiteralValue) {
LiteralValue lit = (LiteralValue) val2;
Language lang = lit.getLanguage() == null ? LabelExtractor.NO_LANGUAGE : lit.getLanguage();
if (!rval.containsKey(lang)) {
rval.put(lang, new HashSet());
}
rval.get(lang).add(lit.getValue());
}
}
}
}
}
}
}
if (entity instanceof Individual) {
Individual indiv = (Individual) entity;
for (Map.Entry> props : indiv.getProperties().entrySet()) {
Property prop1 = props.getKey();
if (prop1.getURI().equals(URI.create(SKOSXL + "prefLabel"))
|| prop1.getURI().equals(URI.create(SKOSXL + "altLabel"))
|| prop1.getURI().equals(URI.create(SKOSXL + "hiddenLabel"))) {
for (LiteralOrIndividual val1 : props.getValue()) {
if (val1 instanceof Individual) {
for (Map.Entry> props2 : ((Individual) val1).getProperties().entrySet()) {
Property prop2 = props2.getKey();
if (prop2.getURI().equals(URI.create(SKOSXL + "literalForm"))) {
for (LiteralOrIndividual val2 : props2.getValue()) {
if (val2 instanceof LiteralValue) {
LiteralValue lit = (LiteralValue) val2;
Language lang = lit.getLanguage() == null ? LabelExtractor.NO_LANGUAGE : lit.getLanguage();
if (!rval.containsKey(lang)) {
rval.put(lang, new HashSet());
}
rval.get(lang).add(lit.getValue());
}
}
}
}
}
for (Map.Entry> props2 : ((Individual) val1).getAnnotations().entrySet()) {
Property prop2 = props2.getKey();
if (prop2.getURI().equals(URI.create(SKOSXL + "literalForm"))) {
for (AnnotationValue val2 : props2.getValue()) {
if (val2 instanceof LiteralValue) {
LiteralValue lit = (LiteralValue) val2;
Language lang = lit.getLanguage() == null ? LabelExtractor.NO_LANGUAGE : lit.getLanguage();
if (!rval.containsKey(lang)) {
rval.put(lang, new HashSet());
}
rval.get(lang).add(lit.getValue());
}
}
}
}
}
}
}
}
return rval;
}
/*
* HashMap> rval = new HashMap>(); getLabel(entity, "prefLabel", rval);
* getLabel(entity, "altLabel",rval); getLabel(entity, "hiddenLabel",rval);
* return rval; }
*
* public Map> getLabels(OntologyHandler
* handler, Entity entity) { HashMap> rval = new
* HashMap>(); getLabel(entity, "prefLabel",
* rval); getLabel(entity, "altLabel",rval); getLabel(entity,
* "hiddenLabel",rval); return rval; }
*
* private void getLabel(Entity entity, String skos, HashMap> rval) {
* addAll(rval,handler.getLiteralAnnotation(entity, URI.create(SKOS + "#" +
* skos), null));
*
* if (entity instanceof Individual) {
* addAll(rval,handler.getDataPropertyValue((Individual) entity,
* handler.getDataProperty(URI.create(SKOSXL + "#" + skos))));
* Collection indivs =
* handler.getObjectPropertyObject((Individual) entity,
* handler.getObjectProperty(URI.create(SKOSXL + "#" + skos))); for
* (Individual indiv : indivs) {
* addAll(rval,handler.getDataPropertyValue(indiv,
* handler.getDataProperty(URI.create(SKOSXL + "#literalForm")))); } } }
*
* private void addAll(Map> rval,
* Collection literals) { for(Literal lit : literals) {
* if(lit.getLanguage() == null) {
* if(!rval.containsKey(LabelExtractor.NO_LANGUAGE))
* rval.put(LabelExtractor.NO_LANGUAGE, new ArrayList());
* rval.get(LabelExtractor.NO_LANGUAGE).add(lit.getValue()); } else {
* if(!rval.containsKey(lit.getLanguage())) rval.put(lit.getLanguage(), new
* ArrayList()); rval.get(lit.getLanguage()).add(lit.getValue()); }
* } }
*
* public void setDefaultLanguage(Language language) { this.defaultLanguage
* = language;
}
*/
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy