From 37d5a4fb9b85a9c0a06b78d55b832d24c5e81aa1 Mon Sep 17 00:00:00 2001 From: Chris Mungall Date: Tue, 21 Mar 2017 18:27:48 -0700 Subject: [PATCH] Implemented prefix filter, #75 --- .../owlsim/kb/filter/FilterEngine.java | 24 ++++++++++------ .../owlsim/kb/filter/IdPrefixFilter.java | 33 ++++++++++++++++++++++ .../owlsim/kb/filter/FilterEngineTest.java | 3 ++ 3 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 owlsim-core/src/main/java/org/monarchinitiative/owlsim/kb/filter/IdPrefixFilter.java diff --git a/owlsim-core/src/main/java/org/monarchinitiative/owlsim/kb/filter/FilterEngine.java b/owlsim-core/src/main/java/org/monarchinitiative/owlsim/kb/filter/FilterEngine.java index 1bd5418..5ad5194 100644 --- a/owlsim-core/src/main/java/org/monarchinitiative/owlsim/kb/filter/FilterEngine.java +++ b/owlsim-core/src/main/java/org/monarchinitiative/owlsim/kb/filter/FilterEngine.java @@ -95,14 +95,22 @@ else if (filter instanceof TypeFilter) { int ix = knowledgeBase.getClassIndex(tf.getTypeId()); return typesBM.getPositions().contains(ix) ^ tf.isNegated(); } - else if (filter instanceof IdFilter) { - IdFilter idf = (IdFilter)filter; - if (idf.getIds().contains(id)) { - return true; - } else { - return false; - } - } + else if (filter instanceof IdFilter) { + IdFilter idf = (IdFilter)filter; + if (idf.getIds().contains(id)) { + return true; + } else { + return false; + } + } + else if (filter instanceof IdPrefixFilter) { + IdPrefixFilter idf = (IdPrefixFilter)filter; + if (id.startsWith(idf.getPrefix())) { + return true; + } else { + return false; + } + } else if (filter instanceof AnonIndividualFilter) { return false; } diff --git a/owlsim-core/src/main/java/org/monarchinitiative/owlsim/kb/filter/IdPrefixFilter.java b/owlsim-core/src/main/java/org/monarchinitiative/owlsim/kb/filter/IdPrefixFilter.java new file mode 100644 index 0000000..ff3ac52 --- /dev/null +++ b/owlsim-core/src/main/java/org/monarchinitiative/owlsim/kb/filter/IdPrefixFilter.java @@ -0,0 +1,33 @@ +package org.monarchinitiative.owlsim.kb.filter; + + +/** + * A filter that picks out individuals that with a particular prefix. + * + * If URIs are already mapped to CURIEs, use the prefix plus ':' + * + * If URIs are not mapped, use the full URI prefix + * + * @author cjm + * + */ +public class IdPrefixFilter implements Filter { + + private String prefix; + + + public IdPrefixFilter(String prefix) { + super(); + this.prefix = prefix; + } + public static IdPrefixFilter create(String prefix) { + return new IdPrefixFilter(prefix); + } + + public String getPrefix() { + return prefix; + } + + + +} diff --git a/owlsim-core/src/test/java/org/monarchinitiative/owlsim/kb/filter/FilterEngineTest.java b/owlsim-core/src/test/java/org/monarchinitiative/owlsim/kb/filter/FilterEngineTest.java index 9826b4e..e80ed6e 100644 --- a/owlsim-core/src/test/java/org/monarchinitiative/owlsim/kb/filter/FilterEngineTest.java +++ b/owlsim-core/src/test/java/org/monarchinitiative/owlsim/kb/filter/FilterEngineTest.java @@ -50,6 +50,9 @@ public void testFilterEngine() throws OWLOntologyCreationException, URISyntaxExc //System.out.println(tf6); //testFilter(tf6); + IdPrefixFilter pf = IdPrefixFilter.create("http://x.org/ia"); + testFilter(pf, "http://x.org/ia", "http://x.org/iabc"); + } }