Package org.data2semantics.exp.dmold

Source Code of org.data2semantics.exp.dmold.DMoLDAffiliationExperiment

package org.data2semantics.exp.dmold;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;

import org.data2semantics.exp.RDFMLExperiment;
import org.data2semantics.exp.utils.RDFOldKernelExperiment;
import org.data2semantics.exp.utils.Result;
import org.data2semantics.exp.utils.ResultsTable;
import org.data2semantics.proppred.kernels.rdfgraphkernels.RDFCombinedKernel;
import org.data2semantics.proppred.kernels.rdfgraphkernels.RDFFeatureVectorKernel;
import org.data2semantics.proppred.kernels.rdfgraphkernels.RDFGraphKernel;
import org.data2semantics.proppred.kernels.rdfgraphkernels.RDFIntersectionSubTreeKernel;
import org.data2semantics.proppred.kernels.rdfgraphkernels.RDFIntersectionTreeEdgeVertexPathKernel;
import org.data2semantics.proppred.kernels.rdfgraphkernels.RDFIntersectionTreeEdgeVertexPathWithTextKernel;
import org.data2semantics.proppred.kernels.rdfgraphkernels.RDFIntersectionTreeEdgeVertexWithSuperTypesPathKernel;
import org.data2semantics.proppred.kernels.rdfgraphkernels.RDFWLBiSubTreeKernel;
import org.data2semantics.proppred.kernels.rdfgraphkernels.RDFWLSubTreeKernel;
import org.data2semantics.proppred.kernels.rdfgraphkernels.RDFWLSubTreeWithTextKernel;
import org.data2semantics.proppred.learners.libsvm.LibSVMParameters;
import org.data2semantics.tools.rdf.RDFFileDataSet;
import org.openrdf.model.Resource;
import org.openrdf.model.Statement;
import org.openrdf.model.Value;
import org.openrdf.rio.RDFFormat;

