|
@@ -93,6 +93,8 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
val requestedOntology = requestedOntologyStr.toSmartIriWithErr( |
|
|
throw BadRequestException(s"Invalid ontology IRI: $requestedOntologyStr")) |
|
|
|
|
|
stringFormatter.checkExternalOntologyName(requestedOntology) |
|
|
|
|
|
val targetSchema = requestedOntology.getOntologySchema match { |
|
|
case Some(apiV2Schema: ApiV2Schema) => apiV2Schema |
|
|
case _ => throw BadRequestException(s"Invalid ontology IRI: $requestedOntologyStr") |
|
@@ -163,14 +165,14 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
put { |
|
|
entity(as[String]) { jsonRequest => requestContext => |
|
|
{ |
|
|
|
|
|
val requestDoc: JsonLDDocument = JsonLDUtil.parseJsonLD(jsonRequest) |
|
|
|
|
|
val requestMessageFuture: Future[ChangeOntologyMetadataRequestV2] = for { |
|
|
requestingUser <- getUserADM( |
|
|
requestContext = requestContext, |
|
|
featureFactoryConfig = featureFactoryConfig |
|
|
) |
|
|
|
|
|
requestMessage: ChangeOntologyMetadataRequestV2 <- ChangeOntologyMetadataRequestV2.fromJsonLD( |
|
|
jsonLDDocument = requestDoc, |
|
|
apiRequestID = UUID.randomUUID, |
|
@@ -208,6 +210,7 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
requestContext = requestContext, |
|
|
featureFactoryConfig = featureFactoryConfig |
|
|
) |
|
|
|
|
|
validatedProjectIris = projectIris |
|
|
.map(iri => iri.toSmartIriWithErr(throw BadRequestException(s"Invalid project IRI: $iri"))) |
|
|
.toSet |
|
@@ -235,6 +238,8 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
val requestedOntologyIri = externalOntologyIriStr.toSmartIriWithErr( |
|
|
throw BadRequestException(s"Invalid ontology IRI: $externalOntologyIriStr")) |
|
|
|
|
|
stringFormatter.checkExternalOntologyName(requestedOntologyIri) |
|
|
|
|
|
val targetSchema = requestedOntologyIri.getOntologySchema match { |
|
|
case Some(apiV2Schema: ApiV2Schema) => apiV2Schema |
|
|
case _ => throw BadRequestException(s"Invalid ontology IRI: $externalOntologyIriStr") |
|
@@ -277,13 +282,14 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
// Create a new class. |
|
|
entity(as[String]) { jsonRequest => requestContext => |
|
|
{ |
|
|
|
|
|
val requestMessageFuture: Future[CreateClassRequestV2] = for { |
|
|
requestingUser <- getUserADM( |
|
|
requestContext = requestContext, |
|
|
featureFactoryConfig = featureFactoryConfig |
|
|
) |
|
|
|
|
|
requestDoc: JsonLDDocument = JsonLDUtil.parseJsonLD(jsonRequest) |
|
|
|
|
|
requestMessage: CreateClassRequestV2 <- CreateClassRequestV2.fromJsonLD( |
|
|
jsonLDDocument = requestDoc, |
|
|
apiRequestID = UUID.randomUUID, |
|
@@ -316,13 +322,14 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
// Change the labels or comments of a class. |
|
|
entity(as[String]) { jsonRequest => requestContext => |
|
|
{ |
|
|
|
|
|
val requestMessageFuture: Future[ChangeClassLabelsOrCommentsRequestV2] = for { |
|
|
requestingUser <- getUserADM( |
|
|
requestContext = requestContext, |
|
|
featureFactoryConfig = featureFactoryConfig |
|
|
) |
|
|
|
|
|
requestDoc: JsonLDDocument = JsonLDUtil.parseJsonLD(jsonRequest) |
|
|
|
|
|
requestMessage <- ChangeClassLabelsOrCommentsRequestV2.fromJsonLD( |
|
|
jsonLDDocument = requestDoc, |
|
|
apiRequestID = UUID.randomUUID, |
|
@@ -356,13 +363,14 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
// Add cardinalities to a class. |
|
|
entity(as[String]) { jsonRequest => requestContext => |
|
|
{ |
|
|
|
|
|
val requestMessageFuture: Future[AddCardinalitiesToClassRequestV2] = for { |
|
|
requestingUser <- getUserADM( |
|
|
requestContext = requestContext, |
|
|
featureFactoryConfig = featureFactoryConfig |
|
|
) |
|
|
|
|
|
requestDoc: JsonLDDocument = JsonLDUtil.parseJsonLD(jsonRequest) |
|
|
|
|
|
requestMessage: AddCardinalitiesToClassRequestV2 <- AddCardinalitiesToClassRequestV2.fromJsonLD( |
|
|
jsonLDDocument = requestDoc, |
|
|
apiRequestID = UUID.randomUUID, |
|
@@ -396,13 +404,14 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
// Change a class's cardinalities. |
|
|
entity(as[String]) { jsonRequest => requestContext => |
|
|
{ |
|
|
|
|
|
val requestMessageFuture: Future[ChangeCardinalitiesRequestV2] = for { |
|
|
requestingUser <- getUserADM( |
|
|
requestContext = requestContext, |
|
|
featureFactoryConfig = featureFactoryConfig |
|
|
) |
|
|
|
|
|
requestDoc: JsonLDDocument = JsonLDUtil.parseJsonLD(jsonRequest) |
|
|
|
|
|
requestMessage: ChangeCardinalitiesRequestV2 <- ChangeCardinalitiesRequestV2.fromJsonLD( |
|
|
jsonLDDocument = requestDoc, |
|
|
apiRequestID = UUID.randomUUID, |
|
@@ -434,11 +443,12 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
path(OntologiesBasePath / "classes" / Segments) { externalResourceClassIris: List[IRI] => |
|
|
get { requestContext => |
|
|
{ |
|
|
|
|
|
val classesAndSchemas: Set[(SmartIri, ApiV2Schema)] = externalResourceClassIris.map { classIriStr: IRI => |
|
|
val requestedClassIri: SmartIri = |
|
|
classIriStr.toSmartIriWithErr(throw BadRequestException(s"Invalid class IRI: $classIriStr")) |
|
|
|
|
|
stringFormatter.checkExternalOntologyName(requestedClassIri) |
|
|
|
|
|
if (!requestedClassIri.isKnoraApiV2EntityIri) { |
|
|
throw BadRequestException(s"Invalid class IRI: $classIriStr") |
|
|
} |
|
@@ -508,6 +518,7 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
} |
|
|
|
|
|
val classIri = classIriStr.toSmartIri |
|
|
stringFormatter.checkExternalOntologyName(classIri) |
|
|
|
|
|
if (!classIri.getOntologySchema.contains(ApiV2Complex)) { |
|
|
throw BadRequestException(s"Invalid class IRI for request: $classIriStr") |
|
@@ -555,13 +566,14 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
// Create a new property. |
|
|
entity(as[String]) { jsonRequest => requestContext => |
|
|
{ |
|
|
|
|
|
val requestMessageFuture: Future[CreatePropertyRequestV2] = for { |
|
|
requestingUser <- getUserADM( |
|
|
requestContext = requestContext, |
|
|
featureFactoryConfig = featureFactoryConfig |
|
|
) |
|
|
|
|
|
requestDoc: JsonLDDocument = JsonLDUtil.parseJsonLD(jsonRequest) |
|
|
|
|
|
requestMessage: CreatePropertyRequestV2 <- CreatePropertyRequestV2.fromJsonLD( |
|
|
jsonLDDocument = requestDoc, |
|
|
apiRequestID = UUID.randomUUID, |
|
@@ -595,13 +607,14 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
// Change the labels or comments of a property. |
|
|
entity(as[String]) { jsonRequest => requestContext => |
|
|
{ |
|
|
|
|
|
val requestMessageFuture: Future[ChangePropertyLabelsOrCommentsRequestV2] = for { |
|
|
requestingUser <- getUserADM( |
|
|
requestContext = requestContext, |
|
|
featureFactoryConfig = featureFactoryConfig |
|
|
) |
|
|
|
|
|
requestDoc: JsonLDDocument = JsonLDUtil.parseJsonLD(jsonRequest) |
|
|
|
|
|
requestMessage: ChangePropertyLabelsOrCommentsRequestV2 <- ChangePropertyLabelsOrCommentsRequestV2 |
|
|
.fromJsonLD( |
|
|
jsonLDDocument = requestDoc, |
|
@@ -634,11 +647,12 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
path(OntologiesBasePath / "properties" / Segments) { externalPropertyIris: List[IRI] => |
|
|
get { requestContext => |
|
|
{ |
|
|
|
|
|
val propsAndSchemas: Set[(SmartIri, ApiV2Schema)] = externalPropertyIris.map { propIriStr: IRI => |
|
|
val requestedPropIri: SmartIri = |
|
|
propIriStr.toSmartIriWithErr(throw BadRequestException(s"Invalid property IRI: $propIriStr")) |
|
|
|
|
|
stringFormatter.checkExternalOntologyName(requestedPropIri) |
|
|
|
|
|
if (!requestedPropIri.isKnoraApiV2EntityIri) { |
|
|
throw BadRequestException(s"Invalid property IRI: $propIriStr") |
|
|
} |
|
@@ -701,13 +715,13 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
path(OntologiesBasePath / "properties" / Segments) { externalPropertyIris: List[IRI] => |
|
|
delete { requestContext => |
|
|
{ |
|
|
|
|
|
val propertyIriStr = externalPropertyIris match { |
|
|
case List(str) => str |
|
|
case _ => throw BadRequestException(s"Only one property can be deleted at a time") |
|
|
} |
|
|
|
|
|
val propertyIri = propertyIriStr.toSmartIri |
|
|
stringFormatter.checkExternalOntologyName(propertyIri) |
|
|
|
|
|
if (!propertyIri.getOntologySchema.contains(ApiV2Complex)) { |
|
|
throw BadRequestException(s"Invalid property IRI for request: $propertyIri") |
|
@@ -754,13 +768,14 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
post { |
|
|
entity(as[String]) { jsonRequest => requestContext => |
|
|
{ |
|
|
|
|
|
val requestMessageFuture: Future[CreateOntologyRequestV2] = for { |
|
|
requestingUser <- getUserADM( |
|
|
requestContext = requestContext, |
|
|
featureFactoryConfig = featureFactoryConfig |
|
|
) |
|
|
|
|
|
requestDoc: JsonLDDocument = JsonLDUtil.parseJsonLD(jsonRequest) |
|
|
|
|
|
requestMessage: CreateOntologyRequestV2 <- CreateOntologyRequestV2.fromJsonLD( |
|
|
jsonLDDocument = requestDoc, |
|
|
apiRequestID = UUID.randomUUID, |
|
@@ -792,8 +807,8 @@ class OntologiesRouteV2(routeData: KnoraRouteData) extends KnoraRoute(routeData) |
|
|
ontologyIriStr => |
|
|
delete { requestContext => |
|
|
{ |
|
|
|
|
|
val ontologyIri = ontologyIriStr.toSmartIri |
|
|
stringFormatter.checkExternalOntologyName(ontologyIri) |
|
|
|
|
|
if (!ontologyIri.isKnoraOntologyIri || ontologyIri.isKnoraBuiltInDefinitionIri || !ontologyIri.getOntologySchema |
|
|
.contains(ApiV2Complex)) { |
|
|