@Override public String toString() { return "Relationship{" + "iri='" + getIRI() + '\'' + '}'; } }
@Override protected String convert(Relationship o) { return o.getIRI(); } });
@Override protected String convert(Relationship o) { return o.getIRI(); } };
@Override public void internalPublishRelationship(Relationship relationship, User user, String workspaceId) { if (relationshipsCache.containsKey(workspaceId)) { Map<String, InMemoryRelationship> sandboxedRelationships = relationshipsCache.get(workspaceId); if (sandboxedRelationships.containsKey(relationship.getIRI())) { InMemoryRelationship sandboxRelationship = sandboxedRelationships.remove(relationship.getIRI()); sandboxRelationship.removeWorkspaceId(); relationshipsCache.get(PUBLIC_ONTOLOGY_CACHE_KEY).put(relationship.getIRI(), sandboxRelationship); } } }
@Override public Iterable<Relationship> getRelationshipsByIRI(List<String> relationshipIRIs, String workspaceId) { return StreamSupport.stream(getRelationships(workspaceId).spliterator(), false) .filter(relationship -> relationshipIRIs.contains(relationship.getIRI())) .collect(Collectors.toList()); }
@Override public String getRelationshipIRIByIntent(String intent, String workspaceId) { Relationship relationship = getRelationshipByIntent(intent, workspaceId); if (relationship != null) { return relationship.getIRI(); } return null; }
@Override protected void internalDeleteRelationship(Relationship relationship, String workspaceId) { String cacheKey = workspaceId; Map<String, InMemoryRelationship> workspaceCache = relationshipsCache.compute(cacheKey, (k, v) -> v == null ? new HashMap<>() : v); workspaceCache.remove(relationship.getIRI()); for (OntologyProperty property : getProperties(workspaceId)) { property.getRelationshipIris().remove(relationship.getIRI()); } }
@Override public String getRequiredRelationshipIRIByIntent(String intent, String workspaceId) { return getRequiredRelationshipByIntent(intent, workspaceId).getIRI(); }
@Override protected List<Relationship> getChildRelationships(Relationship relationship, String workspaceId) { Map<String, InMemoryRelationship> workspaceRelationships = computeRelationshipCacheForWorkspace(workspaceId); return workspaceRelationships.values().stream() .filter(workspaceRelationship -> relationship.getIRI().equals(workspaceRelationship.getParentIRI())) .collect(Collectors.toList()); }
@Override public void addEdgeLabelFilterToQuery(Query query, Collection<ElementTypeFilter> filters, String workspaceId) { checkNotNull(filters, "filters cannot be null"); if (filters.isEmpty()) { return; } Set<String> edgeIds = new HashSet<>(filters.size()); for (ElementTypeFilter filter : filters) { Relationship relationship = getRelationshipByIRI(filter.iri, workspaceId); checkNotNull(relationship, "Could not find edge with IRI: " + filter.iri); edgeIds.add(relationship.getIRI()); if (filter.includeChildNodes) { Set<Relationship> childRelations = getRelationshipAndAllChildren(relationship, workspaceId); edgeIds.addAll(childRelations.stream().map(Relationship::getIRI).collect(Collectors.toSet())); } } query.hasEdgeLabel(edgeIds); }
@Test public void testGetRelationshipsById() throws Exception { SampleOntologyDetails sampleOntologyDetails = createSampleOntology(); Iterable<Relationship> relationshipsByIRI = getOntologyRepository().getRelationships(Collections.singletonList(sampleOntologyDetails.publicRelationshipId), PUBLIC); List<Relationship> relationships = IterableUtils.toList(relationshipsByIRI); assertEquals(1, relationships.size()); assertEquals(PUBLIC_RELATIONSHIP_IRI, relationships.get(0).getIRI()); relationshipsByIRI = getOntologyRepository().getRelationships(Collections.singletonList(sampleOntologyDetails.sandboxRelationshipId), workspaceId); relationships = IterableUtils.toList(relationshipsByIRI); assertEquals(1, relationships.size()); assertEquals(SANDBOX_RELATIONSHIP_IRI, relationships.get(0).getIRI()); relationshipsByIRI = getOntologyRepository().getRelationships(Arrays.asList(sampleOntologyDetails.publicRelationshipId, sampleOntologyDetails.sandboxRelationshipId), PUBLIC); relationships = IterableUtils.toList(relationshipsByIRI); assertEquals(1, relationships.size()); assertEquals(PUBLIC_RELATIONSHIP_IRI, relationships.get(0).getIRI()); relationshipsByIRI = getOntologyRepository().getRelationships(Arrays.asList(sampleOntologyDetails.publicRelationshipId, sampleOntologyDetails.sandboxRelationshipId), workspaceId); relationships = IterableUtils.toList(relationshipsByIRI); assertEquals(2, relationships.size()); assertTrue(relationships.stream().map(Relationship::getIRI).anyMatch(iri -> iri.equals(PUBLIC_RELATIONSHIP_IRI))); assertTrue(relationships.stream().map(Relationship::getIRI).anyMatch(iri -> iri.equals(SANDBOX_RELATIONSHIP_IRI))); }
@Test public void testGetRelationshipsByIri() throws Exception { createSampleOntology(); Iterable<Relationship> relationshipsByIRI = getOntologyRepository().getRelationshipsByIRI(Collections.singletonList(PUBLIC_RELATIONSHIP_IRI), PUBLIC); List<Relationship> relationships = IterableUtils.toList(relationshipsByIRI); assertEquals(1, relationships.size()); assertEquals(PUBLIC_RELATIONSHIP_IRI, relationships.get(0).getIRI()); relationshipsByIRI = getOntologyRepository().getRelationshipsByIRI(Collections.singletonList(SANDBOX_RELATIONSHIP_IRI), workspaceId); relationships = IterableUtils.toList(relationshipsByIRI); assertEquals(1, relationships.size()); assertEquals(SANDBOX_RELATIONSHIP_IRI, relationships.get(0).getIRI()); relationshipsByIRI = getOntologyRepository().getRelationshipsByIRI(Arrays.asList(PUBLIC_RELATIONSHIP_IRI, SANDBOX_RELATIONSHIP_IRI), PUBLIC); relationships = IterableUtils.toList(relationshipsByIRI); assertEquals(1, relationships.size()); assertEquals(PUBLIC_RELATIONSHIP_IRI, relationships.get(0).getIRI()); relationshipsByIRI = getOntologyRepository().getRelationshipsByIRI(Arrays.asList(PUBLIC_RELATIONSHIP_IRI, SANDBOX_RELATIONSHIP_IRI), workspaceId); relationships = IterableUtils.toList(relationshipsByIRI); assertEquals(2, relationships.size()); assertTrue(relationships.stream().map(Relationship::getIRI).anyMatch(iri -> iri.equals(PUBLIC_RELATIONSHIP_IRI))); assertTrue(relationships.stream().map(Relationship::getIRI).anyMatch(iri -> iri.equals(SANDBOX_RELATIONSHIP_IRI))); }
properties.put(OntologyRepository.CONFIG_INTENT_RELATIONSHIP_PREFIX + intent, relationship.getIRI());
@Test public void testCreatingPublicRelationships() { setPrivileges(user, Sets.newHashSet(Privilege.ONTOLOGY_ADD, Privilege.ONTOLOGY_PUBLISH)); List<Concept> thing = Collections.singletonList(getOntologyRepository().getEntityConcept(workspaceId)); getOntologyRepository().getOrCreateRelationshipType(null, thing, thing, PUBLIC_RELATIONSHIP_IRI, null, true, user, PUBLIC); getOntologyRepository().clearCache(); Relationship noWorkspace = getOntologyRepository().getRelationshipByIRI(PUBLIC_RELATIONSHIP_IRI, PUBLIC); assertEquals(PUBLIC_RELATIONSHIP_IRI, noWorkspace.getIRI()); Relationship withWorkspace = getOntologyRepository().getRelationshipByIRI(PUBLIC_RELATIONSHIP_IRI, workspaceId); assertEquals(PUBLIC_RELATIONSHIP_IRI, withWorkspace.getIRI()); }
@Test public void testCreatingPublicRelationshipsAsSystem() { List<Concept> thing = Collections.singletonList(getOntologyRepository().getEntityConcept(workspaceId)); getOntologyRepository().getOrCreateRelationshipType(null, thing, thing, PUBLIC_RELATIONSHIP_IRI, null, true, systemUser, PUBLIC); getOntologyRepository().clearCache(); Relationship noWorkspace = getOntologyRepository().getRelationshipByIRI(PUBLIC_RELATIONSHIP_IRI, PUBLIC); assertEquals(PUBLIC_RELATIONSHIP_IRI, noWorkspace.getIRI()); Relationship withWorkspace = getOntologyRepository().getRelationshipByIRI(PUBLIC_RELATIONSHIP_IRI, workspaceId); assertEquals(PUBLIC_RELATIONSHIP_IRI, withWorkspace.getIRI()); }
@Test public void testPublishingRelationships() { setPrivileges(user, Sets.newHashSet(Privilege.ONTOLOGY_ADD, Privilege.ONTOLOGY_PUBLISH)); List<Concept> thing = Collections.singletonList(getOntologyRepository().getEntityConcept(workspaceId)); Relationship sandboxedRelationship = getOntologyRepository().getOrCreateRelationshipType(null, thing, thing, SANDBOX_RELATIONSHIP_IRI, null, true, user, workspaceId); getOntologyRepository().publishRelationship(sandboxedRelationship, user, workspaceId); getOntologyRepository().clearCache(); Relationship publicRelationship = getOntologyRepository().getRelationshipByIRI(SANDBOX_RELATIONSHIP_IRI, PUBLIC); assertEquals(SANDBOX_RELATIONSHIP_IRI, publicRelationship.getIRI()); }
@Test public void testCreatingSandboxedRelationships() { setPrivileges(user, Collections.singleton(Privilege.ONTOLOGY_ADD)); List<Concept> thing = Collections.singletonList(getOntologyRepository().getEntityConcept(workspaceId)); getOntologyRepository().getOrCreateRelationshipType(null, thing, thing, SANDBOX_RELATIONSHIP_IRI, null, true, user, workspaceId); getOntologyRepository().clearCache(); Relationship noWorkspace = getOntologyRepository().getRelationshipByIRI(SANDBOX_RELATIONSHIP_IRI, PUBLIC); assertNull(noWorkspace); Relationship withWorkspace = getOntologyRepository().getRelationshipByIRI(SANDBOX_RELATIONSHIP_IRI, workspaceId); assertEquals(SANDBOX_RELATIONSHIP_IRI, withWorkspace.getIRI()); }
ClientApiOntology.Relationship result = new ClientApiOntology.Relationship(); result.setParentIri(getParentIRI()); result.setTitle(getIRI()); result.setDisplayName(getDisplayName()); result.setDomainConceptIris(getDomainConceptIRIs()); ClientApiOntology.Relationship.InverseOf inverseOf = new ClientApiOntology.Relationship.InverseOf(); inverseOf.setIri(inverseOfIRI); inverseOf.setPrimaryIri(getPrimaryInverseOfIRI(getIRI(), inverseOfIRI)); result.getInverseOfs().add(inverseOf);
@Test public void testRelationshipHierarchy() throws Exception { loadHierarchyOwlFile(); Relationship relationship = getOntologyRepository().getRelationshipByIRI(TEST_HIERARCHY_IRI + "#personReallyKnowsPerson", PUBLIC); assertEquals(TEST_HIERARCHY_IRI + "#personKnowsPerson", relationship.getParentIRI()); relationship = getOntologyRepository().getParentRelationship(relationship, PUBLIC); assertEquals(TEST_HIERARCHY_IRI + "#personKnowsPerson", relationship.getIRI()); assertEquals(OntologyRepositoryBase.TOP_OBJECT_PROPERTY_IRI, relationship.getParentIRI()); }