@Override protected String convert(Concept o) { return o.getIRI(); } });
@Override protected String convert(Concept o) { return o.getIRI(); } });
@Override protected String convert(Concept o) { return o.getIRI(); } });
@Override protected String convert(Concept o) { return o.getIRI(); } });
@Override protected String convert(Concept o) { return o.getIRI(); } });
@Override public int hashCode() { return getIRI().hashCode(); }
@Override public void internalPublishConcept(Concept concept, User user, String workspaceId) { if (conceptsCache.containsKey(workspaceId)) { Map<String, InMemoryConcept> sandboxedConcepts = conceptsCache.get(workspaceId); if (sandboxedConcepts.containsKey(concept.getIRI())) { InMemoryConcept sandboxConcept = sandboxedConcepts.remove(concept.getIRI()); sandboxConcept.removeWorkspaceId(); conceptsCache.get(PUBLIC_ONTOLOGY_CACHE_KEY).put(concept.getIRI(), sandboxConcept); } } }
@Override public Iterable<Concept> getConceptsByIRI(List<String> conceptIRIs, String workspaceId) { return StreamSupport.stream(getConceptsWithProperties(workspaceId).spliterator(), false) .filter(concept -> conceptIRIs.contains(concept.getIRI())) .collect(Collectors.toSet()); }
@Override public String getConceptIRIByIntent(String intent, String workspaceId) { Concept concept = getConceptByIntent(intent, workspaceId); if (concept != null) { return concept.getIRI(); } return null; }
@Override public String getRequiredConceptIRIByIntent(String intent, String workspaceId) { return getRequiredConceptByIntent(intent, workspaceId).getIRI(); }
@Override protected void internalDeleteConcept(Concept concept, String workspaceId) { String cacheKey = workspaceId; Map<String, InMemoryConcept> workspaceCache = conceptsCache.compute(cacheKey, (k, v) -> v == null ? new HashMap<>() : v); workspaceCache.remove(concept.getIRI()); for (OntologyProperty property : getProperties(workspaceId)) { property.getConceptIris().remove(concept.getIRI()); } }
@Override public String toString() { return String.format("%s (%s)", getDisplayName(), getIRI()); }
@Override protected List<Concept> getChildConcepts(Concept concept, String workspaceId) { Map<String, InMemoryConcept> workspaceConcepts = computeConceptCacheForWorkspace(workspaceId); return workspaceConcepts.values().stream() .filter(workspaceConcept -> concept.getIRI().equals(workspaceConcept.getParentConceptIRI())) .collect(Collectors.toList()); }
private List<String> getConceptIriWithParents(String conceptIri) { List<String> conceptIriWithParents = new ArrayList<>(); String parentConceptIRI = conceptIri; while (parentConceptIRI != null) { Concept parentConcept = ontologyRepository.getConceptByIRI(parentConceptIRI, PUBLIC); parentConceptIRI = null; if (parentConcept != null) { conceptIriWithParents.add(parentConcept.getIRI()); parentConceptIRI = parentConcept.getParentConceptIRI(); } } return conceptIriWithParents; }
@Override public void addConceptTypeFilterToQuery(Query query, Collection<ElementTypeFilter> filters, String workspaceId) { checkNotNull(query, "query cannot be null"); checkNotNull(filters, "filters cannot be null"); if (filters.isEmpty()) { return; } Set<String> conceptIds = new HashSet<>(filters.size()); for (ElementTypeFilter filter : filters) { Concept concept = getConceptByIRI(filter.iri, workspaceId); checkNotNull(concept, "Could not find concept with IRI: " + filter.iri); conceptIds.add(concept.getIRI()); if (filter.includeChildNodes) { Set<Concept> childConcepts = getConceptAndAllChildren(concept, workspaceId); conceptIds.addAll(childConcepts.stream().map(Concept::getIRI).collect(Collectors.toSet())); } } query.has(VisalloProperties.CONCEPT_TYPE.getPropertyName(), Contains.IN, conceptIds); }
@Override public void prepare(GraphPropertyWorkerPrepareData workerPrepareData) throws Exception { super.prepare(workerPrepareData); LOGGER.debug("Extractor prepared for entity type [%s] with regular expression: %s", getConcept().getIRI(), this.pattern.toString()); }
private void validateChangedOwlConcepts() throws IOException { Concept contact = getOntologyRepository().getConceptByIRI(TEST_IRI + "#contact", PUBLIC); Concept person = getOntologyRepository().getConceptByIRI(TEST_IRI + "#person", PUBLIC); assertEquals("Person", person.getDisplayName()); List<String> intents = Arrays.asList(person.getIntents()); assertEquals(1, intents.size()); assertFalse(intents.contains("person")); assertFalse(intents.contains("face")); assertTrue(intents.contains("test")); assertNull(person.getTimeFormula()); assertEquals("prop('http://visallo.org/test#name') || ''", person.getTitleFormula()); assertNull(person.getGlyphIcon()); assertEquals("rgb(28, 137, 28)", person.getColor()); Set<Concept> conceptAndAllChildren = getOntologyRepository().getConceptAndAllChildren(contact, PUBLIC); List<String> iris = Lists.newArrayList(); conceptAndAllChildren.forEach(c -> iris.add(c.getIRI())); assertEquals(2, iris.size()); assertTrue(iris.contains(contact.getIRI())); assertTrue(iris.contains(person.getIRI())); }
@Test public void testDeletingSandboxedConcepts() throws Exception { createSampleOntology(); Concept concept = getOntologyRepository().getConceptByIRI(SANDBOX_CONCEPT_IRI, workspaceId); assertTrue("Concept exists", concept != null && concept.getIRI().equals(SANDBOX_CONCEPT_IRI)); OntologyProperty property = getOntologyRepository().getPropertyByIRI(SANDBOX_PROPERTY_IRI_ONLY_SANDBOXED_CONCEPT, workspaceId); assertTrue("Property exists", property != null && property.getIri().equals(SANDBOX_PROPERTY_IRI_ONLY_SANDBOXED_CONCEPT)); assertTrue("Concept has property", concept.getProperties().stream().anyMatch(ontologyProperty -> ontologyProperty.getIri().equals(SANDBOX_PROPERTY_IRI_ONLY_SANDBOXED_CONCEPT))); getOntologyRepository().deleteConcept(SANDBOX_CONCEPT_IRI, adminUser, workspaceId); getOntologyRepository().clearCache(workspaceId); concept = getOntologyRepository().getConceptByIRI(SANDBOX_CONCEPT_IRI, workspaceId); assertTrue("Concept should have been deleted", concept == null); property = getOntologyRepository().getPropertyByIRI(SANDBOX_PROPERTY_IRI_ONLY_SANDBOXED_CONCEPT, workspaceId); assertTrue("Property only used in this concept is deleted", property == null); property = getOntologyRepository().getPropertyByIRI(SANDBOX_PROPERTY_IRI, workspaceId); assertTrue("Property used in other concepts is updated", property != null); assertEquals(1, property.getConceptIris().size()); assertEquals(PUBLIC_CONCEPT_IRI, property.getConceptIris().get(0)); }
@Test public void testExceptionDeletingSandboxedConceptsWithVertices() throws Exception { createSampleOntology(); Concept concept = getOntologyRepository().getConceptByIRI(SANDBOX_CONCEPT_IRI, workspaceId); assertTrue("Concept exists", concept != null && concept.getIRI().equals(SANDBOX_CONCEPT_IRI)); VisibilityJson json = VisibilityJson.updateVisibilitySourceAndAddWorkspaceId(new VisibilityJson(), "", workspaceId); Visibility visibility = getVisibilityTranslator().toVisibility(json).getVisibility(); VertexBuilder vb = getGraph().prepareVertex(visibility); vb.setProperty(VisalloProperties.CONCEPT_TYPE.getPropertyName(), SANDBOX_CONCEPT_IRI, visibility); vb.save(authorizations); thrown.expect(VisalloException.class); thrown.expectMessage("Unable to delete concept that have vertices assigned to it"); getOntologyRepository().deleteConcept(SANDBOX_CONCEPT_IRI, adminUser, workspaceId); }