001/** 002 * Copyright (C) 2007 - 2016, Jens Lehmann 003 * 004 * This file is part of DL-Learner. 005 * 006 * DL-Learner is free software; you can redistribute it and/or modify 007 * it under the terms of the GNU General Public License as published by 008 * the Free Software Foundation; either version 3 of the License, or 009 * (at your option) any later version. 010 * 011 * DL-Learner is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 014 * GNU General Public License for more details. 015 * 016 * You should have received a copy of the GNU General Public License 017 * along with this program. If not, see <http://www.gnu.org/licenses/>. 018 */ 019package org.dllearner.algorithms.qtl.util.filters; 020 021import org.apache.jena.rdf.model.Statement; 022 023import java.util.Set; 024import java.util.function.Predicate; 025 026/** 027 * A filter that drops statements which contain 028 * subject, predicates and objects whose IRI starts with one of the given 029 * namespaces. 030 * @author Lorenz Buehmann 031 * 032 */ 033public class NamespaceDropStatementFilter implements Predicate<Statement> { 034 035 private Set<String> namespaces; 036 037 public NamespaceDropStatementFilter(Set<String> namespaces) { 038 this.namespaces = namespaces; 039 } 040 041 /* (non-Javadoc) 042 * @see org.apache.jena.util.iterator.Filter#accept(java.lang.Object) 043 */ 044 @Override 045 public boolean test(Statement st) { 046// return !( 047// namespaces.contains(st.getSubject().getNameSpace()) || 048// namespaces.contains(st.getPredicate().getNameSpace()) || 049// (st.getObject().isURIResource() && namespaces.contains(st.getObject().asResource().getNameSpace())) 050// ); 051 for (String ns : namespaces) { 052 if (st.getSubject().getURI().startsWith(ns) || st.getPredicate().getURI().startsWith(ns) 053 || st.getObject().isURIResource() && st.getObject().asResource().getURI().startsWith(ns)) { 054 return false; 055 } 056 } 057 return true; 058 } 059 060}