client-lib, client-app und server-app aus den jeweiligen projekten importiert. api-definition begonnen zu implementieren
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.xml.datatype.DatatypeConfigurationException;
|
||||
import java.io.IOException;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
|
||||
public class EndpointsZentralesBOA {
|
||||
|
||||
@PostMapping("/ProductsRequest")
|
||||
public String apriori(@RequestBody ProductsRequest productsRequest){
|
||||
AprioriService as = new AprioriService();
|
||||
String s = as.getProductsResponse(productsRequest);
|
||||
System.out.println("-----------------------");
|
||||
System.out.println("Products request: " + s);
|
||||
|
||||
return s;
|
||||
};
|
||||
|
||||
@PostMapping("/CalculateRequest")
|
||||
public String calc(@RequestBody String calculateRequest) throws Exception {
|
||||
CalculateService cs = new CalculateService();
|
||||
String s = cs.buildResponse(calculateRequest);
|
||||
System.out.println("-----------------------");
|
||||
System.out.println("Calculate request: " + s);
|
||||
return s;
|
||||
};
|
||||
|
||||
}
|
||||
@@ -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,319 @@
|
||||
package com.kapdion.omds.productdefinitions.apriori;
|
||||
|
||||
import at.vvo.omds.types.omds3.r2025_05.common.ProductsRequest;
|
||||
|
||||
import org.eclipse.rdf4j.model.IRI;
|
||||
import org.eclipse.rdf4j.model.Model;
|
||||
import org.eclipse.rdf4j.model.impl.LinkedHashModel;
|
||||
import org.eclipse.rdf4j.model.util.Values;
|
||||
import org.eclipse.rdf4j.model.vocabulary.RDF;
|
||||
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 org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.xml.datatype.DatatypeConstants;
|
||||
import javax.xml.datatype.DatatypeFactory;
|
||||
import javax.xml.datatype.XMLGregorianCalendar;
|
||||
import java.io.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.eclipse.rdf4j.model.util.Values.iri;
|
||||
|
||||
public class AprioriService {
|
||||
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
|
||||
|
||||
public String getProductsResponse(ProductsRequest productsRequest) {
|
||||
Repository repo = new SailRepository(new MemoryStore());
|
||||
repo.init();
|
||||
|
||||
try (RepositoryConnection conn = repo.getConnection()) {
|
||||
Resource resource = resolver.getResource("classpath:data/prodelements.ttl");
|
||||
conn.add(resource.getInputStream(), "", 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:Parent ?parent ;
|
||||
vvo:risikoobjektType ?risikoobjektType ;
|
||||
vvo:praemienfaktor ?praemie
|
||||
}
|
||||
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:Parent ?parent . }
|
||||
OPTIONAL { ?prodelement vvo:risikoobjektType ?risikoobjektType . }
|
||||
OPTIONAL { ?prodelement vvo:praemienfaktor ?praemie . }
|
||||
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);
|
||||
}
|
||||
|
||||
addPlausisToRequest(model);
|
||||
addAttributeToRequest(model);
|
||||
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
Rio.write(model, baos, RDFFormat.JSONLD);
|
||||
return baos.toString();
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void addAttributeToRequest(Model model) {
|
||||
addBoolAttribut(model);
|
||||
addStringAttribut(model);
|
||||
addIntAttribut(model);
|
||||
addDecimalAttribut(model);
|
||||
}
|
||||
|
||||
private void addDecimalAttribut(Model model) {
|
||||
Repository repo = new SailRepository(new MemoryStore());
|
||||
repo.init();
|
||||
|
||||
try (RepositoryConnection conn = repo.getConnection()) {
|
||||
Resource resource = resolver.getResource("classpath:data/Attribute.ttl");
|
||||
conn.add(resource.getInputStream(), "", RDFFormat.TURTLE);
|
||||
|
||||
String queryString = """
|
||||
PREFIX vvo: <http://vvo.pisanoapi.at/>
|
||||
|
||||
CONSTRUCT {
|
||||
?attribut a vvo:ElemDecimal ;
|
||||
vvo:bez ?bez ;
|
||||
vvo:ProdElement ?ProdElement ;
|
||||
vvo:required ?required ;
|
||||
vvo:max ?max ;
|
||||
vvo:min ?min ;
|
||||
vvo:default ?default ;
|
||||
}
|
||||
WHERE {
|
||||
?attribut a vvo:ElemDecimal .
|
||||
OPTIONAL { ?attribut vvo:bez ?bez . }
|
||||
OPTIONAL { ?attribut vvo:ProdElement ?ProdElement . }
|
||||
OPTIONAL { ?attribut vvo:required ?required . }
|
||||
OPTIONAL { ?attribut vvo:max ?max . }
|
||||
OPTIONAL { ?attribut vvo:min ?min . }
|
||||
OPTIONAL { ?attribut vvo:default ?default . }
|
||||
}
|
||||
|
||||
""";
|
||||
|
||||
GraphQuery graphQuery = conn.prepareGraphQuery(queryString);
|
||||
// graphQuery.setBinding("stichtag", conn.getValueFactory().createLiteral(stichtagFormated.toXMLFormat(), XSD.DATE));
|
||||
|
||||
try (GraphQueryResult result = graphQuery.evaluate()) {
|
||||
result.forEach(model::add);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void addIntAttribut(Model model) {
|
||||
Repository repo = new SailRepository(new MemoryStore());
|
||||
repo.init();
|
||||
|
||||
try (RepositoryConnection conn = repo.getConnection()) {
|
||||
Resource resource = resolver.getResource("classpath:data/Attribute.ttl");
|
||||
conn.add(resource.getInputStream(), "", RDFFormat.TURTLE);
|
||||
|
||||
String queryString = """
|
||||
PREFIX vvo: <http://vvo.pisanoapi.at/>
|
||||
|
||||
CONSTRUCT {
|
||||
?attribut a vvo:ElemInt ;
|
||||
vvo:bez ?bez ;
|
||||
vvo:ProdElement ?ProdElement ;
|
||||
vvo:required ?required ;
|
||||
vvo:max ?max ;
|
||||
vvo:min ?min ;
|
||||
vvo:default ?default ;
|
||||
}
|
||||
WHERE {
|
||||
?attribut a vvo:ElemInt .
|
||||
OPTIONAL { ?attribut vvo:bez ?bez . }
|
||||
OPTIONAL { ?attribut vvo:ProdElement ?ProdElement . }
|
||||
OPTIONAL { ?attribut vvo:required ?required . }
|
||||
OPTIONAL { ?attribut vvo:max ?max . }
|
||||
OPTIONAL { ?attribut vvo:min ?min . }
|
||||
OPTIONAL { ?attribut vvo:default ?default . }
|
||||
}
|
||||
|
||||
""";
|
||||
|
||||
GraphQuery graphQuery = conn.prepareGraphQuery(queryString);
|
||||
// graphQuery.setBinding("stichtag", conn.getValueFactory().createLiteral(stichtagFormated.toXMLFormat(), XSD.DATE));
|
||||
|
||||
try (GraphQueryResult result = graphQuery.evaluate()) {
|
||||
result.forEach(model::add);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void addStringAttribut(Model model) {
|
||||
Repository repo = new SailRepository(new MemoryStore());
|
||||
repo.init();
|
||||
|
||||
try (RepositoryConnection conn = repo.getConnection()) {
|
||||
Resource resource = resolver.getResource("classpath:data/Attribute.ttl");
|
||||
conn.add(resource.getInputStream(), "", RDFFormat.TURTLE);
|
||||
|
||||
String queryString = """
|
||||
PREFIX vvo: <http://vvo.pisanoapi.at/>
|
||||
|
||||
CONSTRUCT {
|
||||
?attribut a vvo:ElemString ;
|
||||
vvo:bez ?bez ;
|
||||
vvo:ProdElement ?ProdElement ;
|
||||
vvo:required ?required ;
|
||||
vvo:default ?default ;
|
||||
}
|
||||
WHERE {
|
||||
?attribut a vvo:ElemString .
|
||||
OPTIONAL { ?attribut vvo:bez ?bez . }
|
||||
OPTIONAL { ?attribut vvo:ProdElement ?ProdElement . }
|
||||
OPTIONAL { ?attribut vvo:required ?required . }
|
||||
OPTIONAL { ?attribut vvo:default ?default . }
|
||||
}
|
||||
|
||||
""";
|
||||
|
||||
GraphQuery graphQuery = conn.prepareGraphQuery(queryString);
|
||||
// graphQuery.setBinding("stichtag", conn.getValueFactory().createLiteral(stichtagFormated.toXMLFormat(), XSD.DATE));
|
||||
|
||||
try (GraphQueryResult result = graphQuery.evaluate()) {
|
||||
result.forEach(model::add);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void addBoolAttribut(Model model) {
|
||||
Repository repo = new SailRepository(new MemoryStore());
|
||||
repo.init();
|
||||
|
||||
try (RepositoryConnection conn = repo.getConnection()) {
|
||||
Resource resource = resolver.getResource("classpath:data/Attribute.ttl");
|
||||
conn.add(resource.getInputStream(), "", RDFFormat.TURTLE);
|
||||
|
||||
String queryString = """
|
||||
PREFIX vvo: <http://vvo.pisanoapi.at/>
|
||||
|
||||
CONSTRUCT {
|
||||
?attribut a vvo:ElemBoolean ;
|
||||
vvo:bez ?bez ;
|
||||
vvo:ProdElement ?ProdElement ;
|
||||
vvo:required ?required ;
|
||||
vvo:default ?default ;
|
||||
}
|
||||
WHERE {
|
||||
?attribut a vvo:ElemBoolean .
|
||||
OPTIONAL { ?attribut vvo:bez ?bez . }
|
||||
OPTIONAL { ?attribut vvo:ProdElement ?ProdElement . }
|
||||
OPTIONAL { ?attribut vvo:required ?required . }
|
||||
OPTIONAL { ?attribut vvo:default ?default . }
|
||||
}
|
||||
|
||||
""";
|
||||
|
||||
GraphQuery graphQuery = conn.prepareGraphQuery(queryString);
|
||||
// graphQuery.setBinding("stichtag", conn.getValueFactory().createLiteral(stichtagFormated.toXMLFormat(), XSD.DATE));
|
||||
|
||||
try (GraphQueryResult result = graphQuery.evaluate()) {
|
||||
result.forEach(model::add);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void addPlausisToRequest(Model model) throws IOException {
|
||||
IRI plausiIri = iri("http://vvo.pisanoapi.at/Plausi");
|
||||
IRI queryIri = iri("http://vvo.pisanoapi.at/query");
|
||||
IRI beschreibungIri = iri("http://vvo.pisanoapi.at/beschreibung");
|
||||
IRI artIri = iri("http://vvo.pisanoapi.at/art");
|
||||
|
||||
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
|
||||
Resource[] resources = resolver.getResources("classpath*:data/plausis/*");
|
||||
int i = 1;
|
||||
List<Resource> sortedResources = Arrays.stream(resources)
|
||||
.sorted(Comparator.comparing(Resource::getFilename))
|
||||
.toList();
|
||||
|
||||
for (Resource plausiResource : sortedResources) {
|
||||
List<String> lines;
|
||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(plausiResource.getInputStream()))) {
|
||||
lines = reader.lines().map(String::trim).toList();
|
||||
}
|
||||
|
||||
String beschreibung = lines.stream()
|
||||
.filter(line -> line.startsWith("#beschreibung:"))
|
||||
.findFirst()
|
||||
.map(line -> line.substring(14))
|
||||
.orElse("Keine Beschreibung");
|
||||
|
||||
String art = lines.stream()
|
||||
.filter(line -> line.startsWith("#art:"))
|
||||
.findFirst()
|
||||
.map(line -> line.substring(5))
|
||||
.orElse("Unbekannt");
|
||||
|
||||
String query = lines.stream()
|
||||
.filter(line -> !line.startsWith("#") && !line.isEmpty())
|
||||
.collect(Collectors.joining("\n"));
|
||||
|
||||
IRI spezPlausiIri = iri(plausiIri.stringValue() + i);
|
||||
|
||||
model.add(spezPlausiIri, RDF.TYPE, plausiIri);
|
||||
model.add(spezPlausiIri, queryIri, Values.literal(query));
|
||||
model.add(spezPlausiIri, beschreibungIri, Values.literal(beschreibung));
|
||||
model.add(spezPlausiIri, artIri, Values.literal(art));
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.kapdion.omds.productdefinitions.calculate;
|
||||
|
||||
public enum Bundesland {
|
||||
Niederoesterreich, Wien, Burgenland, Oberoesterreich, Tirol, Salzburg, Steiermark, Kaernten, Vorarlberg, Unbekannt
|
||||
}
|
||||
@@ -0,0 +1,428 @@
|
||||
package com.kapdion.omds.productdefinitions.calculate;
|
||||
|
||||
import at.vvo.omds.helpers.GuiProdukt;
|
||||
import at.vvo.omds.helpers.RDFHelper;
|
||||
import at.vvo.omds.helpers.TreeHelper;
|
||||
import at.vvo.omds.types.omds3.r2025_05.common.*;
|
||||
import javafx.scene.control.TreeItem;
|
||||
import org.eclipse.rdf4j.model.*;
|
||||
import org.eclipse.rdf4j.rio.RDFFormat;
|
||||
import org.eclipse.rdf4j.rio.Rio;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class CalculateService {
|
||||
Logger log = LoggerFactory.getLogger(CalculateService.class);
|
||||
RDFHelper rdfHelper = new RDFHelper();
|
||||
public String buildResponse(String calculateRequest) throws Exception {
|
||||
VerkaufsproduktType vp = rdfHelper.calculateRequestToVerkaufsprodukt(calculateRequest);
|
||||
|
||||
vp = validateRequest(vp);
|
||||
|
||||
vp.getAttribute().removeIf(a -> a.getBezeichnung().equals("Praemie"));
|
||||
if (vp.getMeldungen().isEmpty()) {
|
||||
calculate(vp);
|
||||
}
|
||||
|
||||
TreeHelper treeHelper = new TreeHelper();
|
||||
TreeItem<GuiProdukt> vpTree = new TreeItem<>(new GuiProdukt(vp));
|
||||
treeHelper.produktToTree(vp, vpTree);
|
||||
|
||||
Model response = rdfHelper.createRdfModel(vpTree);;
|
||||
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
Rio.write(response, baos, RDFFormat.JSONLD);
|
||||
return baos.toString();
|
||||
}
|
||||
|
||||
private VerkaufsproduktType validateRequest(VerkaufsproduktType vp) throws IOException {
|
||||
// pruefeVUNr(calculateRequest.getVUNr());
|
||||
pruefePlausis(vp);
|
||||
pruefeVerkaufsoffen(vp);
|
||||
pruefeWerte(vp);
|
||||
pruefeRisikoobjekt(vp);
|
||||
pruefeErgaentzungen(vp);
|
||||
|
||||
return vp;
|
||||
}
|
||||
|
||||
private VerkaufsproduktType pruefePlausis(VerkaufsproduktType vp) throws IOException {
|
||||
|
||||
// File file = new File("src/main/resources/data/plausis");
|
||||
//
|
||||
// Repository repo = new SailRepository(new MemoryStore());
|
||||
// repo.init();
|
||||
//
|
||||
// try (RepositoryConnection conn = repo.getConnection()) {
|
||||
// TreeHelper treeHelper = new TreeHelper();
|
||||
// TreeItem<GuiProdukt> vpTree = new TreeItem<>(new GuiProdukt(vp));
|
||||
// treeHelper.produktToTree(vp, vpTree);
|
||||
// Model model = rdfHelper.createRdfModel(vpTree);
|
||||
// conn.add(model);
|
||||
//
|
||||
// for (File plausi : file.listFiles()) {
|
||||
// var lines = Files.lines(plausi.toPath()).map(String::trim).toList();
|
||||
//
|
||||
// String art = lines.stream().filter(line -> line.startsWith("#art:")).findFirst().get().substring(5);
|
||||
// String query = lines.stream().filter(line -> !line.startsWith("#") && !line.isEmpty()).collect(Collectors.joining("\n"));
|
||||
//
|
||||
//
|
||||
// if (art.equals("update")){
|
||||
// conn.prepareUpdate(query).execute();
|
||||
//
|
||||
// model.clear();
|
||||
// conn.getStatements(null, null, null).forEach(model::add);
|
||||
// }else if (art.equals("graph")){
|
||||
// GraphQuery q = conn.prepareGraphQuery(query);
|
||||
// Model validatedModel = QueryResults.asModel(q.evaluate());
|
||||
// model.addAll(validatedModel);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
// Rio.write(model, baos, RDFFormat.JSONLD);
|
||||
//
|
||||
// return rdfHelper.calculateRequestToVerkaufsprodukt(baos.toString());
|
||||
// } catch(Exception ignored) {
|
||||
// System.out.println(ignored.getMessage());
|
||||
// }
|
||||
return 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 void calculate(VerkaufsproduktType vp) {
|
||||
AttributDezimalType attInt = new AttributDezimalType();
|
||||
|
||||
BigDecimal jahresNettoPraemie;
|
||||
BigDecimal jahresNettoPraemieKasko = new BigDecimal(0);
|
||||
BigDecimal jahresNettoPraemieHp = new BigDecimal(0);
|
||||
|
||||
for (ProduktbausteinType baustein : vp.getBausteine()) {
|
||||
if (baustein.getTyp().toLowerCase().contains("haftpflicht")) {
|
||||
BigDecimal tmp = calculateHp(baustein);
|
||||
if (tmp.compareTo(BigDecimal.valueOf(0)) < 1) {
|
||||
addMeldungToProdukt(vp, "Fehler bei der Berechnung der Prämie für KFZ-Haftpflicht", 1);
|
||||
System.out.println(vp.getBezeichnung());
|
||||
}else {
|
||||
jahresNettoPraemieHp = jahresNettoPraemieHp.add(tmp);
|
||||
}
|
||||
}else if (baustein.getTyp().toLowerCase().contains("kasko")) {
|
||||
BigDecimal tmp = calculateKasko(baustein);
|
||||
|
||||
if (tmp.compareTo(BigDecimal.valueOf(0)) < 1) {
|
||||
addMeldungToProdukt(vp, "Fehler bei der Berechnung der Prämie für Kasko", 1);
|
||||
}else {
|
||||
jahresNettoPraemieHp = jahresNettoPraemieHp.add(tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
jahresNettoPraemie = jahresNettoPraemieHp.add(jahresNettoPraemieKasko);
|
||||
|
||||
attInt.setId(BigInteger.valueOf(4));
|
||||
attInt.setBezeichnung("Praemie");
|
||||
attInt.setValue(jahresNettoPraemie.setScale(2, RoundingMode.HALF_UP));
|
||||
attInt.setMax(BigDecimal.valueOf(999999));
|
||||
attInt.setMin(BigDecimal.valueOf(1));
|
||||
attInt.setDefault(BigDecimal.valueOf(10));
|
||||
attInt.setPflichtfeld(false);
|
||||
attInt.setAenderbar(false);
|
||||
|
||||
vp.getAttribute().removeIf(a -> a.getBezeichnung().equals("Praemie"));
|
||||
vp.getAttribute().add(attInt);
|
||||
|
||||
}
|
||||
|
||||
private Bundesland getBundeslandFromKennzeichen(String kennzeichen) {
|
||||
kennzeichen = kennzeichen.toUpperCase().trim().substring(0, kennzeichen.indexOf("-"));
|
||||
|
||||
HashMap< String, Bundesland> kennzeichenMap = new HashMap<>();
|
||||
|
||||
kennzeichenMap.put("AM", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("BL", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("BN", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("GD", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("GF", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("HL", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("HO", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("KG", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("KO", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("KR", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("KS", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("LF", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("MD", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("ME", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("MI", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("NK", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("P", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("PL", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("SB", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("SW", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("TU", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("WB", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("WN", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("WT", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("WY", Bundesland.Niederoesterreich);
|
||||
kennzeichenMap.put("ZT", Bundesland.Niederoesterreich);
|
||||
|
||||
kennzeichenMap.put("BR", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("EF", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("FR", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("GM", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("GR", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("KI", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("L", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("LL", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("PE", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("RI", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("RO", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("SD", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("SE", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("SR", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("UU", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("VB", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("WE", Bundesland.Oberoesterreich);
|
||||
kennzeichenMap.put("WL", Bundesland.Oberoesterreich);
|
||||
|
||||
kennzeichenMap.put("W", Bundesland.Wien);
|
||||
|
||||
kennzeichenMap.put("BA", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("BM", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("DL", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("G", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("GB", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("GU", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("HF", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("LB", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("LE", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("LI", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("LN", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("MT", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("MU", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("SO", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("VO", Bundesland.Steiermark);
|
||||
kennzeichenMap.put("WZ", Bundesland.Steiermark);
|
||||
|
||||
kennzeichenMap.put("I", Bundesland.Tirol);
|
||||
kennzeichenMap.put("IL", Bundesland.Tirol);
|
||||
kennzeichenMap.put("IM", Bundesland.Tirol);
|
||||
kennzeichenMap.put("KB", Bundesland.Tirol);
|
||||
kennzeichenMap.put("KU", Bundesland.Tirol);
|
||||
kennzeichenMap.put("LA", Bundesland.Tirol);
|
||||
kennzeichenMap.put("LZ", Bundesland.Tirol);
|
||||
kennzeichenMap.put("RE", Bundesland.Tirol);
|
||||
kennzeichenMap.put("SZ", Bundesland.Tirol);
|
||||
|
||||
kennzeichenMap.put("HA", Bundesland.Salzburg);
|
||||
kennzeichenMap.put("JO", Bundesland.Salzburg);
|
||||
kennzeichenMap.put("S", Bundesland.Salzburg);
|
||||
kennzeichenMap.put("SL", Bundesland.Salzburg);
|
||||
kennzeichenMap.put("TA", Bundesland.Salzburg);
|
||||
kennzeichenMap.put("ZE", Bundesland.Salzburg);
|
||||
|
||||
kennzeichenMap.put("FE", Bundesland.Kaernten);
|
||||
kennzeichenMap.put("HE", Bundesland.Kaernten);
|
||||
kennzeichenMap.put("K", Bundesland.Kaernten);
|
||||
kennzeichenMap.put("KL", Bundesland.Kaernten);
|
||||
kennzeichenMap.put("SP", Bundesland.Kaernten);
|
||||
kennzeichenMap.put("SV", Bundesland.Kaernten);
|
||||
kennzeichenMap.put("VI", Bundesland.Kaernten);
|
||||
kennzeichenMap.put("VK", Bundesland.Kaernten);
|
||||
kennzeichenMap.put("VL", Bundesland.Kaernten);
|
||||
kennzeichenMap.put("WO", Bundesland.Kaernten);
|
||||
|
||||
kennzeichenMap.put("B", Bundesland.Vorarlberg);
|
||||
kennzeichenMap.put("BZ", Bundesland.Vorarlberg);
|
||||
kennzeichenMap.put("DO", Bundesland.Vorarlberg);
|
||||
kennzeichenMap.put("FK", Bundesland.Vorarlberg);
|
||||
|
||||
kennzeichenMap.put("E", Bundesland.Burgenland);
|
||||
kennzeichenMap.put("EU", Bundesland.Burgenland);
|
||||
kennzeichenMap.put("GS", Bundesland.Burgenland);
|
||||
kennzeichenMap.put("JE", Bundesland.Burgenland);
|
||||
kennzeichenMap.put("MA", Bundesland.Burgenland);
|
||||
kennzeichenMap.put("ND", Bundesland.Burgenland);
|
||||
kennzeichenMap.put("OP", Bundesland.Burgenland);
|
||||
kennzeichenMap.put("OW", Bundesland.Burgenland);
|
||||
|
||||
return kennzeichenMap.getOrDefault(kennzeichen, Bundesland.Unbekannt);
|
||||
}
|
||||
|
||||
private BigDecimal getBundeslandMultiplikator(Bundesland bundesland) {
|
||||
return switch (bundesland) {
|
||||
case Niederoesterreich -> BigDecimal.valueOf(1.1);
|
||||
case Oberoesterreich -> BigDecimal.valueOf(1.09);
|
||||
case Wien -> BigDecimal.valueOf(1.08);
|
||||
case Steiermark -> BigDecimal.valueOf(1.07);
|
||||
case Tirol -> BigDecimal.valueOf(1.06);
|
||||
case Salzburg -> BigDecimal.valueOf(1.05);
|
||||
case Kaernten -> BigDecimal.valueOf(1.04);
|
||||
case Vorarlberg -> BigDecimal.valueOf(1.03);
|
||||
case Burgenland -> BigDecimal.valueOf(1.02);
|
||||
case Unbekannt -> BigDecimal.valueOf(2);
|
||||
};
|
||||
}
|
||||
|
||||
private BigDecimal calculateHp(ProduktbausteinType vp) {
|
||||
log.atDebug().log("----- calculateHp -----");
|
||||
//a ... Versicherungssumme
|
||||
BigDecimal a = ((AttributDezimalType)(vp.getAttribute().stream().filter(at -> at.getBezeichnung()
|
||||
.equalsIgnoreCase("versicherungssumme")).toList().getFirst())).getValue();
|
||||
//b ... Leistung des Fahrzeuges
|
||||
int b = 0;
|
||||
|
||||
//c ... Bundesland multiplikator
|
||||
BigDecimal c = BigDecimal.valueOf(0);
|
||||
|
||||
for (VersichertesInteresseType fa : vp.getVersicherteObjekte()){
|
||||
|
||||
int tempB = ((FahrzeugType)fa).getLeistung();
|
||||
BigDecimal tempC = getBundeslandMultiplikator(getBundeslandFromKennzeichen(((FahrzeugType)fa).getPolKennz()));
|
||||
if (tempB > b && tempC.compareTo(c) >= 0){
|
||||
b = tempB;
|
||||
c = tempC;
|
||||
}
|
||||
}
|
||||
|
||||
log.atDebug().log("Eingangsvariablen: ");
|
||||
log.atDebug().log("a: " + a);
|
||||
log.atDebug().log("b: " + b);
|
||||
log.atDebug().log("c: " + c);
|
||||
log.atDebug().log("");
|
||||
|
||||
if (a != null && b != 0 && !c.equals(BigDecimal.valueOf(0))) {
|
||||
BigDecimal normA = (a.subtract(BigDecimal.valueOf(10000000)))
|
||||
.divide(BigDecimal.valueOf(20000000), 10, RoundingMode.HALF_UP);
|
||||
BigDecimal normB = (BigDecimal.valueOf(b).subtract(BigDecimal.valueOf(50)))
|
||||
.divide(BigDecimal.valueOf(1350), 10, RoundingMode.HALF_UP);
|
||||
BigDecimal normC = (c.subtract(BigDecimal.valueOf(1.01)))
|
||||
.divide(BigDecimal.valueOf(0.09), 10, RoundingMode.HALF_UP);
|
||||
|
||||
BigDecimal gewichtungA = BigDecimal.valueOf(1.2);
|
||||
BigDecimal gewichtungB = BigDecimal.valueOf(1.2);
|
||||
BigDecimal gewichtungC = BigDecimal.valueOf(1);
|
||||
|
||||
log.atDebug().log("Normierte Variablen: ");
|
||||
log.atDebug().log("normA: " + normA + " mit gewichtungA: " + gewichtungA);
|
||||
log.atDebug().log("normB: " + normB + " mit gewichtungB: " + gewichtungB);
|
||||
log.atDebug().log("normC: " + normC + " mit gewichtungC: " + gewichtungC);
|
||||
|
||||
|
||||
BigDecimal x = (normA.multiply(gewichtungA))
|
||||
.add((normB.multiply(gewichtungB)))
|
||||
.add((normC.multiply(gewichtungC)))
|
||||
.add(BigDecimal.valueOf(-1.5));
|
||||
|
||||
log.atDebug().log("500 + 100 * tanh(x)");
|
||||
log.atDebug().log("x: " + x);
|
||||
|
||||
|
||||
//500 als mittelwert
|
||||
//+- 100 also Jahresnettor Prämie muss zwischen 400 und 600 liegen
|
||||
BigDecimal erg = BigDecimal.valueOf(500)
|
||||
.add(BigDecimal.valueOf(100).multiply(BigDecimal.valueOf(Math.tanh(x.doubleValue()))));
|
||||
log.atDebug().log("Ergebnis: " + erg);
|
||||
return erg;
|
||||
}
|
||||
|
||||
return new BigDecimal(-1);
|
||||
}
|
||||
|
||||
private BigDecimal calculateKasko(ProduktbausteinType vp) {
|
||||
log.atDebug().log("----- calculateKasko -----");
|
||||
|
||||
BigDecimal praemie;
|
||||
|
||||
List<BigDecimal> anschaffungspreise = new ArrayList<>();
|
||||
for (VersichertesInteresseType fa : vp.getVersicherteObjekte()) {
|
||||
if (fa instanceof FahrzeugType) {
|
||||
if (((FahrzeugType) fa).getListenpreis() == null) {
|
||||
addMeldungToProdukt(vp, "Kein Listenpreis vorhanden für fahrzeug " + ((FahrzeugType) fa).getHandelsbez(), 1);
|
||||
return new BigDecimal(-1);
|
||||
}
|
||||
if (((FahrzeugType) fa).getSonderausstattung() != null) {
|
||||
anschaffungspreise.add(((FahrzeugType) fa).getListenpreis().add(((FahrzeugType) fa).getSonderausstattung()));
|
||||
}else {
|
||||
anschaffungspreise.add(((FahrzeugType) fa).getListenpreis());
|
||||
}
|
||||
log.atDebug().log("Anschaffungspreis: " + ((FahrzeugType) fa).getListenpreis().add(((FahrzeugType) fa).getSonderausstattung()));
|
||||
}
|
||||
}
|
||||
|
||||
anschaffungspreise.sort(BigDecimal::compareTo);
|
||||
|
||||
if (anschaffungspreise.isEmpty()) {
|
||||
addMeldungToProdukt(vp, "Es muss ein Fahrzeug vorhanden sein", 1);
|
||||
return new BigDecimal(-1);
|
||||
}
|
||||
praemie = anschaffungspreise.getLast().multiply(BigDecimal.valueOf(0.042));
|
||||
log.atDebug().log("Prämie Teuerstes Fahrzeug: " + praemie);
|
||||
|
||||
|
||||
for (int i = 0; i < anschaffungspreise.size()-1; i++) {
|
||||
praemie = praemie.add(anschaffungspreise.get(i)
|
||||
.multiply(BigDecimal.valueOf(0.042)).multiply(BigDecimal.valueOf(0.3)));
|
||||
|
||||
log.atDebug().log("Prämie Fahrzeug " + (i+2) + ": " + anschaffungspreise.get(i)
|
||||
.multiply(BigDecimal.valueOf(0.042)).multiply(BigDecimal.valueOf(0.3)));
|
||||
}
|
||||
|
||||
List<String> praemienfaktoren = new ArrayList<>();
|
||||
getPraemienfaktoren(vp, praemienfaktoren);
|
||||
|
||||
for (String pf : praemienfaktoren){
|
||||
BigDecimal value = new BigDecimal(pf.substring(pf.indexOf(" ") + 1));
|
||||
if (pf.contains("mult")) {
|
||||
praemie = praemie.multiply(value);
|
||||
|
||||
log.atDebug().log("Prämie multipliziert mit " + value);
|
||||
}else if (pf.contains("add")){
|
||||
praemie = praemie.add(value);
|
||||
|
||||
log.atDebug().log("Prämie addirt mit " + value);
|
||||
}
|
||||
}
|
||||
|
||||
return praemie;
|
||||
}
|
||||
|
||||
private void addMeldungToProdukt(ProduktbausteinType produktbaustein, String meldung, int errorType) {
|
||||
ServiceFault sf = new ServiceFault();
|
||||
sf.setErrorType(BigInteger.valueOf(errorType));
|
||||
sf.setErrorMsg(meldung);
|
||||
|
||||
produktbaustein.getMeldungen().add(sf);
|
||||
}
|
||||
|
||||
private void getPraemienfaktoren(ProduktbausteinType vp, List<String> praemienfaktoren) {
|
||||
if (vp.getPraemienfaktor() != null){
|
||||
praemienfaktoren.add(vp.getPraemienfaktor());
|
||||
}
|
||||
for (ProduktbausteinType baustein : vp.getBausteine()) {
|
||||
getPraemienfaktoren(baustein, praemienfaktoren);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package com.kapdion.pisano;
|
||||
|
||||
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
|
||||
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
//TIP Press <shortcut actionId="ShowIntentionActions"/> with your caret at the highlighted text
|
||||
// to see how IntelliJ IDEA suggests fixing it.
|
||||
System.out.printf("Hello and welcome!");
|
||||
|
||||
for (int i = 1; i <= 5; i++) {
|
||||
//TIP Press <shortcut actionId="Debug"/> to start debugging your code. We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint
|
||||
// for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>.
|
||||
System.out.println("i = " + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
4
server-app/src/main/resources/application.properties
Normal file
4
server-app/src/main/resources/application.properties
Normal file
@@ -0,0 +1,4 @@
|
||||
spring.application.name=productdefinitions
|
||||
server.port=9090
|
||||
|
||||
server.servlet.context-path=/produktApi
|
||||
14
server-app/src/main/resources/banner.txt
Normal file
14
server-app/src/main/resources/banner.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
========================================================================
|
||||
| |
|
||||
| |
|
||||
| ____ __ _______ _____ _____ |
|
||||
| / __ \/ |/ / __ \/ ___/ / ___/___ ______ _____ _____ |
|
||||
| / / / / /|_/ / / / /\__ \ \__ \/ _ \/ ___/ | / / _ \/ ___/ |
|
||||
| / /_/ / / / / /_/ /___/ / ___/ / __/ / | |/ / __/ / |
|
||||
| \____/_/ /_/_____//____/ /____/\___/_/ |___/\___/_/ |
|
||||
| |
|
||||
| |
|
||||
| OMDS Demo Server |
|
||||
| (c) 2025 Kap Dion GmbH |
|
||||
========================================================================
|
||||
62
server-app/src/main/resources/data/AllgemeinesProdukt.ttl
Normal file
62
server-app/src/main/resources/data/AllgemeinesProdukt.ttl
Normal file
@@ -0,0 +1,62 @@
|
||||
@prefix vvo: <http://vvo.pisanoapi.at/> .
|
||||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
||||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
||||
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
|
||||
@prefix sh: <http://www.w3.org/ns/shacl#> .
|
||||
|
||||
vvo:ProdElementShape a sh:NodeShape ;
|
||||
sh:targetClass vvo:ProdElement ;
|
||||
sh:property [
|
||||
sh:path vvo:bez ;
|
||||
sh:datatype xs:string ;
|
||||
sh:maxCount 1 ;
|
||||
sh:minCount 1 ;
|
||||
] ;
|
||||
sh:property [
|
||||
sh:path vvo:salesFrom ;
|
||||
sh:datatype xs:date ;
|
||||
sh:maxCount 1 ;
|
||||
sh:minCount 1 ;
|
||||
|
||||
] ;
|
||||
sh:property [
|
||||
sh:path vvo:salesTo ;
|
||||
sh:datatype xs:date ;
|
||||
sh:maxCount 1 ;
|
||||
sh:minCount 0 ;
|
||||
] ;
|
||||
sh:property [
|
||||
sh:path vvo:minOccurrence ;
|
||||
sh:datatype xs:integer ;
|
||||
sh:maxCount 1 ;
|
||||
sh:minCount 1 ;
|
||||
] ;
|
||||
sh:property [
|
||||
sh:path vvo:maxOccurrence ;
|
||||
sh:datatype xs:integer ;
|
||||
sh:minCount 0 ;
|
||||
sh:maxCount 1 ;
|
||||
] ;
|
||||
sh:property [
|
||||
sh:path vvo:type ;
|
||||
sh:datatype xs:string ;
|
||||
sh:maxCount 1 ;
|
||||
sh:minCount 1 ;
|
||||
] ;
|
||||
sh:property [
|
||||
sh:path vvo:risikoobjektType ;
|
||||
sh:datatype xs:string ;
|
||||
sh:maxCount 1 ;
|
||||
sh:minCount 0 ;
|
||||
] ;
|
||||
sh:property [
|
||||
sh:path vvo:parent ;
|
||||
sh:datatype vvo:ProdElement ;
|
||||
sh:maxCount 1 ;
|
||||
sh:minCount 0 ;
|
||||
] ;
|
||||
sh:property [
|
||||
sh:path vvo:baustein ;
|
||||
sh:datatype vvo:ProdElement ;
|
||||
sh:minCount 0 ;
|
||||
] .
|
||||
70
server-app/src/main/resources/data/Attribute.ttl
Normal file
70
server-app/src/main/resources/data/Attribute.ttl
Normal file
@@ -0,0 +1,70 @@
|
||||
@prefix vvo: <http://vvo.pisanoapi.at/> .
|
||||
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
||||
|
||||
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 "40000000"^^xsd:decimal ;
|
||||
vvo:min "10000000"^^xsd:decimal ;
|
||||
vvo:default "10000000"^^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" .
|
||||
|
||||
4
server-app/src/main/resources/data/KFZProdukt.ttl
Normal file
4
server-app/src/main/resources/data/KFZProdukt.ttl
Normal file
@@ -0,0 +1,4 @@
|
||||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
||||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
||||
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
|
||||
|
||||
18
server-app/src/main/resources/data/plausis/kasko.sparql
Normal file
18
server-app/src/main/resources/data/plausis/kasko.sparql
Normal file
@@ -0,0 +1,18 @@
|
||||
#beschreibung:Ein Baustein darf nur entweder ein Teilkasko oder ein Vollkasko Element haben
|
||||
#art:graph
|
||||
PREFIX vvo: <http://vvo.pisanoapi.at/>
|
||||
|
||||
CONSTRUCT {
|
||||
?prodelement vvo:Meldung vvo:MeldungA .
|
||||
vvo:MeldungA vvo:errorMsg "Es kann nur entweder Vollkasko oder Teilkasko eingeschlossen werden" .
|
||||
vvo:MeldungA vvo:errorType "1" .}
|
||||
WHERE {
|
||||
?prodelement a vvo:ProdElement .
|
||||
|
||||
?prodelement vvo:Baustein ?uup1 .
|
||||
?uup1 vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" .
|
||||
|
||||
?prodelement vvo:Baustein ?uup2 .
|
||||
?uup2 vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" .
|
||||
|
||||
}
|
||||
14
server-app/src/main/resources/data/plausis/kaskoDel.sparql
Normal file
14
server-app/src/main/resources/data/plausis/kaskoDel.sparql
Normal file
@@ -0,0 +1,14 @@
|
||||
#beschreibung:Loesche die meldung die schonmal durch kasko.sparql hinzugefügt wurde
|
||||
#art:update
|
||||
PREFIX vvo: <http://vvo.pisanoapi.at/>
|
||||
|
||||
DELETE {
|
||||
?prod vvo:Meldung ?meldung .
|
||||
}
|
||||
WHERE {
|
||||
?prod vvo:Meldung ?meldung .
|
||||
|
||||
?meldung vvo:errorMsg ?msg .
|
||||
|
||||
FILTER (?msg = "Es kann nur entweder Vollkasko oder Teilkasko eingeschlossen werden")
|
||||
}
|
||||
477
server-app/src/main/resources/data/prodelements.ttl
Normal file
477
server-app/src/main/resources/data/prodelements.ttl
Normal file
@@ -0,0 +1,477 @@
|
||||
@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 "Kfz-Haftpflichtversicherung" ;
|
||||
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:risikoobjektType "FahrzeugType" .
|
||||
|
||||
|
||||
vvo:ProdElement12 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Auslandszusatzschutz" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement11 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||
|
||||
vvo:ProdElement13 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Außereuropäische Deckung" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement11 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||
|
||||
vvo:ProdElement14 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Blaulichtsteuer" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement11 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||
|
||||
vvo:ProdElement15 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Bonusretter BM extern 0-3" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement11 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||
|
||||
vvo:ProdElement16 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Freiwillige Zusatzversicherung (GGBG)" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement11 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||
|
||||
vvo:ProdElement17 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Gemietete Kraftfahrzeuge im Ausland" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement11 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||
|
||||
vvo:ProdElement18 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Pannenhilfe" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement11 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||
|
||||
vvo:ProdElement19 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Schadenersatzbeitrag" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement11 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||
|
||||
vvo:ProdElement20 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Schadenersatzbeitrag Taxi" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement11 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||
|
||||
vvo:ProdElement21 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Winter-/Sommerdienst" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement11 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.HaftpflichtKfzType" .
|
||||
|
||||
vvo:ProdElement22 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 2 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.AssistanceKfzType" ;
|
||||
vvo:risikoobjektType "FahrzeugType" .
|
||||
|
||||
vvo:ProdElement23 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Vollkasko" ;
|
||||
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:risikoobjektType "FahrzeugType" .
|
||||
|
||||
vvo:ProdElement24 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Außereuropäische Deckung" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement23 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" ;
|
||||
vvo:praemienfaktor "add 100" .
|
||||
|
||||
vvo:ProdElement25 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Gap-Deckung" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement23 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" .
|
||||
|
||||
vvo:ProdElement26 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Grobe Fahrlässigkeit" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement23 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" .
|
||||
|
||||
vvo:ProdElement27 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Kaufpreisersatzdeckung" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement23 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" .
|
||||
|
||||
vvo:ProdElement28 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Moderne Kriminalität" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement23 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" .
|
||||
|
||||
vvo:ProdElement29 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Neuwert-Deckung" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement23 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" .
|
||||
|
||||
vvo:ProdElement30 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Zusatzpaket Light" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement23 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" ;
|
||||
vvo:praemienfaktor "mult 1.02" .
|
||||
|
||||
vvo:ProdElement31 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Zusatzpaket Luxus" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement23 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" ;
|
||||
vvo:praemienfaktor "mult 1.04" .
|
||||
|
||||
vvo:ProdElement32 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Zusatzpaket Elektronik" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement23 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" ;
|
||||
vvo:praemienfaktor "mult 1.03" .
|
||||
|
||||
vvo:ProdElement33 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Elektro-/Hybridfahrzeuge-Paket" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement23 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.VollkaskoKfzType" ;
|
||||
vvo:praemienfaktor "add 250" .
|
||||
|
||||
vvo:ProdElement34 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Teilkasko" ;
|
||||
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 0 ;
|
||||
vvo:maxOccurrence 3 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" ;
|
||||
vvo:risikoobjektType "FahrzeugType" .
|
||||
|
||||
vvo:ProdElement35 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Außereuropäische Deckung" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement34 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" ;
|
||||
vvo:praemienfaktor "add 100" .
|
||||
|
||||
vvo:ProdElement36 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Gap-Deckung" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement34 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" .
|
||||
|
||||
vvo:ProdElement37 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Grobe Fahrlässigkeit" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement34 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" .
|
||||
|
||||
vvo:ProdElement38 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Kaufpreisersatzdeckung" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement34 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" .
|
||||
|
||||
vvo:ProdElement39 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Moderne Kriminalität" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement34 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" .
|
||||
|
||||
vvo:ProdElement40 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Neuwert-Deckung" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement34 ;
|
||||
vvo:minOccurrence 1 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" .
|
||||
|
||||
vvo:ProdElement41 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Zusatzpaket Light" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement34 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" ;
|
||||
vvo:praemienfaktor "mult 1.02" .
|
||||
|
||||
vvo:ProdElement42 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Zusatzpaket Luxus" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement34 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" ;
|
||||
vvo:praemienfaktor "mult 1.04" .
|
||||
|
||||
vvo:ProdElement43 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Zusatzpaket Elektronik" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement34 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" ;
|
||||
vvo:praemienfaktor "mult 1.03" .
|
||||
|
||||
vvo:ProdElement44 a vvo:ProdElement ;
|
||||
vvo:ins_id 1 ;
|
||||
vvo:bez "Elektro-/Hybridfahrzeuge-Paket" ;
|
||||
vvo:created "2020-01-01T23:59:59.999999"^^xsd:dateTime ;
|
||||
vvo:salesFrom "2022-01-01"^^xsd:date ;
|
||||
vvo:Parent vvo:ProdElement34 ;
|
||||
vvo:minOccurrence 0 ;
|
||||
vvo:maxOccurrence 1 ;
|
||||
vvo:type "at.vvo.omds.types.omds3.r2025_05.on2antrag.kfz.TeilkaskoKfzType" .
|
||||
@@ -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