Разработка алгоритма поиска наиболее выгодных конфигураций сети в условиях непостоянства состава ее участников и вариативности бизнес-процессов
Выделение ключевых бизнес-концептов и их взаимосвязей на основе метамоделей DEMO и BMM. Формализация ключевых бизнес-концептов и их взаимосвязей с помощью онтологий UFO и FEO. Разработка алгоритма поиска наилучших партнеров в логистической сети.
Рубрика | Экономико-математическое моделирование |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 22.01.2016 |
Размер файла | 2,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&fm;transactionWholeProductionFact"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;PickProductFromMainWarehouseWholePF-PickProductFromMainWarehouse">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&fm;transactionWholeProductionFact"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;PickProductFromIntWarehouseWholePF-PickProductFromIntWarehouse">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&fm;transactionWholeProductionFact"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;LoadProductToTrainWholePF-LoadProductToTrain">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&fm;transactionWholeProductionFact"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;LoadProductToTruckWholePF-LoadProductToTruck">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&fm;transactionWholeProductionFact"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;TransferProductWholePF-TransferProduct">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&fm;transactionWholeProductionFact"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;VerifyTransferredProductWholePF-VerifyTransferredProduct">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&fm;transactionWholeProductionFact"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;PaymentWholePF-Payment">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&fm;transactionWholeProductionFact"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;PaymentIsParentOfVerifyTransferredProduct">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&bns;transactionBeforeAfter"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;VerifyTransferredProductIsParentOfTransferProduct">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&bns;transactionBeforeAfter"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;TransferProductIsParentOfLoadProductToTrain">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&bns;transactionBeforeAfter"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;TransferProductIsParentOfLoadProductToTruck">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&bns;transactionBeforeAfter"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;LoadProductToTrainIsParentOfPickProductFromIntWarehouse">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&bns;transactionBeforeAfter"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;LoadProductToTruckIsParentOfPickProductFromMainWarehouse">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&bns;transactionBeforeAfter"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;LoadProductToTruckIsParentOfPackProduct">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&bns;transactionBeforeAfter"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;PackProductIsParentOfReceiveProductFromMake">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&bns;transactionBeforeAfter"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;PackProductIsParentOfValidateProductReceivedFromExtSupplier">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&bns;transactionBeforeAfter"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;ValidateProductIsParentOfConfigureProductReceivedFromExtSupplier">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&bns;transactionBeforeAfter"/>
</fm:IndividualType>
<fm:IndividualType rdf:about="&bns;ConfigureProductIsParentOfReceiveProductFromExtSupplier">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="&bns;transactionBeforeAfter"/>
</fm:IndividualType>
<fm:TupleType rdf:about="&bns;ReceiveProductFromExtSupplierWholePF-ReceiveProductFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;ReceiveProductFromExtSupplier"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;ReceiveProductFromExtSupplierWholePF-ReceiveProductFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-ReceiveProductFromExtSupplier"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;ConfigureProductReceivedFromExtSupplierWholePF-ConfigureProductReceivedFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;ConfigureProductReceivedFromExtSupplier"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;ConfigureProductReceivedFromExtSupplierWholePF-ConfigureProductReceivedFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-ConfigureProductReceivedFromExtSupplier"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;ValidateProductReceivedFromExtSupplierWholePF-ValidateProductReceivedFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;ValidateProductReceivedFromExtSupplier"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;ValidateProductReceivedFromExtSupplierWholePF-ValidateProductReceivedFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-ValidateProductReceivedFromExtSupplier"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PackProductWholePF-PackProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;PackProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PackProductWholePF-PackProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-PackProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;ReceiveProductFromMakeWholePF-ReceiveProductFromMake">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;ReceiveProductFromMake"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;ReceiveProductFromMakeWholePF-ReceiveProductFromMake">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-ReceiveProductFromMake"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PickProductFromMainWarehouseWholePF-PickProductFromMainWarehouse">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;PickProductFromMainWarehouse"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PickProductFromMainWarehouseWholePF-PickProductFromMainWarehouse">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-PickProductFromMainWarehouse"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PickProductFromIntWarehouseWholePF-PickProductFromIntWarehouse">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;PickProductFromIntWarehouse"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PickProductFromIntWarehouseWholePF-PickProductFromIntWarehouse">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-PickProductFromIntWarehouse"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;LoadProductToTrainWholePF-LoadProductToTrain">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;LoadProductToTrain"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;LoadProductToTrainWholePF-LoadProductToTrain">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-LoadProductToTrain"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;LoadProductToTruckWholePF-LoadProductToTruck">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;LoadProductToTruck"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;LoadProductToTruckWholePF-LoadProductToTruck">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-LoadProductToTruck"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;TransferProductWholePF-TransferProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;TransferProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;TransferProductWholePF-TransferProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-TransferProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;VerifyTransferredProductWholePF-VerifyTransferredProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;VerifyTransferredProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;VerifyTransferredProductWholePF-VerifyTransferredProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-VerifyTransferredProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PaymentWholePF-Payment">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasWhole"/>
<owl:allValuesFrom rdf:resource="&bns;Payment"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PaymentWholePF-Payment">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&fm;hasFact"/>
<owl:allValuesFrom rdf:resource="&bns;PF-Payment"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PaymentIsParentOfVerifyTransferredProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasParent"/>
<owl:allValuesFrom rdf:resource="&bns;Payment"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PaymentIsParentOfVerifyTransferredProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasChild"/>
<owl:allValuesFrom rdf:resource="&bns;VerifyTransferredProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;VerifyTransferredProductIsParentOfTransferProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasParent"/>
<owl:allValuesFrom rdf:resource="&bns;VerifyTransferredProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;VerifyTransferredProductIsParentOfTransferProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasChild"/>
<owl:allValuesFrom rdf:resource="&bns;TransferProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;TransferProductIsParentOfLoadProductToTrain">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasParent"/>
<owl:allValuesFrom rdf:resource="&bns;TransferProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;TransferProductIsParentOfLoadProductToTrain">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasChild"/>
<owl:allValuesFrom rdf:resource="&bns;LoadProductToTrain"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;TransferProductIsParentOfLoadProductToTruck">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasParent"/>
<owl:allValuesFrom rdf:resource="&bns;TransferProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;TransferProductIsParentOfLoadProductToTruck">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasChild"/>
<owl:allValuesFrom rdf:resource="&bns;LoadProductToTruck"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;LoadProductToTrainIsParentOfPickProductFromIntWarehouse">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasParent"/>
<owl:allValuesFrom rdf:resource="&bns;LoadProductToTrain"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;LoadProductToTrainIsParentOfPickProductFromIntWarehouse">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasChild"/>
<owl:allValuesFrom rdf:resource="&bns;PickProductFromIntWarehouse"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;LoadProductToTruckIsParentOfPickProductFromMainWarehouse">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasParent"/>
<owl:allValuesFrom rdf:resource="&bns;LoadProductToTruck"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;LoadProductToTruckIsParentOfPickProductFromMainWarehouse">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasChild"/>
<owl:allValuesFrom rdf:resource="&bns;PickProductFromMainWarehouse"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;LoadProductToTruckIsParentOfPackProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasParent"/>
<owl:allValuesFrom rdf:resource="&bns;LoadProductToTruck"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;LoadProductToTruckIsParentOfPackProduct">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasChild"/>
<owl:allValuesFrom rdf:resource="&bns;PackProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PackProductIsParentOfReceiveProductFromMake">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasParent"/>
<owl:allValuesFrom rdf:resource="&bns;PackProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PackProductIsParentOfReceiveProductFromMake">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasChild"/>
<owl:allValuesFrom rdf:resource="&bns;ReceiveProductFromMake"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PackProductIsParentOfValidateProductReceivedFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasParent"/>
<owl:allValuesFrom rdf:resource="&bns;PackProduct"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;PackProductIsParentOfValidateProductReceivedFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasChild"/>
<owl:allValuesFrom rdf:resource="&bns;ValidateProductReceivedFromExtSupplier"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;ValidateProductIsParentOfConfigureProductReceivedFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasParent"/>
<owl:allValuesFrom rdf:resource="&bns;ValidateProductReceivedFromExtSupplier"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;ValidateProductIsParentOfConfigureProductReceivedFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasChild"/>
<owl:allValuesFrom rdf:resource="&bns;ConfigureProductReceivedFromExtSupplier"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;ConfigureProductIsParentOfReceiveProductFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasParent"/>
<owl:allValuesFrom rdf:resource="&bns;ConfigureProductReceivedFromExtSupplier"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
<fm:TupleType rdf:about="&bns;ConfigureProductIsParentOfReceiveProductFromExtSupplier">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="&bns;hasChild"/>
<owl:allValuesFrom rdf:resource="&bns;ReceiveProductFromExtSupplier"/>
</owl:Restriction>
</rdfs:subClassOf>
</fm:TupleType>
</rdf:RDF>
2.2. Графическая интерпретация модели бизнес-процесса на основе онтологии FEO
3. Программная реализация алгоритма поиска партнеров для взаимовыгодного сотрудничества в сети
3.1 Company.java
package com.delivery.process;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
public class Company {
public String companyName;
public ArrayList<Transaction> transactions;
public ArrayList<String> transactionTypesList;
public HashMap<String, Integer> kpiGroupByCategory;
Company(){
companyName = "";
transactions = new ArrayList<Transaction>();
transactionTypesList = new ArrayList<String>();
kpiGroupByCategory = new HashMap<String, Integer>();
}
Company(String n, ArrayList<Transaction> transactionList, ArrayList<String> transactionTypes){
companyName = n;
transactions = transactionList;
transactionTypesList = transactionTypes;
kpiGroupByCategory = new HashMap<String, Integer>();
this.groupAllKPIByCategory();
}
public String getCompanyName(){
return companyName;
}
public void setCompanyName(String name){
companyName = name;
}
public int getConnectivityDegree(Company a, String transactionType){
int sum = 0;
Transaction currentTransaction = null;
for (Transaction t : a.transactions){
if (t.name.equals(transactionType)){
currentTransaction = t;
break;
}
}
for (Entry<String, Integer> entry : currentTransaction.kpiList.entrySet()){
if (kpiGroupByCategory.containsKey(entry.getKey())){
int retval = kpiGroupByCategory.get(entry.getKey()).compareTo(entry.getValue());
if(retval >= 0) {
sum += entry.getValue();
} else {
sum += kpiGroupByCategory.get(entry.getKey());
}
}
}
return sum;
};
public String toString(){
StringBuffer buf = new StringBuffer();
buf.append("Company name:" + companyName + "\n");
for (Transaction t : transactions)
buf.append(t.toString());
return buf.toString();
}
public void groupAllKPIByCategory() {
for (Transaction transaction : transactions){
for (Entry<String, Integer> entry:transaction.kpiList.entrySet()){
if (kpiGroupByCategory.containsKey(entry.getKey())){
int currentCount = kpiGroupByCategory.get(entry.getKey());
currentCount += entry.getValue();
kpiGroupByCategory.put(entry.getKey(), currentCount);
} else{
kpiGroupByCategory.put(entry.getKey(), entry.getValue());
}
}
}
}
public void printLikeClient(){
StringBuffer buf = new StringBuffer();
buf.append("Company name:" + companyName + "\n");
for (Entry<String, Integer> entry: kpiGroupByCategory.entrySet()){
buf.append("Category: " + entry.getKey() + " , count: " + entry.getValue() + "\n");
}
System.out.println(buf.toString());
}
}
3.2 Transaction.java
package com.delivery.process;
import java.util.HashMap;
import java.util.Map.Entry;
public class Transaction {
String name;
HashMap<String, Integer> kpiList;
public Transaction(){
name = "";
kpiList = new HashMap<String, Integer>();
}
public Transaction(String n, HashMap<String, Integer> hm){
name = n;
kpiList = hm;
}
public String toString(){
StringBuffer buf = new StringBuffer();
buf.append("Transaction name:" + name + "\n");
for (Entry<String, Integer> entry: kpiList.entrySet())
buf.append("KPI: " + entry.getKey() + ", count = " + entry.getValue() + "\n");
return buf.toString();
}
}
3.3 GUIInterface.java
package com.delivery.process;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.util.ArrayList;
import javax.swing.*;
public class GUIInterface extends JPanel {
JTextArea result;
JButton ok;
static JFrame frame = new JFrame("Logistic network");
static DataProcess dataProcessObject;
private static ArrayList<String> availableProductionFacts = new ArrayList<String>();
private static String availableProductionFactsList = "";
public GUIInterface() {
super(new BorderLayout());
final JPanel verticalPanel = new JPanel(new GridLayout(0,1));
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.CENTER;
JPanel instructionPanel = new JPanel(new GridLayout(0,1));
String instructionTextPart0 = "Вас приветствует Система \"Logistic Network System\"!";
String instructionTextPart1 = "Пожалуйста, выполните следующие инструкции:";
String instructionTextPart2 = "1. Загрузите модель бизнес знаний Вашей компании ( в формате .owl ) ";
String instructionTextPart3 = "2. Укажите наименование необходимого Вам производственного факта";
String instructionTextPart4 = "3. Для получения наилучшей конфигурации сети нажмите \"Выполнить\"";
JLabel instructionPart0 = new JLabel(instructionTextPart0);
JLabel instructionPart1 = new JLabel(instructionTextPart1);
JLabel instructionPart2 = new JLabel(instructionTextPart2);
JLabel instructionPart3 = new JLabel(instructionTextPart3);
JLabel instructionPart4 = new JLabel(instructionTextPart4);
instructionPart0.setHorizontalAlignment(JLabel.CENTER);
instructionPart0.setVerticalAlignment(JLabel.CENTER);
instructionPart1.setHorizontalAlignment(JLabel.CENTER);
instructionPart1.setVerticalAlignment(JLabel.CENTER);
instructionPart2.setHorizontalAlignment(JLabel.CENTER);
instructionPart2.setVerticalAlignment(JLabel.CENTER);
instructionPart3.setHorizontalAlignment(JLabel.CENTER);
instructionPart3.setVerticalAlignment(JLabel.CENTER);
instructionPart4.setHorizontalAlignment(JLabel.CENTER);
instructionPart4.setVerticalAlignment(JLabel.CENTER);
instructionPanel.add(instructionPart0);
instructionPanel.add(instructionPart1);
instructionPanel.add(instructionPart2);
instructionPanel.add(instructionPart3);
instructionPanel.add(instructionPart4);
instructionPanel.setPreferredSize(new Dimension(500, 100));
verticalPanel.add(instructionPanel);
JPanel choosePanel = new JPanel(new FlowLayout());
JButton browseButton = new JButton("Загрузить");
browseButton.setPreferredSize(new Dimension(100, 30));
final JLabel statusbar = new JLabel("");
browseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
int option = chooser.showOpenDialog(GUIInterface.this);
if (option == JFileChooser.APPROVE_OPTION) {
File owl = chooser.getSelectedFile();
if (owl != null){
dataProcessObject.loadClient(owl.getPath());
ok.setEnabled(true);
}
statusbar.setText(owl.getName());
}
}
});
choosePanel.add(browseButton);
choosePanel.add(statusbar);
Font myFont = new Font("Serif", Font.ITALIC, 12);
JPanel inputPanel = new JPanel(new FlowLayout());
final JLabel inputLabel =
new JLabel("Введите наименование производственного факта: ");
final JTextField inputValue = new JTextField(30);
inputValue.setText("Необходимо указать значение этого поля");
inputValue.setFont(myFont);
inputPanel.add(inputLabel);
inputPanel.add(inputValue);
final JPanel submitVerticalPanel = new JPanel(new GridLayout(0,1));
submitVerticalPanel.add(choosePanel);
submitVerticalPanel.add(inputPanel);
JPanel buttonPanel = new JPanel(new GridBagLayout());
ok = new JButton("Выполнить");
ok.setEnabled(false);
ok.setPreferredSize(new Dimension(100, 30));
buttonPanel.add(ok, c);
submitVerticalPanel.add(buttonPanel);
add(submitVerticalPanel, BorderLayout.SOUTH);
result = new JTextArea(0,0);
result.setEditable(false);
result.setText(availableProductionFactsList);
JScrollPane scroll = new JScrollPane(result);
scroll.setPreferredSize(new Dimension(500, 300));
add(scroll, BorderLayout.CENTER);
ok.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Color c = Color.RED;
if (!(inputValue.getText().equals("Необходимо указать значение этого поля")) && !(inputValue.getText().equals("Введите корректное значение!"))){
if (!availableProductionFacts.contains(inputValue.getText())){
inputValue.setText("Введите корректное значение!");
inputValue.setForeground(c);
} else {
result.setText(dataProcessObject.searchBestCombinations(inputValue.getText()));
}
} else {
inputValue.setForeground(c);
}
verticalPanel.repaint();
}
});
verticalPanel.setPreferredSize(new Dimension(500, 100));
add(verticalPanel, BorderLayout.NORTH);
}
public static void createAndShowGUI() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int x = (dim.width)/2 - 250;
int y = (dim.height)/2 - 220;
frame.setLocation(x, y);
JComponent newContentPane = new GUIInterface();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
dataProcessObject = new DataProcess();
availableProductionFacts = dataProcessObject.getAllAvailableProductionFacts();
StringBuffer buf = new StringBuffer();
buf.append("--------------------- Список доступных производственных фактов -----------------------");
buf.append("\n");
int count = 1;
for (String transaction : availableProductionFacts){
buf.append(count);
buf.append(". ");
buf.append(transaction);
buf.append("\n");
++count;
}
availableProductionFactsList = buf.toString();
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
3.4 DataProcess.java
package com.delivery.process;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class DataProcess {
ArrayList <Company> companies = new ArrayList <Company>();
Company client = new Company();
ArrayList<String> files = new ArrayList<String>();
String fileList = "C://WebServers/home/localhost/www/Logistics.txt";
QueriesHandler qh = new QueriesHandler();
public Company loadCompany(String filePath){
//Create object of class Company from .owl file
return qh.loadCompany(filePath);
}
public ArrayList<String> getCompanyTransactions(String filePath){
return qh.getCompanyTransactionTypes(filePath);
}
public ArrayList<String> getAllAvailableTransactions(){
ArrayList<String> availableTransactionsList = new ArrayList<String>();
for (String file : files){
//System.out.println(file);
availableTransactionsList.addAll(getCompanyTransactions(file));
}
return new ArrayList<String>(new LinkedHashSet<String>(availableTransactionsList));
}
public ArrayList<String> getAllAvailableProductionFacts(){
ArrayList<String> availableProductionFactsList = new ArrayList<String>();
return qh.getAllAvailableProductionFacts();
}
public void getOwlFiles(){
FileReader fileReader = null;
try {
fileReader = new FileReader(fileList);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BufferedReader bufferedReader = new BufferedReader(fileReader);
String file = null;
try {
while ((file = bufferedReader.readLine()) != null)
{
files.add(file);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void loadCompanies(){
for (String file : files){
companies.add(loadCompany(file));
}
}
public void loadClient(String filePath){
client = loadCompany(filePath);
}
public String searchBestCombinations(String productionFact){
getOwlFiles();
ArrayList<String> availableTransactions = getAllAvailableTransactions(); ArrayList<ArrayList<String>> transactionsTreeIn = qh.getTransactionsTree(productionFact);
ArrayList<ArrayList<String>> transactionsTreeOut = new ArrayList<ArrayList<String>>();
boolean hasUnavailableTransactions = false;
for (ArrayList<String> arr : transactionsTreeIn ){
hasUnavailableTransactions = false;
for (String elem : arr){
if (!availableTransactions.contains(elem))
{
hasUnavailableTransactions = true;
break;
}
}
if (!hasUnavailableTransactions){
transactionsTreeOut.add(arr);
}
}
if (transactionsTreeOut.isEmpty()){
return "Указанный производственный факт не является результатом транзакции.";
}
loadCompanies();
for (Company c: companies){
//System.out.println(c.toString());
}
ArrayList<List<Vertex>> foundConfigurations = new ArrayList<List<Vertex>>();
for (ArrayList<String> transactionList : transactionsTreeOut){
foundConfigurations.add(findConfiguration(transactionList));
}
int minTransactionsCount = Integer.MAX_VALUE;
List<Vertex> bestConfiguration = null;
for (List<Vertex> list : foundConfigurations){
if (list.size() < minTransactionsCount){
minTransactionsCount = list.size();
bestConfiguration = list;
}
}
StringBuffer buf = new StringBuffer();
for (Vertex v : bestConfiguration){
if (v.transaction != ""){
buf.append("Транзакция: ");
buf.append(v.transaction);
buf.append("; Исполнитель: ");
buf.append(v.name);
buf.append("\n");
}
else{
buf.append(v.name);
buf.append("\n");
}
}
return buf.toString();
}
private List<Vertex> findConfiguration(ArrayList<String> transactionList) {
LinkedHashMap<String, ArrayList<Company>> transactionsWithPotentialExecutors = new LinkedHashMap<String, ArrayList<Company>>();
for (String transactionType : transactionList){
ArrayList<Company> potentialExecutors = new ArrayList<Company>();
for (Company company : companies){
if (company.transactionTypesList.contains(transactionType))
potentialExecutors.add(company);
}
transactionsWithPotentialExecutors.put(transactionType, potentialExecutors);
}
List<Vertex> vertices = new ArrayList<Vertex>();
Vertex end = new Vertex("End", null,"");
Iterator<Entry<String, ArrayList<Company>>> itr = transactionsWithPotentialExecutors.entrySet().iterator();
ArrayList<Vertex> previousVertices = new ArrayList<Vertex>();
ArrayList<Vertex> tempPreviousVertices = new ArrayList<Vertex>();
String previousTransaction = "";
Entry<String, ArrayList<Company>> entry;
int count = 0;
while (itr.hasNext()){
entry = itr.next();
for (Company c : entry.getValue()){
Vertex v = new Vertex(c.getCompanyName(), c, entry.getKey());
if (count == 0){
v.adjacencies.add(new Edge(end, -1));
} else{
for (Vertex pv : previousVertices){
v.adjacencies.add(new Edge(pv, client.getConnectivityDegree(pv.company, previousTransaction) + c.getConnectivityDegree(pv.company, previousTransaction)));
}
}
vertices.add(v);
tempPreviousVertices.add(v);
}
previousVertices.clear();
previousVertices.addAll(tempPreviousVertices);
tempPreviousVertices.clear();
previousTransaction = entry.getKey();
++count;
}
Vertex source = new Vertex("Source",null,"");
for (Vertex pv : previousVertices){
source.adjacencies.add(new Edge(pv, client.getConnectivityDegree(pv.company, previousTransaction)));
}
vertices.add(source);
vertices.add(end);
double maxWeight = 0;
for (Vertex v : vertices){
for (Edge e : v.adjacencies){
if (e.weight > maxWeight){
maxWeight = e.weight;
}
}
}
maxWeight += 1;
for (Vertex v : vertices){
for (Edge e : v.adjacencies){
if (e.weight != -1){
e.weight = maxWeight - e.weight;
}
else{
e.weight = 0;
}
}
DijkstraAlgorithm.computePaths(source);
StringBuffer buf = new StringBuffer();
List<Vertex> path = DijkstraAlgorithm.getShortestPathTo(end);
double benefit = maxWeight * transactionsWithPotentialExecutors.size() - end.minDistance;
return path;
}
3.5 DijkstraAlgorithm.java
package com.delivery.process;
import java.util.PriorityQueue;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
class Vertex implements Comparable<Vertex>
{
public final String name;
public String transaction;
public Company company;
public List<Edge> adjacencies = new ArrayList<Edge>();
public double minDistance = Double.POSITIVE_INFINITY;
public Vertex previous;
public Vertex(String argName, Company c, String t) {
name = argName;
company = c;
transaction = t;
}
public String toString() {
return name;
}
public int compareTo(Vertex other)
{
return Double.compare(minDistance, other.minDistance);
}
}
class Edge
{
public Vertex target;
public double weight;
public Edge(Vertex argTarget, double argWeight){
target = argTarget;
weight = argWeight;
}
}
public class DijkstraAlgorithm
{
public static void computePaths(Vertex source)
{
source.minDistance = 0.;
PriorityQueue<Vertex> vertexQueue = new PriorityQueue<Vertex>();
vertexQueue.add(source);
while (!vertexQueue.isEmpty()) {
Vertex u = vertexQueue.poll();
for (Edge e : u.adjacencies)
{
Vertex v = e.target;
double weight = e.weight;
double distanceThroughU = u.minDistance + weight;
if (distanceThroughU < v.minDistance) {
vertexQueue.remove(v);
v.minDistance = distanceThroughU ;
v.previous = u;
vertexQueue.add(v);
}
}
}
}
public static List<Vertex> getShortestPathTo(Vertex target)
{
List<Vertex> path = new ArrayList<Vertex>();
for (Vertex vertex = target; vertex != null; vertex = vertex.previous){
path.add(vertex);
}
Collections.reverse(path);
return path;
}
}
3.6 QueriesHandler.java
package com.delivery.process;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.query.ResultSetFormatter;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.reasoner.Reasoner;
import com.hp.hpl.jena.reasoner.rulesys.GenericRuleReasoner;
import com.hp.hpl.jena.reasoner.rulesys.Rule;
import com.hp.hpl.jena.util.FileManager;
public class QueriesHandler {
private static OntModel Model;
private static String productionTreeFilePath = "http://localhost/FEO-A-logistics-delivery.owl";
private static String AppLevelNS = "http://www.semanticweb.org/kpetrova/ontologies/2015/4/FEO-A-logistics-delivery#";
private static String OpLevelNS = "http://www.semanticweb.org/kpetrova/ontologies/2015/4/UFOModel#";
private static ArrayList<ArrayList<String>> productionFactsTree = new ArrayList<ArrayList<String>>();
private static ArrayList<ArrayList<String>> transactionsTree = new ArrayList<ArrayList<String>>();
private static void initializeOntModel(String filePath){
StringBuilder sb = new StringBuilder();
String ruleA = "[ruleA: (?x rdfs:subClassOf ?y), (?i rdf:type ?x) -> (?i rdf:type ?y)] ";
sb.append(ruleA);
List<Rule> rules = Rule.parseRules(sb.toString());
Reasoner reasoner = new GenericRuleReasoner(rules);
OntModelSpec ontModelSpec = new OntModelSpec(
OntModelSpec.OWL_MEM_RULE_INF);
ontModelSpec.setReasoner(reasoner);
Model = ModelFactory.createOntologyModel(ontModelSpec);
InputStream input = FileManager.get().open(filePath);
if (input == null) {
throw new IllegalArgumentException("File: " + filePath
+ " not found");
}
Model.read(input, "");
}
public ArrayList<ArrayList<String>> getTransactionsTree(String endProductionFact){
initializeOntModel(productionTreeFilePath);
productionFactsTree.clear();
getProductionFactsTree(endProductionFact);
for (ArrayList<String> arr : productionFactsTree){
ArrayList<String> tempArr = new ArrayList<String>();
arr.remove(0);
for (String elem : arr){
tempArr.add(getTransactionByProductionFact(elem));
}
transactionsTree.add(tempArr);
}
for (ArrayList<String> arr : transactionsTree)
for (String elem : arr)
{
//System.out.println(elem);
}
return transactionsTree;
}
public static void getProductionFactsTree(String endProductionFact){
ArrayList<String> branch = new ArrayList<String>();
branch.add(endProductionFact);
findChildAndAddToTree(branch, endProductionFact);
for (ArrayList<String> arr : productionFactsTree)
for (String elem : arr){
//System.out.println(elem);
}
}
public static void findChildAndAddToTree(ArrayList<String> arr, String parentProductionFact){
ArrayList<String> childs = getChildsOfProductionFact(parentProductionFact);
for(String child : childs){
ArrayList<String> newBranch = new ArrayList<String>();
newBranch.addAll(arr);
newBranch.add(child);
findChildAndAddToTree(newBranch, child);
boolean shouldAddToTree = true;
for (ArrayList<String> branch : productionFactsTree){
if (!branch.equals(newBranch) && branch.containsAll(newBranch))
shouldAddToTree = false;
}
if (shouldAddToTree)
productionFactsTree.add(newBranch);
}
}
public static ArrayList<String> getChildsOfProductionFact(String fact){
String queryStr;
queryStr = "PREFIX pr: <" + AppLevelNS + "> "
+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
+ "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
+ "PREFIX owl: <http://www.w3.org/2002/07/owl#> "
+ "SELECT ?child "
+ "WHERE {"
+ "?tuple rdfs:subClassOf pr:productionFactBeforeAfter. "
+ "?tuple rdf:type pr:TupleType. "
+ "?tuple rdfs:subClassOf _:R1. "
+ "_:R1 a owl:Restriction. "
+ "_:R1 owl:onProperty pr:hasParent. "
+ "_:R1 owl:allValuesFrom <" + AppLevelNS + fact + ">. "
+ "?tuple rdfs:subClassOf _:R2. "
+ "_:R2 owl:onProperty pr:hasChild. "
+ "_:R2 owl:allValuesFrom ?child. }";
ArrayList<String> resultList = new ArrayList<String>();
Query query;
QueryExecution qe;
ResultSet result;
query = QueryFactory.create(queryStr);
qe = QueryExecutionFactory.create(query, Model);
result = qe.execSelect();
List<QuerySolution> list = ResultSetFormatter.toList(result);
for (QuerySolution qs : list)
{
String resultStr = qs.get("child").toString();
if (resultStr != null){
resultStr = resultStr.substring(resultStr.lastIndexOf("#")+1);
//System.out.println(resultStr);
}
resultList.add(resultStr);
}
return resultList;
}
public static String getTransactionByProductionFact(String fact){
String queryStr;
queryStr = "PREFIX pr: <" + AppLevelNS + "> "
+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
+ "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
+ "PREFIX owl: <http://www.w3.org/2002/07/owl#> "
+ "SELECT ?transaction "
+ "WHERE {"
+ "?tuple rdfs:subClassOf pr:transactionWholeProductionFact. "
+ "?tuple rdf:type pr:TupleType. "
+ "?tuple rdfs:subClassOf _:R1. "
+ "_:R1 a owl:Restriction. "
+ "_:R1 owl:onProperty pr:hasFact. "
+ "_:R1 owl:allValuesFrom <" + AppLevelNS + fact + ">. "
+ "?tuple rdfs:subClassOf _:R2. "
+ "_:R2 owl:onProperty pr:hasWhole. "
+ "_:R2 owl:allValuesFrom ?transaction. }";
ArrayList<String> resultList = new ArrayList<String>();
Query query;
QueryExecution qe;
ResultSet result;
query = QueryFactory.create(queryStr);
qe = QueryExecutionFactory.create(query, Model);
result = qe.execSelect();
List<QuerySolution> list = ResultSetFormatter.toList(result);
for (QuerySolution qs : list)
{
String resultStr = qs.get("transaction").toString();
if (resultStr != null){
resultStr = resultStr.substring(resultStr.lastIndexOf("#")+1);
}
resultList.add(resultStr);
}
return resultList.get(0);
}
public ArrayList<String> getCompanyTransactionTypes(String filePath) {
initializeOntModel(filePath);
String queryStr;
queryStr = "PREFIX pr: <" + OpLevelNS + "> "
+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
+ "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
+ "PREFIX owl: <http://www.w3.org/2002/07/owl#> "
+ "SELECT ?transaction "
+ "WHERE { ?transaction rdf:type pr:Transaction. }";
ArrayList<String> resultList = new ArrayList<String>();
Query query;
QueryExecution qe;
ResultSet result;
query = QueryFactory.create(queryStr);
qe = QueryExecutionFactory.create(query, Model);
result = qe.execSelect();
List<QuerySolution> list = ResultSetFormatter.toList(result);
for (QuerySolution qs : list)
{
String resultStr = qs.get("transaction").toString();
if (resultStr != null){
resultStr = resultStr.substring(resultStr.lastIndexOf("#")+1);
//System.out.println(resultStr);
}
resultList.add(resultStr);
}
return resultList;
}
public Company loadCompany(String filePath) {
ArrayList<String> transactionTypes = getCompanyTransactionTypes(filePath);
System.out.println("Transaction type: " + transactionTypes.get(0));
String name = getActor(transactionTypes.get(0));
ArrayList<Transaction> transactions = new ArrayList<Transaction>();
for (String transactionType : transactionTypes){
ArrayList<String> kpiList = getKPIOfTransaction(transactionType);
HashMap<String, Integer> categoriesList = new HashMap<String, Integer>();
for (String kpi : kpiList){
String category = getKPICategory(kpi);
if (!categoriesList.containsKey(category)){
categoriesList.put(category, 1);
}
else{
int currentCount = categoriesList.get(category);
categoriesList.put(category, ++currentCount);
}
}
transactions.add(new Transaction(transactionType, categoriesList));
}
return new Company(name, transactions, transactionTypes);
}
public ArrayList<String> getKPIOfTransaction(String transaction){
String queryStr;
queryStr = "PREFIX pr: <" + OpLevelNS + "> "
+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
+ "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
+ "PREFIX owl: <http://www.w3.org/2002/07/owl#> "
+ "SELECT ?businessRule "
+ "WHERE { ?businessRule rdf:type _:R1. "
+ "_:R1 rdfs:subClassOf pr:BusinessRule. "
+ "pr:" + transaction + " pr:isAdjustedBy ?businessRule. }";
ArrayList<String> resultList = new ArrayList<String>();
Query query;
QueryExecution qe;
ResultSet result;
query = QueryFactory.create(queryStr);
qe = QueryExecutionFactory.create(query, Model);
result = qe.execSelect();
List<QuerySolution> list = ResultSetFormatter.toList(result);
for (QuerySolution qs : list)
{
String resultStr = qs.get("businessRule").toString();
if (resultStr != null){
resultStr = resultStr.substring(resultStr.lastIndexOf("#")+1);
//System.out.println(resultStr);
}
resultList.add(resultStr);
}
return resultList;
}
public String getKPICategory(String kpi){
String queryStr;
queryStr = "PREFIX pr: <" + OpLevelNS + "> "
+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
+ "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
+ "PREFIX owl: <http://www.w3.org/2002/07/owl#> "
+ "SELECT ?category "
+ "WHERE { pr:" + kpi +" rdf:type ?category."
+ "?category rdfs:subClassOf pr:BusinessRule. }";
ArrayList<String> resultList = new ArrayList<String>();
Query query;
QueryExecution qe;
ResultSet result;
query = QueryFactory.create(queryStr);
qe = QueryExecutionFactory.create(query, Model);
result = qe.execSelect();
List<QuerySolution> list = ResultSetFormatter.toList(result);
for (QuerySolution qs : list)
{
String resultStr = qs.get("category").toString();
if (resultStr != null){
resultStr = resultStr.substring(resultStr.lastIndexOf("#")+1);
//System.out.println(resultStr);
}
resultList.add(resultStr);
}
return resultList.get(0);
}
public String getActor(String transaction){
String queryStr;
queryStr = "PREFIX pr: <" + OpLevelNS + "> "
+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
...Подобные документы
Обоснование, схема и описание бизнес-процесса организации. Идентификация законов распределения случайных величин. Разработка и описание моделирующего алгоритма для реализации программы имитационной модели. Разработка компьютерной программы моделирования.
курсовая работа [265,3 K], добавлен 28.07.2013Проектирование бизнес-процессов. Выбор BPM-системы для автоматизации бизнес-процессов. Построение прототипа системы, автоматизирующей управление бизнес-процессами. Анализ программных продуктов. Матрица связанности элементов организационной структуры.
дипломная работа [3,3 M], добавлен 26.08.2017Описание алгоритма культурного обмена и проведение экспериментального исследования средней трудоемкости алгоритма случайного поиска. Основные идеи алгоритма и эффективность итерационных методов решения. Зависимость функции качества от длины генотипа.
курсовая работа [373,3 K], добавлен 24.06.2012Классификация бизнес-процессов, различные подходы к их моделированию и параметры качества. Методология и функциональные возможности систем моделирования бизнес-процессов. Сравнительная оценка систем ARIS и AllFusion Process Modeler 7, их преимущества.
дипломная работа [1,6 M], добавлен 11.02.2011Архитектура интегрированных информационных систем ARIS как методология моделирования бизнес-процессов. Преимущества и недостатки существующих аналогов. Выбор и обоснование типов диаграмм, используемых для описания бизнес-процесса средствами ARIS.
дипломная работа [1,8 M], добавлен 03.12.2014Построение имитационной модели бизнес-процесса "Управление инцидентами" компании "МегаФон" с целью прогнозирования совокупной стоимость ИТ-сервиса по обслуживанию инцидентов. Разработка моделирующих алгоритмов для реализации компьютерных программ модели.
курсовая работа [2,6 M], добавлен 09.04.2012Создание бизнес-модели процесса выдачи потребительских кредитов. Организационное обеспечение кредитного процесса. Моделирование и документирование бизнес-процессов в программе BPwin. Построение модели AS IS. Предложение по автоматизации бизнес-процесса.
курсовая работа [401,5 K], добавлен 07.01.2012История бизнес-моделирования с середины ХХ века до настоящего времени. Определение понятий "бизнес-модель" и "бизнес-моделирование". Характеристика динамики основных положений различных бизнес-моделей по мере изменения состояния конкуренции предприятия.
курсовая работа [2,2 M], добавлен 14.05.2019Применение метода равномерного расположения для оптимизации бизнес-процессов. Программное обеспечение Staffware Process Suit, суть его работы и преимущества. Разработка приложения-прототипа для автоматизации применения метода равномерного расположения.
дипломная работа [214,9 K], добавлен 21.08.2016Анализ внешней и внутренней среды, экономических показателей, предприятия. Оценка его конкурентоустойчивости. Составление матрицы привлекательности рынка. Прогнозный план доходов и расходов. Моделирование бизнес-процессов функционирования дома отдыха.
курсовая работа [1,4 M], добавлен 18.03.2015Понятие и сущность ИТ-консалтинга. Направления деятельности фирм специализирующихся в сфере информационного консалтинга. Базовые понятия бизнес-моделирования. Классификация бизнес-процессов. Особенности отчета о причинно-следственном анализе проблемы.
контрольная работа [1,5 M], добавлен 09.11.2012Моделирование информационной системы (ИС) бизнес-процессов продуктового супермаркета "Большая Ложка" на ранней стадии (фазе формирования концепции предприятия) стандартами UML. Сценарий для моделирования ИС, начальные данные и структура управления.
курсовая работа [335,5 K], добавлен 16.09.2011Определение понятия "бизнес-модель", ее влияние на успех и конкурентоспособность фирмы. Решение управленческой задачи компании "Сильвер Койн", которая столкнулась с проблемой низких продаж вследствие несбалансированности элементов бизнес-модели.
дипломная работа [3,4 M], добавлен 18.06.2013Особенности моделирования бизнес-процессов в стандарте IDEF0 и расчета их эффективности. Реинжиниринг процесса изготовления мыла ручной работы с соблюдением бюджета материальных затрат, экономии материалов и соответствия всем требованиям качества.
курсовая работа [1010,5 K], добавлен 17.07.2014Общая характеристика бизнес-процесса и построение его внешней, функциональной и объектной моделей. Описание ресурсов и исполнителей процесса. Оценка по метрикам, которые характеризуют степень удовлетворенности клиента. Определение целей оптимизации.
курсовая работа [333,6 K], добавлен 27.10.2013Применение метода равномерного расположения для оптимизации бизнес-процессов. Программное обеспечение Staffware Process Suit. Применение метода равномерного расположения для процессов планирования и принятия решений. Методы распределения ресурсов.
курсовая работа [492,4 K], добавлен 18.02.2017Значение факторов внешней среды при организации бизнеса. Анализ внутренней структуры "Школа танцев". Разработка прототипа информационной системы для автоматизации деятельности предприятия. Моделирование бизнес-процесса и построение контекстной диаграммы.
контрольная работа [902,2 K], добавлен 10.02.2013Использование метода оценки параметров в стандартных масштабах для определения неизвестных параметров линейной модели множественной регрессии. Специфика изучения взаимосвязей по временным рядам. Моделирование взаимосвязей и тенденций в финансовой сфере.
контрольная работа [326,7 K], добавлен 22.04.2016Применение моделей кривых роста в бизнес-прогнозировании. Методы выбора кривых роста. Доверительные интервалы прогноза для линейного тренда, и полученные с использованием уравнения экспоненты. Дисперсия отклонений фактических наблюдений от расчетных.
курсовая работа [958,1 K], добавлен 13.09.2015Сущность математического моделирования и формализации. Выявление управляемых и неуправляемых параметров. Математическое описание посредством уравнений, неравенств, функций и иных отношений взаимосвязей между элементами модели (параметрами, переменными).
курсовая работа [116,8 K], добавлен 17.12.2009