All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aksw.simba.lsq.model.ExperimentRun Maven / Gradle / Ivy

package org.aksw.simba.lsq.model;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Objects;

import org.aksw.jenax.annotation.reprogen.HashId;
import org.aksw.jenax.annotation.reprogen.Iri;
import org.aksw.jenax.annotation.reprogen.ResourceView;
import org.aksw.jenax.annotation.reprogen.StringId;
import org.aksw.jenax.reprogen.hashid.HashIdCxt;
import org.aksw.simba.lsq.vocab.LSQ;
import org.apache.jena.datatypes.xsd.XSDDateTime;
import org.apache.jena.rdf.model.Resource;

@ResourceView
public interface ExperimentRun
    extends Resource
{
    @HashId
    @Iri(LSQ.Terms.config)
    ExperimentRun setExec(ExperimentExec exec);
    ExperimentExec getExec();

    // The id should be based on getConfig.getIdentifier() and getTimestamp()
//    @Iri("dct:identifier")
//    @HashId
//    String getIdentifier();
//    ExperimentRun setIdentifier(String id);

    /**
     * Timestamp when this run iteration was started.
     * This is just informational. For identity, the runId is used.
     * @return
     */
    @Iri(LSQ.Terms.atTime)
    XSDDateTime getTimestamp();
    ExperimentRun setTimestamp(XSDDateTime calendar);

    @HashId
    @Iri(LSQ.Terms.runId)
    Integer getRunId();
    ExperimentRun setRunId(Integer runId);

    /**
     * The identifier should be composed of getConfig().getIdentifier() and getTimestamp()
     *
     * @return
     */
//    @HashId
//    @Iri("dct:identifier")
//    String getIdentifier();
//    ExperimentRun setIdentifier(String id);


    // 17/Apr/2011:06:47:47 +0200
    public static final DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy_HH:mm:ss");

    @StringId
    default String getStringId(HashIdCxt cxt) {
        ExperimentExec exec = getExec();
        ExperimentConfig config = exec.getConfig();
        // String id = config.getIdentifier();
        Integer runId = getRunId();
//        Calendar cal = Objects.requireNonNull(getTimestamp(), "no timestamp given").asCalendar();
//        String timestamp = dateFormat.format(cal.getTime());
        //String prefix = StringUtils.toLowerCamelCase(getClass().getSimpleName()); // ""

        String result = exec.getStringId(cxt);
        String runSuffix = runId == null ? "" : Integer.toString(runId);
        result += "_run" + runSuffix;

        return result;
//        String result = id;
//        Integer runId = getRunId();
//        if (runId != null) {
//            result += "_run" + runId;
//        }
//
//        result += "_at_" + timestamp;
//        return result;
    }

//    @Iri(LSQ.Strs.endpoint)
//    @IriType
//    String getEndpoint();
//    ExperimentConfig setEndpoint(String url);

//	@Iri(LSQ.Strs.runTimeMs)
//	Resource getDistribution();
//	ExperimentConfig setDistribution(Resource distribution);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy