initial commit
This commit is contained in:
2
.mvn/wrapper/maven-wrapper.properties
vendored
Normal file
2
.mvn/wrapper/maven-wrapper.properties
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
distributionType=only-script
|
||||||
|
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip
|
||||||
123
pom.xml
Normal file
123
pom.xml
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>3.5.5</version>
|
||||||
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<groupId>com.kapdion.omds</groupId>
|
||||||
|
<artifactId>productdefinitions</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
|
||||||
|
<packaging>war</packaging>
|
||||||
|
<name>productdefinitions</name>
|
||||||
|
<description>productdefinitions</description>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
<java.version>21</java.version>
|
||||||
|
|
||||||
|
<omds.version>2025.27-PRODUKTE-SNAPSHOT</omds.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- Die Norm -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>at.vvo.omds</groupId>
|
||||||
|
<artifactId>OMDSServiceDefinition</artifactId>
|
||||||
|
<version>${omds.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-classic</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<!-- Webapp -->
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-classic</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-devtools</artifactId>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.eclipse.rdf4j/rdf4j-model -->
|
||||||
|
<!-- Lizenz: https://eclipse.org/org/documents/edl-v10.php-->
|
||||||
|
<groupId>org.eclipse.rdf4j</groupId>
|
||||||
|
<artifactId>rdf4j-model</artifactId>
|
||||||
|
<version>5.1.5</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.eclipse.rdf4j/rdf4j-rio-turtle -->
|
||||||
|
<!-- Lizenz: https://eclipse.org/org/documents/edl-v10.php-->
|
||||||
|
<groupId>org.eclipse.rdf4j</groupId>
|
||||||
|
<artifactId>rdf4j-rio-turtle</artifactId>
|
||||||
|
<version>5.1.5</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.eclipse.rdf4j/rdf4j-shacl -->
|
||||||
|
<!-- Lizenz: https://eclipse.org/org/documents/edl-v10.php-->
|
||||||
|
<groupId>org.eclipse.rdf4j</groupId>
|
||||||
|
<artifactId>rdf4j-shacl</artifactId>
|
||||||
|
<version>5.1.5</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.eclipse.rdf4j/rdf4j-rio-jsonld -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.rdf4j</groupId>
|
||||||
|
<artifactId>rdf4j-rio-jsonld</artifactId>
|
||||||
|
<version>5.1.5</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<optional>true</optional>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<finalName>RDFOMDSVertrasgverwaltung</finalName><!-- name of war -->
|
||||||
|
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<excludes>
|
||||||
|
<exclude>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
</exclude>
|
||||||
|
</excludes>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package com.kapdion.omds.productdefinitions;
|
||||||
|
|
||||||
|
import at.vvo.omds.types.omds3.r2025_05.common.ProductsRequest;
|
||||||
|
|
||||||
|
import com.kapdion.omds.productdefinitions.apriori.AprioriService;
|
||||||
|
import com.kapdion.omds.productdefinitions.calculate.CalculateService;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.xml.datatype.DatatypeConfigurationException;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
public class EndpointsZentralesBOA {
|
||||||
|
|
||||||
|
@PostMapping("/ProductsRequest")
|
||||||
|
public String apriori(@RequestBody ProductsRequest productsRequest){
|
||||||
|
AprioriService as = new AprioriService();
|
||||||
|
String s = as.getProductsResponse(productsRequest);
|
||||||
|
System.out.println(s);
|
||||||
|
return s;
|
||||||
|
};
|
||||||
|
|
||||||
|
@PostMapping("/CalculateRequest")
|
||||||
|
public String calc(@RequestBody String calculateRequest) throws IOException, DatatypeConfigurationException {
|
||||||
|
CalculateService cs = new CalculateService();
|
||||||
|
cs.buildResponse(calculateRequest);
|
||||||
|
return "";
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.kapdion.omds.productdefinitions;
|
||||||
|
|
||||||
|
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||||
|
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
|
||||||
|
|
||||||
|
public class ServletInitializer extends SpringBootServletInitializer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
|
||||||
|
return application.sources(productdefinitionsApplication.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
package com.kapdion.omds.productdefinitions.apriori;
|
||||||
|
|
||||||
|
import at.vvo.omds.types.omds3.r2025_05.common.ProductsRequest;
|
||||||
|
|
||||||
|
import org.eclipse.rdf4j.model.Model;
|
||||||
|
import org.eclipse.rdf4j.model.impl.LinkedHashModel;
|
||||||
|
import org.eclipse.rdf4j.model.vocabulary.XSD;
|
||||||
|
import org.eclipse.rdf4j.query.GraphQuery;
|
||||||
|
import org.eclipse.rdf4j.query.GraphQueryResult;
|
||||||
|
import org.eclipse.rdf4j.repository.Repository;
|
||||||
|
import org.eclipse.rdf4j.repository.RepositoryConnection;
|
||||||
|
import org.eclipse.rdf4j.repository.sail.SailRepository;
|
||||||
|
import org.eclipse.rdf4j.rio.RDFFormat;
|
||||||
|
import org.eclipse.rdf4j.rio.Rio;
|
||||||
|
import org.eclipse.rdf4j.sail.memory.MemoryStore;
|
||||||
|
|
||||||
|
import javax.xml.datatype.DatatypeConstants;
|
||||||
|
import javax.xml.datatype.DatatypeFactory;
|
||||||
|
import javax.xml.datatype.XMLGregorianCalendar;
|
||||||
|
import java.io.*;
|
||||||
|
|
||||||
|
public class AprioriService {
|
||||||
|
|
||||||
|
public String getProductsResponse(ProductsRequest productsRequest) {
|
||||||
|
Repository repo = new SailRepository(new MemoryStore());
|
||||||
|
repo.init();
|
||||||
|
|
||||||
|
try (RepositoryConnection conn = repo.getConnection()) {
|
||||||
|
conn.add(new File("src/main/resources/data/prodelements.ttl"), RDFFormat.TURTLE);
|
||||||
|
|
||||||
|
String queryString = """
|
||||||
|
PREFIX vvo: <http://vvo.pisanoapi.at/>
|
||||||
|
|
||||||
|
CONSTRUCT {
|
||||||
|
?prodelement vvo:ins_id ?ins_id ;
|
||||||
|
vvo:bez ?bez ;
|
||||||
|
vvo:created ?created ;
|
||||||
|
vvo:salesFrom ?salesfrom ;
|
||||||
|
vvo:salesTo ?salesto;
|
||||||
|
vvo:minOccurrence ?minOccurrence ;
|
||||||
|
vvo:maxOccurrence ?maxOccurrence ;
|
||||||
|
vvo:type ?type ;
|
||||||
|
vvo:risikoobjektType ?risikoobjektType .
|
||||||
|
}
|
||||||
|
WHERE {
|
||||||
|
?prodelement a vvo:ProdElement .
|
||||||
|
OPTIONAL { ?prodelement vvo:ins_id ?ins_id . }
|
||||||
|
OPTIONAL { ?prodelement vvo:bez ?bez . }
|
||||||
|
OPTIONAL { ?prodelement vvo:created ?created . }
|
||||||
|
OPTIONAL { ?prodelement vvo:salesFrom ?salesfrom . }
|
||||||
|
OPTIONAL { ?prodelement vvo:salesTo ?salesto . }
|
||||||
|
OPTIONAL { ?prodelement vvo:minOccurrence ?minOccurrence . }
|
||||||
|
OPTIONAL { ?prodelement vvo:maxOccurrence ?maxOccurrence . }
|
||||||
|
OPTIONAL { ?prodelement vvo:type ?type . }
|
||||||
|
OPTIONAL { ?prodelement vvo:risikoobjektType ?risikoobjektType . }
|
||||||
|
FILTER ( ?salesfrom < ?stichtag && (!BOUND(?salesto) || ?salesto > ?stichtag) )
|
||||||
|
}
|
||||||
|
|
||||||
|
""";
|
||||||
|
|
||||||
|
XMLGregorianCalendar stichtagFormated = DatatypeFactory.newInstance().newXMLGregorianCalendarDate(productsRequest.getStichtag().getYear(), productsRequest.getStichtag().getMonth(), productsRequest.getStichtag().getDay(), DatatypeConstants.FIELD_UNDEFINED);
|
||||||
|
|
||||||
|
GraphQuery graphQuery = conn.prepareGraphQuery(queryString);
|
||||||
|
graphQuery.setBinding("stichtag", conn.getValueFactory().createLiteral(stichtagFormated.toXMLFormat(), XSD.DATE));
|
||||||
|
|
||||||
|
Model model = new LinkedHashModel();
|
||||||
|
try (GraphQueryResult result = graphQuery.evaluate()) {
|
||||||
|
result.forEach(model::add);
|
||||||
|
}
|
||||||
|
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
Rio.write(model, baos, RDFFormat.JSONLD);
|
||||||
|
return baos.toString();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,210 @@
|
|||||||
|
package com.kapdion.omds.productdefinitions.calculate;
|
||||||
|
|
||||||
|
import at.vvo.omds.types.omds3.r2025_05.common.ProduktAllgemeinType;
|
||||||
|
import at.vvo.omds.types.omds3.r2025_05.common.ProduktbausteinType;
|
||||||
|
import at.vvo.omds.types.omds3.r2025_05.common.VerkaufsproduktAllgemeinType;
|
||||||
|
import at.vvo.omds.types.omds3.r2025_05.common.VerkaufsproduktType;
|
||||||
|
import org.eclipse.rdf4j.model.*;
|
||||||
|
import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
|
||||||
|
import org.eclipse.rdf4j.model.impl.TreeModel;
|
||||||
|
import org.eclipse.rdf4j.model.util.Models;
|
||||||
|
import org.eclipse.rdf4j.rio.RDFFormat;
|
||||||
|
import org.eclipse.rdf4j.rio.Rio;
|
||||||
|
|
||||||
|
import javax.xml.datatype.DatatypeConfigurationException;
|
||||||
|
import javax.xml.datatype.DatatypeFactory;
|
||||||
|
import javax.xml.datatype.XMLGregorianCalendar;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.StringReader;
|
||||||
|
|
||||||
|
import static org.eclipse.rdf4j.model.util.Values.iri;
|
||||||
|
|
||||||
|
public class CalculateService {
|
||||||
|
public String buildResponse(String calculateRequest) throws IOException, DatatypeConfigurationException {
|
||||||
|
VerkaufsproduktType vp = calculateRequestToVerkaufsprodukt(calculateRequest);
|
||||||
|
|
||||||
|
System.out.println("vp: " + vp.getBezeichnung());
|
||||||
|
for (ProduktbausteinType unterbaustein : vp.getBausteine()){
|
||||||
|
System.out.println("unterbaustein: " + unterbaustein.getBezeichnung());
|
||||||
|
}
|
||||||
|
validateRequest(vp);
|
||||||
|
calculate();
|
||||||
|
|
||||||
|
Model response = createRdfModel(vp);
|
||||||
|
|
||||||
|
|
||||||
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
// Rio.write(response, baos, RDFFormat.JSONLD);
|
||||||
|
// return baos.toString();
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
private VerkaufsproduktType calculateRequestToVerkaufsprodukt(String calculateRequest) throws IOException, DatatypeConfigurationException {
|
||||||
|
Model model = Rio.parse(new StringReader(calculateRequest), "", RDFFormat.JSONLD);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VerkaufsproduktType verkaufsproduktType = new VerkaufsproduktAllgemeinType();
|
||||||
|
|
||||||
|
for (Resource iri : Models.subjectIRIs(model)) {
|
||||||
|
|
||||||
|
System.out.println(iri.stringValue());
|
||||||
|
ValueFactory vf = SimpleValueFactory.getInstance();
|
||||||
|
|
||||||
|
|
||||||
|
int insId = Integer.parseInt(Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/ins_id"), null)).map(Literal::getLabel).orElse("-1"));
|
||||||
|
int maxOccurrence = Integer.parseInt(Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/maxOccurrence"), null)).map(Literal::getLabel).orElse("-1"));
|
||||||
|
int minOccurrence = Integer.parseInt(Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/minOccurrence"), null)).map(Literal::getLabel).orElse("-1"));
|
||||||
|
String bez = Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/bez"), null)).map(Literal::getLabel).orElse(null);
|
||||||
|
String type = Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/type"), null)).map(Literal::getLabel).orElse(null);
|
||||||
|
String risikoobjektType = Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/risikoobjektType"), null)).map(Literal::getLabel).orElse(null);
|
||||||
|
XMLGregorianCalendar verkaufsoffenVon = Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/salesFrom"), null)).map(Literal::getLabel).isPresent() ? DatatypeFactory.newInstance().newXMLGregorianCalendar(
|
||||||
|
Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/salesFrom"), null)).map(Literal::getLabel).orElse(null)) : null ;
|
||||||
|
XMLGregorianCalendar verkaufsoffenBis = Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/salesTo"), null)).map(Literal::getLabel).isPresent() ? DatatypeFactory.newInstance().newXMLGregorianCalendar(
|
||||||
|
Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/salesTo"), null)).map(Literal::getLabel).orElse(null)) : null;
|
||||||
|
|
||||||
|
|
||||||
|
for (Resource unterbaustein : Models.objectResources(model.filter(iri, vf.createIRI("http://vvo.pisanoapi.at/baustein"), null))){
|
||||||
|
ProduktbausteinType baustein = calculateRequestToUnterbaustein(model, unterbaustein);
|
||||||
|
verkaufsproduktType.getBausteine().add(baustein);
|
||||||
|
}
|
||||||
|
|
||||||
|
verkaufsproduktType.setId(iri.stringValue().substring(iri.stringValue().length() - 1));
|
||||||
|
verkaufsproduktType.setBezeichnung(bez);
|
||||||
|
verkaufsproduktType.setTyp(type);
|
||||||
|
verkaufsproduktType.setVerkaufsoffenVon(verkaufsoffenVon);
|
||||||
|
verkaufsproduktType.setVerkaufsoffenBis(verkaufsoffenBis);
|
||||||
|
verkaufsproduktType.setMaxVorkommen(maxOccurrence);
|
||||||
|
verkaufsproduktType.setMinVorkommen(minOccurrence);
|
||||||
|
verkaufsproduktType.setRisikoobjektErforderlich(risikoobjektType != null);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return verkaufsproduktType;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ProduktbausteinType calculateRequestToUnterbaustein(Model model, Resource iriUnterbaustein) throws IOException, DatatypeConfigurationException {
|
||||||
|
ProduktbausteinType produktbausteinType = new ProduktAllgemeinType();
|
||||||
|
|
||||||
|
for (Resource iri : Models.subjectIRIs(model)) {
|
||||||
|
if (iri.equals(iriUnterbaustein)) {
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println(iri.stringValue());
|
||||||
|
ValueFactory vf = SimpleValueFactory.getInstance();
|
||||||
|
|
||||||
|
|
||||||
|
int insId = Integer.parseInt(Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/ins_id"), null)).map(Literal::getLabel).orElse("-1"));
|
||||||
|
int maxOccurrence = Integer.parseInt(Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/maxOccurrence"), null)).map(Literal::getLabel).orElse("-1"));
|
||||||
|
int minOccurrence = Integer.parseInt(Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/minOccurrence"), null)).map(Literal::getLabel).orElse("-1"));
|
||||||
|
String bez = Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/bez"), null)).map(Literal::getLabel).orElse(null);
|
||||||
|
String type = Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/type"), null)).map(Literal::getLabel).orElse(null);
|
||||||
|
String risikoobjektType = Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/risikoobjektType"), null)).map(Literal::getLabel).orElse(null);
|
||||||
|
XMLGregorianCalendar verkaufsoffenVon = Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/salesFrom"), null)).map(Literal::getLabel).isPresent() ? DatatypeFactory.newInstance().newXMLGregorianCalendar(
|
||||||
|
Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/salesFrom"), null)).map(Literal::getLabel).orElse(null)) : null;
|
||||||
|
XMLGregorianCalendar verkaufsoffenBis = Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/salesTo"), null)).map(Literal::getLabel).isPresent() ? DatatypeFactory.newInstance().newXMLGregorianCalendar(
|
||||||
|
Models.objectLiteral(model.filter(iri, vf.createIRI(
|
||||||
|
"http://vvo.pisanoapi.at/salesTo"), null)).map(Literal::getLabel).orElse(null)) : null;
|
||||||
|
|
||||||
|
|
||||||
|
for (Value unterbaustein : Models.objectResources(model.filter(iri, vf.createIRI("http://vvo.pisanoapi.at/baustein"), null))) {
|
||||||
|
ProduktbausteinType baustein = calculateRequestToVerkaufsprodukt(unterbaustein.stringValue());
|
||||||
|
produktbausteinType.getBausteine().add(baustein);
|
||||||
|
}
|
||||||
|
|
||||||
|
produktbausteinType.setId(iri.stringValue().substring(iri.stringValue().length() - 1));
|
||||||
|
produktbausteinType.setBezeichnung(bez);
|
||||||
|
produktbausteinType.setTyp(type);
|
||||||
|
produktbausteinType.setVerkaufsoffenVon(verkaufsoffenVon);
|
||||||
|
produktbausteinType.setVerkaufsoffenBis(verkaufsoffenBis);
|
||||||
|
produktbausteinType.setMaxVorkommen(maxOccurrence);
|
||||||
|
produktbausteinType.setMinVorkommen(minOccurrence);
|
||||||
|
produktbausteinType.setRisikoobjektErforderlich(risikoobjektType != null);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return produktbausteinType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Prüfen, ob sie zu den Werten im Verkaufsprodukt passen.
|
||||||
|
//Prüfe VuNr exestiert
|
||||||
|
//Prüfe Verkaufsprodukt verkaufsoffen
|
||||||
|
//Prüfe auf risikoobjekt fehler
|
||||||
|
//Wenn Unterbausteine angegeben sind, dann prüfen, ob sie a priori zulässig sind.
|
||||||
|
//Ergänzen fehlender Bausteine
|
||||||
|
private void validateRequest(VerkaufsproduktType vp) throws IOException {
|
||||||
|
// pruefeVUNr(calculateRequest.getVUNr());
|
||||||
|
pruefeVerkaufsoffen(vp);
|
||||||
|
pruefeWerte(vp);
|
||||||
|
pruefeRisikoobjekt(vp);
|
||||||
|
pruefeErgaentzungen(vp);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void pruefeWerte(VerkaufsproduktType verkaufsprodukt) {
|
||||||
|
}
|
||||||
|
|
||||||
|
private void pruefeErgaentzungen(VerkaufsproduktType verkaufsprodukt) {
|
||||||
|
}
|
||||||
|
|
||||||
|
private void pruefeRisikoobjekt(VerkaufsproduktType verkaufsprodukt) {
|
||||||
|
}
|
||||||
|
|
||||||
|
private void pruefeVerkaufsoffen(VerkaufsproduktType verkaufsprodukt) {
|
||||||
|
}
|
||||||
|
|
||||||
|
private void pruefeVUNr(String vuNr) {
|
||||||
|
}
|
||||||
|
|
||||||
|
private Model createRdfModel(VerkaufsproduktType vp) {
|
||||||
|
Model erg = new TreeModel();
|
||||||
|
|
||||||
|
String baseIri = "http://vvo.pisanoapi.at/";
|
||||||
|
|
||||||
|
IRI prodelemIri = iri(baseIri + "ProdElement");
|
||||||
|
IRI insIdIri = iri(baseIri + "ins_id");
|
||||||
|
IRI bezIri = iri(baseIri + "bez");
|
||||||
|
IRI createdIri = iri(baseIri + "created");
|
||||||
|
IRI salesFromIri = iri(baseIri + "salesFrom");
|
||||||
|
IRI salesToIri = iri(baseIri + "salesTo");
|
||||||
|
IRI minOccurrenceIri = iri(baseIri + "minOccurrence");
|
||||||
|
IRI maxOccurrenceIri = iri(baseIri + "maxOccurrence");
|
||||||
|
IRI typeIri = iri(baseIri + "type");
|
||||||
|
IRI risikoobjektTypeIri = iri(baseIri + "risikoobjektType");
|
||||||
|
IRI bausteinIri = iri(baseIri + "baustein");
|
||||||
|
|
||||||
|
IRI vpIri = iri(baseIri + "ProdElement" + vp.getId());
|
||||||
|
|
||||||
|
|
||||||
|
// erg.add()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void calculate() {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.kapdion.omds.productdefinitions;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
|
||||||
|
|
||||||
|
@ConfigurationPropertiesScan
|
||||||
|
@SpringBootApplication
|
||||||
|
public class productdefinitionsApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(productdefinitionsApplication.class, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
2
src/main/resources/application.properties
Normal file
2
src/main/resources/application.properties
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
spring.application.name=productdefinitions
|
||||||
|
server.port=9090
|
||||||
14
src/main/resources/banner.txt
Normal file
14
src/main/resources/banner.txt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
========================================================================
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| ____ __ _______ _____ _____ |
|
||||||
|
| / __ \/ |/ / __ \/ ___/ / ___/___ ______ _____ _____ |
|
||||||
|
| / / / / /|_/ / / / /\__ \ \__ \/ _ \/ ___/ | / / _ \/ ___/ |
|
||||||
|
| / /_/ / / / / /_/ /___/ / ___/ / __/ / | |/ / __/ / |
|
||||||
|
| \____/_/ /_/_____//____/ /____/\___/_/ |___/\___/_/ |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| OMDS Demo Server |
|
||||||
|
| (c) 2025 Kap Dion GmbH |
|
||||||
|
========================================================================
|
||||||
260
src/main/resources/data/prodelements.ttl
Normal file
260
src/main/resources/data/prodelements.ttl
Normal file
@@ -0,0 +1,260 @@
|
|||||||
|
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
||||||
|
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
||||||
|
@prefix vvo: <http://vvo.pisanoapi.at/> .
|
||||||
|
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
||||||
|
|
||||||
|
|
||||||
|
vvo:ProdElement1 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Kraftfahrt 2020" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2020-01-01"^^xsd:date ;
|
||||||
|
vvo:salesTo "2021-03-31"^^xsd:date ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VerkaufsproduktKfzType" ;
|
||||||
|
vvo:risikoobjektType "FahrzeugType" .
|
||||||
|
|
||||||
|
vvo:ProdElement2 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Haftpflicht 2020" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2020-01-01"^^xsd:date ;
|
||||||
|
vvo:salesTo "2021-03-31"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement1 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement3 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Kasko 2020" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2020-01-01"^^xsd:date ;
|
||||||
|
vvo:salesTo "2021-03-31"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement1 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement4 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Insassenunfall 2020" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2020-01-01"^^xsd:date ;
|
||||||
|
vvo:salesTo "2021-03-31"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement1 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.InsassenUnfallKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement5 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Kraftfahrt 2021" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2021-01-01"^^xsd:date ;
|
||||||
|
vvo:salesTo "2021-03-31"^^xsd:date ;
|
||||||
|
vvo:previous vvo:ProdElement1 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VerkaufsproduktKfzType" ;
|
||||||
|
vvo:risikoobjektType "FahrzeugType" .
|
||||||
|
|
||||||
|
vvo:ProdElement6 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Haftpflicht 2021" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2021-01-01"^^xsd:date ;
|
||||||
|
vvo:salesTo "2021-03-31"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement5 ;
|
||||||
|
vvo:previous vvo:ProdElement2 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement7 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Kasko 2021" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2021-01-01"^^xsd:date ;
|
||||||
|
vvo:salesTo "2021-03-31"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement5 ;
|
||||||
|
vvo:previous vvo:ProdElement3 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement8 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Insassenunfall 2021" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2021-01-01"^^xsd:date ;
|
||||||
|
vvo:salesTo "2021-03-31"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement5 ;
|
||||||
|
vvo:previous vvo:ProdElement4 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.InsassenUnfallKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement9 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Assistance 2021" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2021-01-01"^^xsd:date ;
|
||||||
|
vvo:salesTo "2021-03-31"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement5 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.AssistanceKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement10 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Kraftfahrt 2022" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||||
|
vvo:previous vvo:ProdElement5 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VerkaufsproduktKfzType" ;
|
||||||
|
vvo:risikoobjektType "FahrzeugType" .
|
||||||
|
|
||||||
|
vvo:ProdElement11 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Haftpflicht 2022" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement10 ;
|
||||||
|
vvo:previous vvo:ProdElement6 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement12 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Kasko 2022" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement10 ;
|
||||||
|
vvo:previous vvo:ProdElement7 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement13 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Assistance 2022" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement10 ;
|
||||||
|
vvo:previous vvo:ProdElement9 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.AssistanceKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement14 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Kasko Unterbaustein 2022" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement12 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" ;
|
||||||
|
vvo:risikoobjektType "FahrzeugType" .
|
||||||
|
|
||||||
|
vvo:ProdElement15 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Kasko Unterunterbaustein 1 2022" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement14 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement16 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Kasko Unterunterbaustein 2 2022" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||||
|
vvo:parent vvo:ProdElement14 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" .
|
||||||
|
|
||||||
|
vvo:ProdElement17 a vvo:ProdElement ;
|
||||||
|
vvo:ins_id 1 ;
|
||||||
|
vvo:bez "Kraftfahrt 2022-2" ;
|
||||||
|
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||||
|
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||||
|
vvo:previous vvo:ProdElement5 ;
|
||||||
|
vvo:minOccurrence 1 ;
|
||||||
|
vvo:maxOccurrence 1 ;
|
||||||
|
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VerkaufsproduktKfzType" ;
|
||||||
|
vvo:risikoobjektType "FahrzeugType" .
|
||||||
|
|
||||||
|
vvo:ElemBoolean1 a vvo:ElemBoolean ;
|
||||||
|
vvo:bez "TestBooleanElement1" ;
|
||||||
|
vvo:ProdElement vvo:ProdElement11 ;
|
||||||
|
vvo:required "true"^^xsd:boolean ;
|
||||||
|
vvo:default "true"^^xsd:boolean .
|
||||||
|
|
||||||
|
vvo:ElemBoolean2 a vvo:ElemBoolean ;
|
||||||
|
vvo:bez "TestBooleanElement2" ;
|
||||||
|
vvo:ProdElement vvo:ProdElement12 ;
|
||||||
|
vvo:required "true"^^xsd:boolean ;
|
||||||
|
vvo:default "false"^^xsd:boolean .
|
||||||
|
|
||||||
|
vvo:ElemBoolean3 a vvo:ElemBoolean ;
|
||||||
|
vvo:bez "TestBooleanElement3" ;
|
||||||
|
vvo:ProdElement vvo:ProdElement12 ;
|
||||||
|
vvo:required "false"^^xsd:boolean ;
|
||||||
|
vvo:default "false"^^xsd:boolean .
|
||||||
|
|
||||||
|
vvo:ElemInt1 a vvo:ElemInt ;
|
||||||
|
vvo:bez "AnzSitzplaetze" ;
|
||||||
|
vvo:ProdElement vvo:ProdElement11 ;
|
||||||
|
vvo:required "true"^^xsd:boolean ;
|
||||||
|
vvo:max 11 ;
|
||||||
|
vvo:min 2 ;
|
||||||
|
vvo:default 5 .
|
||||||
|
|
||||||
|
vvo:ElemDecimal1 a vvo:ElemDecimal ;
|
||||||
|
vvo:bez "Versicherungssumme" ;
|
||||||
|
vvo:ProdElement vvo:ProdElement11 ;
|
||||||
|
vvo:required "true"^^xsd:boolean ;
|
||||||
|
vvo:max "10000"^^xsd:decimal ;
|
||||||
|
vvo:min "10"^^xsd:decimal .
|
||||||
|
|
||||||
|
vvo:ElemDecimal2 a vvo:ElemDecimal ;
|
||||||
|
vvo:bez "Selbstbehalt" ;
|
||||||
|
vvo:ProdElement vvo:ProdElement11 ;
|
||||||
|
vvo:required "true"^^xsd:boolean ;
|
||||||
|
vvo:max "10000.0"^^xsd:decimal ;
|
||||||
|
vvo:min "10"^^xsd:decimal;
|
||||||
|
vvo:default "100"^^xsd:decimal .
|
||||||
|
|
||||||
|
vvo:ElemDecimal3 a vvo:ElemDecimal ;
|
||||||
|
vvo:bez "Wert" ;
|
||||||
|
vvo:ProdElement vvo:ProdElement12 ;
|
||||||
|
vvo:required "true"^^xsd:boolean ;
|
||||||
|
vvo:max "50000"^^xsd:decimal ;
|
||||||
|
vvo:min "1000"^^xsd:decimal .
|
||||||
|
|
||||||
|
vvo:ElemString1 a vvo:ElemString ;
|
||||||
|
vvo:bez "TestStringElement1" ;
|
||||||
|
vvo:ProdElement vvo:ProdElement11 ;
|
||||||
|
vvo:required "true"^^xsd:boolean ;
|
||||||
|
vvo:default "TestStringDefaultValue1" .
|
||||||
|
|
||||||
|
vvo:ElemString2 a vvo:ElemString ;
|
||||||
|
vvo:bez "TestStringElement2" ;
|
||||||
|
vvo:ProdElement vvo:ProdElement12 ;
|
||||||
|
vvo:required "false"^^xsd:boolean ;
|
||||||
|
vvo:default "TestStringDefaultValue2" .
|
||||||
|
|
||||||
|
vvo:ElemString3 a vvo:ElemString ;
|
||||||
|
vvo:bez "TestStringElement3" ;
|
||||||
|
vvo:ProdElement vvo:ProdElement11 ;
|
||||||
|
vvo:required "false"^^xsd:boolean ;
|
||||||
|
vvo:default "TestStringDefaultValue3" .
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package com.kapdion.omds.productdefinitions;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
@SpringBootTest
|
||||||
|
class productdefinitionsApplicationTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void contextLoads() {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user