public class DMoLDAffiliationExperiment extends RDFMLExperiment {
  private static String dataFile = "datasets/aifb-fixed_complete.n3";
 
 
  public static void main(String[] args) {
    for (int i = 0; i < args.length; i++) {
      if (args[i].equals("-file")) {
        i++;
        dataFile = args[i];
      }
    }   
   
    long[] seeds = {11,21,31,41,51,61,71,81,91,101};
    double[] cs = {0.001, 0.01, 0.1, 1, 10, 100, 1000}

    int[] depths = {1,2,3};
    int[] iterations = {0,2,4,6};
    boolean inference = false;


    createAffiliationPredictionDataSet(1);

    LibSVMParameters svmParms = new LibSVMParameters(LibSVMParameters.C_SVC, cs);
    svmParms.setNumFolds(10);
   
    ResultsTable resTable = new ResultsTable();
    resTable.setDigits(2);

    for (int depth : depths) {
      resTable.newRow("WL RDF Bi, depth="+depth);
      for (int it : iterations) {
        RDFOldKernelExperiment exp = new RDFOldKernelExperiment(new RDFWLBiSubTreeKernel(it, depth, inference, true), seeds, svmParms, dataset, instances, labels, blackList);

       
        System.out.println("Running WL RDF Bi: " + depth + " " + it);
        exp.run();

        for (Result res : exp.getResults()) {
          resTable.addResult(res);
        }
      }
    }
    System.out.println(resTable);

   
   
    for (int depth : depths) {
      resTable.newRow("WL RDF forward, depth="+depth);
      for (int it : iterations) {
        RDFOldKernelExperiment exp = new RDFOldKernelExperiment(new RDFWLSubTreeKernel(it, depth, inference, true), seeds, svmParms, dataset, instances, labels, blackList);

       
        System.out.println("Running WL RDF Fwd: " + depth + " " + it);
        exp.run();

        for (Result res : exp.getResults()) {
          resTable.addResult(res);
        }
      }
    }
    System.out.println(resTable);

    for (int depth : depths) {
      resTable.newRow("WL RDF reverse, depth="+depth);
      for (int it : iterations) {
        RDFOldKernelExperiment exp = new RDFOldKernelExperiment(new RDFWLSubTreeKernel(it, depth, inference, true, true, false), seeds, svmParms, dataset, instances, labels, blackList);

       
        System.out.println("Running WL RDF Rev: " + depth + " " + it);
        exp.run();

        for (Result res : exp.getResults()) {
          resTable.addResult(res);
        }
      }
    }
    System.out.println(resTable);

   
    /*

    for (int depth : depths) {
      resTable.newRow("WL RDF BoW, depth="+depth);
      for (int it : iterations) {
        RDFOldKernelExperiment exp = new RDFOldKernelExperiment(new RDFWLSubTreeWithTextKernel(it, depth, inference, true), seeds, svmParms, dataset, instances, labels, blackList);

       
        System.out.println("Running WL RDF with Text: " + depth + " " + it);
        exp.run();

        for (Result res : exp.getResults()) {
          resTable.addResult(res);
        }
      }
    }
    System.out.println(resTable);
   
    */
   
    /*
    ResultsTable table2 = new ResultsTable();
   
    for (int depth : depths) {
      resTable.newRow("ITP, depth="+depth);
      table2.newRow("");
     
      RDFOldKernelExperiment exp = new RDFOldKernelExperiment(new RDFIntersectionTreeEdgeVertexPathKernel(depth, false, inference, true), seeds, svmParms, dataset, instances, labels, blackList);

      System.out.println("Running EVP: " + depth);
      exp.run();

      for (Result res : exp.getResults()) {
        resTable.addResult(res);
        table2.addResult(res);
      }
    }
    System.out.println(resTable);
 
     
    for (int depth : depths) {
      resTable.newRow("ITP with ST, depth="+depth);
      table2.newRow("");
     
      RDFOldKernelExperiment exp = new RDFOldKernelExperiment(new RDFIntersectionTreeEdgeVertexWithSuperTypesPathKernel(depth, false, inference, true), seeds, svmParms, dataset, instances, labels, blackList);

      System.out.println("Running EVP with ST: " + depth);
      exp.run();

      for (Result res : exp.getResults()) {
        resTable.addResult(res);
        table2.addResult(res);
      }
    }
    System.out.println(resTable);
   
   
    for (int depth : depths) {
      resTable.newRow("ITP + BoL, depth="+depth);
      table2.newRow("");
     
      List<RDFFeatureVectorKernel> kernels = new ArrayList<RDFFeatureVectorKernel>();
      kernels.add(new RDFIntersectionTreeEdgeVertexPathKernel(depth, false, inference, false));
      kernels.add(new RDFWLSubTreeKernel(0, depth, inference, false));
           
      RDFGraphKernel k = new RDFCombinedKernel(kernels, true);
     
      RDFOldKernelExperiment exp = new RDFOldKernelExperiment(k, seeds, svmParms, dataset, instances, labels, blackList);

      System.out.println("Running EVP + BoL: " + depth);
      exp.run();

      for (Result res : exp.getResults()) {
        resTable.addResult(res);
        table2.addResult(res);
      }
    }
    System.out.println(resTable);
   
   
    for (int depth : depths) {
      resTable.newRow("ITP BoW, depth="+depth);
      table2.newRow("");
     
      RDFOldKernelExperiment exp = new RDFOldKernelExperiment(new RDFIntersectionTreeEdgeVertexPathWithTextKernel(depth, false, inference, false), seeds, svmParms, dataset, instances, labels, blackList);

      System.out.println("Running EVP with Text: " + depth);
      exp.run();

      for (Result res : exp.getResults()) {
        resTable.addResult(res);
        table2.addResult(res);
      }
    }
    System.out.println(resTable);
   
    */
   
    /*
   
    for (int depth : depths) {
      resTable.newRow("IST, depth="+depth);
      RDFOldKernelExperiment exp = new RDFOldKernelExperiment(new RDFIntersectionSubTreeKernel(depth, 1, inference, true), seeds, svmParms, dataset, instances, labels, blackList);

      System.out.println("Running IST: " + depth);
      exp.run();

      for (Result res : exp.getResults()) {
        resTable.addResult(res);
      }
    }
   
    */
   
    resTable.addCompResults(resTable.getBestResults());
    //resTable.addCompResults(table2.getBestResults());
    System.out.println(resTable);

  }



  private static void createAffiliationPredictionDataSet(double frac) {
    Random rand = new Random(1);

    // Read in data set
    dataset = new RDFFileDataSet(dataFile, RDFFormat.N3);

    // Extract all triples with the affiliation predicate
    List<Statement> stmts = dataset.getStatementsFromStrings(null, "http://swrc.ontoware.org/ontology#affiliation", null);

    // initialize the lists of instances and labels
    instances = new ArrayList<Resource>();
    labels = new ArrayList<Value>();

    // The subjects of the affiliation triples will we our instances and the objects our labels
    for (Statement stmt : stmts) {
      if (rand.nextDouble() <= frac) {
        instances.add(stmt.getSubject());
        labels.add(stmt.getObject());
      }
    }

    //capClassSize(20, 1);
    removeSmallClasses(5);
    // the blackLists data structure
    blackList = new ArrayList<Statement>();
    blackLists = new HashMap<Resource, List<Statement>>();

    // For each instance we add the triples that give the label of the instance (i.e. the URI of the affiliation)
    // In this case this is the affiliation triple and the reverse relation triple, which is the employs relation.
    for (Resource instance : instances) {
      blackList.addAll(dataset.getStatementsFromStrings(instance.toString(), "http://swrc.ontoware.org/ontology#affiliation", null));
      blackList.addAll(dataset.getStatementsFromStrings(null, "http://swrc.ontoware.org/ontology#employs", instance.toString()));
    }

    for (Resource instance : instances) {
      blackLists.put(instance, blackList);
    }
  }
}
TOP

Related Classes of org.data2semantics.exp.dmold.DMoLDAffiliationExperiment

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.