public ClientApiOntology.Relationship toClientApi() { try { ClientApiOntology.Relationship result = new ClientApiOntology.Relationship(); result.setParentIri(getParentIRI()); result.setTitle(getIRI()); result.setDisplayName(getDisplayName()); result.setDomainConceptIris(getDomainConceptIRIs()); result.setRangeConceptIris(getRangeConceptIRIs()); result.setUserVisible(getUserVisible()); result.setDeleteable(getDeleteable()); result.setUpdateable(getUpdateable()); result.setTitleFormula(getTitleFormula()); result.setSubtitleFormula(getSubtitleFormula()); result.setTimeFormula(getTimeFormula()); if (getIntents() != null) { result.getIntents().addAll(Arrays.asList(getIntents())); for (Map.Entry<String, String> additionalProperty : getMetadata().entrySet()) { result.getMetadata().put(additionalProperty.getKey(), additionalProperty.getValue()); result.setSandboxStatus(getSandboxStatus()); Iterable<String> inverseOfIRIs = getInverseOfIRIs(); for (String inverseOfIRI : inverseOfIRIs) { ClientApiOntology.Relationship.InverseOf inverseOf = new ClientApiOntology.Relationship.InverseOf(); inverseOf.setIri(inverseOfIRI); inverseOf.setPrimaryIri(getPrimaryInverseOfIRI(getIRI(), inverseOfIRI)); result.getInverseOfs().add(inverseOf);
@Override public Iterable<Relationship> getRelationships(Iterable<String> ids, String workspaceId) { if (ids != null) { List<String> idList = IterableUtils.toList(ids); Iterable<Relationship> workspaceRelationships = getRelationships(workspaceId); return StreamSupport.stream(workspaceRelationships.spliterator(), true) .filter(r -> idList.contains(r.getId())) .collect(Collectors.toList()); } return Collections.emptyList(); }
public void updateIntents(String[] newIntents, User user, Authorizations authorizations) { ArrayList<String> toBeRemovedIntents = Lists.newArrayList(getIntents()); for (String newIntent : newIntents) { if (toBeRemovedIntents.contains(newIntent)) { toBeRemovedIntents.remove(newIntent); } else { addIntent(newIntent, user, authorizations); } } for (String toBeRemovedIntent : toBeRemovedIntents) { removeIntent(toBeRemovedIntent, authorizations); } }
private void validateTestOwlRelationship() { Relationship relationship = getOntologyRepository().getRelationshipByIRI(TEST_IRI + "#personKnowsPerson", PUBLIC); assertEquals("Knows", relationship.getDisplayName()); assertEquals("prop('http://visallo.org/test#firstMet') || ''", relationship.getTimeFormula()); assertTrue(relationship.getRangeConceptIRIs().contains("http://visallo.org/test#person")); assertTrue(relationship.getDomainConceptIRIs().contains("http://visallo.org/test#person")); relationship = getOntologyRepository().getRelationshipByIRI(TEST_IRI + "#personIsRelatedToPerson", PUBLIC); assertEquals("Is Related To", relationship.getDisplayName()); String[] intents = relationship.getIntents(); assertEquals(1, intents.length); assertEquals("test", intents[0]); assertTrue(relationship.getRangeConceptIRIs().contains("http://visallo.org/test#person")); assertTrue(relationship.getDomainConceptIRIs().contains("http://visallo.org/test#person")); }
if (!relationship.getDomainConceptIRIs().contains(domainConcept.getIRI())) { relationship.getDomainConceptIRIs().add(domainConcept.getIRI()); if (!relationship.getRangeConceptIRIs().contains(rangeConcept.getIRI())) { relationship.getRangeConceptIRIs().add(rangeConcept.getIRI()); String parentIRI = parent == null ? null : parent.getIRI(); Collection<OntologyProperty> properties = new ArrayList<>(); InMemoryRelationship inMemRelationship = new InMemoryRelationship(
.filter(relationship -> relationship != null && relationship.getSandboxStatus() != SandboxStatus.PUBLIC) .flatMap(relationship -> { try { return ontologyRepository.getRelationshipAndAncestors(relationship, workspaceId).stream() .filter(relationshipOrAncestor -> relationshipOrAncestor.getSandboxStatus() != SandboxStatus.PUBLIC) .map(relationshipOrAncestor -> { try { ontologyRepository.publishRelationship(relationshipOrAncestor, user, workspaceId); } catch (Exception ex) { LOGGER.error("Error publishing relationship %s", relationship.getIRI(), ex); edgeIdsByLabel.get(relationship.getIRI()).forEach(edgeId -> { ClientApiRelationshipPublishItem data = publishDataByEdgeId.get(edgeId); data.setErrorMessage("Unable to publish relationship " + relationship.getDisplayName()); }); return relationshipOrAncestor.getId(); }); } catch (Exception ex) { LOGGER.error("Error publishing relationship %s", relationship.getIRI(), ex); edgeIdsByLabel.get(relationship.getIRI()).forEach(edgeId -> { ClientApiRelationshipPublishItem data = publishDataByEdgeId.get(edgeId); data.setErrorMessage("Unable to publish relationship " + relationship.getDisplayName()); });
@Override public String toString() { return "Relationship{" + "iri='" + getIRI() + '\'' + '}'; } }
if (relationship.getProperties().contains(property)) { if (!domainIris.remove(relationship.getIRI())) { if (isPublic(workspaceId) || relationship.getSandboxStatus() == SandboxStatus.PRIVATE) { relationship.getProperties().remove(property); inMemoryProperty.getRelationshipIris().remove(relationship.getIRI());
); Relationship relationship = ontologyRepository.getRelationshipByIRI(builder.getIri(), PUBLIC); List<String> domainConceptIRIs = relationship.getDomainConceptIRIs(); List<String> outVertexAndParentIris = getConceptIriWithParents(builder.getOutVertexIri()); outVertexAndParentIris.retainAll(domainConceptIRIs); List<String> rangeConceptIRIs = relationship.getRangeConceptIRIs(); List<String> inVertexAndParentIris = getConceptIriWithParents(builder.getInVertexIri()); inVertexAndParentIris.retainAll(rangeConceptIRIs);
ontologyRepository.addRangeConceptsToRelationshipType(relationshipIri, foundRangeIris, user, workspaceId); relationship.setProperty(OntologyProperties.DISPLAY_NAME.getPropertyName(), displayName, user, authorizations); workQueueRepository.pushOntologyRelationshipsChange(workspaceId, relationship.getId()); return ontologyRepository.getRelationshipByIRI(relationshipIri, workspaceId).toClientApi();
relationshipsByIri = Collections.unmodifiableMap(stream(relationships) .collect(Collectors.toMap(Relationship::getIRI, relationship -> { Collection<OntologyProperty> properties = relationship.getProperties(); if (properties != null && properties.size() > 0) { properties.forEach(property -> propertyMap.put(property.getIri(), property));
@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()); }
if (relationships.size() == 1) { for (Relationship relationship : relationships) { if (relationship.getSandboxStatus().equals(SandboxStatus.PRIVATE)) { Graph graph = getGraph(); Authorizations authorizations = graph.createAuthorizations(workspaceId); long results = query.search().getTotalHits(); if (results == 0) { List<OntologyProperty> removeProperties = relationship.getProperties().stream().filter(ontologyProperty -> ontologyProperty.getSandboxStatus().equals(SandboxStatus.PRIVATE) && ontologyProperty.getConceptIris().size() == 0 &&
public SandboxStatus getSandboxStatus() { for (Concept concept : getConcepts()) { SandboxStatus sandboxStatus = concept.getSandboxStatus(); if (sandboxStatus != SandboxStatus.PUBLIC) { return sandboxStatus; } } for (Relationship relationship : getRelationships()) { SandboxStatus sandboxStatus = relationship.getSandboxStatus(); if (sandboxStatus != SandboxStatus.PUBLIC) { return sandboxStatus; } } for (OntologyProperty property : getProperties()) { SandboxStatus sandboxStatus = property.getSandboxStatus(); if (sandboxStatus != SandboxStatus.PUBLIC) { return sandboxStatus; } } return SandboxStatus.PUBLIC; } }
for (String intent : relationship.getIntents()) { properties.put(OntologyRepository.CONFIG_INTENT_RELATIONSHIP_PREFIX + intent, relationship.getIRI());
@Override public Relationship getParentRelationship(Relationship relationship, String workspaceId) { return computeRelationshipCacheForWorkspace(workspaceId).get(relationship.getParentIRI()); }
relationship.addIntent(valueString, user, authorizations); continue; relationship.setProperty( OntologyProperties.USER_VISIBLE.getPropertyName(), Boolean.parseBoolean(valueString), relationship.setProperty( OntologyProperties.DELETEABLE.getPropertyName(), Boolean.parseBoolean(valueString), relationship.setProperty( OntologyProperties.UPDATEABLE.getPropertyName(), Boolean.parseBoolean(valueString), relationship.setProperty( OntologyProperties.DISPLAY_NAME.getPropertyName(), valueString, relationship.setProperty(annotationIri, valueString, user, authorizations);
@Override public String getDisplayNameForLabel(String relationshipIRI, String workspaceId) { String displayName = null; if (relationshipIRI != null && !relationshipIRI.trim().isEmpty()) { try { Relationship relationship = getRelationshipByIRI(relationshipIRI, workspaceId); if (relationship != null) { displayName = relationship.getDisplayName(); } } catch (IllegalArgumentException iae) { throw new IllegalStateException( String.format("Found multiple vertices for relationship label \"%s\"", relationshipIRI), iae ); } } return displayName; }
protected List<Relationship> findLoadedRelationshipsByIntent(String intent, String workspaceId) { List<Relationship> results = new ArrayList<>(); for (Relationship relationship : getRelationships(workspaceId)) { String[] relationshipIntents = relationship.getIntents(); if (Arrays.asList(relationshipIntents).contains(intent)) { results.add(relationship); } } return results; }
@Override public void before() throws Exception { super.before(); user = getUserRepository().findOrAddUser("base-junit", "Base Junit", "base-junit@visallo.com", "password"); User systemUser = getUserRepository().getSystemUser(); Authorizations authorizations = getAuthorizationRepository().getGraphAuthorizations(systemUser); thingConcept = getOntologyRepository().getEntityConcept(PUBLIC); List<Concept> things = Collections.singletonList(thingConcept); Relationship hasEntityRel = getOntologyRepository().getOrCreateRelationshipType(null, things, things, "has-entity-iri", true, systemUser, PUBLIC); hasEntityRel.addIntent("entityHasImage", user, authorizations); getOntologyRepository().getOrCreateConcept(thingConcept, JUNIT_CONCEPT_TYPE, "Junit Concept", null, systemUser, PUBLIC); getOntologyRepository().getOrCreateRelationshipType(null, things, things, JUNIT_EDGE_LABEL, true, systemUser, PUBLIC); OntologyPropertyDefinition propertyDefinition = new OntologyPropertyDefinition(things, JUNIT_PROPERTY_NAME, "Junit Property", PropertyType.STRING); propertyDefinition.setTextIndexHints(Collections.singleton(TextIndexHint.EXACT_MATCH)); propertyDefinition.setUserVisible(true); getOntologyRepository().getOrCreateProperty(propertyDefinition, systemUser, PUBLIC); getOntologyRepository().clearCache(); workspace = getWorkspaceRepository().add("ws1", "workspace 1", user); workspaceAuthorizations = getAuthorizationRepository().getGraphAuthorizations(user, workspace.getWorkspaceId()); }