Разработка алгоритма поиска наиболее выгодных конфигураций сети в условиях непостоянства состава ее участников и вариативности бизнес-процессов

Выделение ключевых бизнес-концептов и их взаимосвязей на основе метамоделей 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.