/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.sparql.junit; import org.apache.jena.atlas.lib.DateTimeUtils ; import org.apache.jena.datatypes.xsd.XSDDatatype ; import org.apache.jena.rdf.model.* ; import org.apache.jena.sparql.vocabulary.DOAP ; import org.apache.jena.sparql.vocabulary.EARL ; import org.apache.jena.sparql.vocabulary.FOAF ; import org.apache.jena.vocabulary.DC ; import org.apache.jena.vocabulary.DCTerms ; import org.apache.jena.vocabulary.RDF ; import org.apache.jena.vocabulary.XSD ; public class EarlReport { // Ref: http://www.w3.org/TR/EARL10-Schema/ // NB: This vocabulary has changed over time! /* An entry looks like: * [ rdf:type earl:Assertion; earl:assertedBy [ ...] earl:result [ rdf:type earl:TestResult; earl:outcome earl:passed ]; earl:subject <thingBeingTested>; earl:test <testPerformed> ; earl:mode .... ]. */ Model earl = null ; Resource system = null ; Resource reporter = null ; /* Required: * Recommended: DC title * Optional: dc:hasVersion, dc:description, homepage */ public EarlReport(String systemURI, String name, String version, String homepage) { earl = ModelFactory.createDefaultModel() ; earl.setNsPrefix("earl", EARL.getURI()) ; earl.setNsPrefix("foaf", FOAF.getURI()) ; earl.setNsPrefix("rdf", RDF.getURI()) ; earl.setNsPrefix("dc", DC.getURI()) ; earl.setNsPrefix("dct", DCTerms.getURI()) ; earl.setNsPrefix("doap", DOAP.getURI()) ; earl.setNsPrefix("xsd", XSD.getURI()) ; // Utils. system = (systemURI == null ) ? earl.createResource(EARL.Software) : earl.createResource(systemURI, EARL.Software) ; if ( name != null ) system.addProperty(DC.title, name); if ( version != null ) system.addProperty(DCTerms.hasVersion, version); if ( homepage != null ) system.addProperty(FOAF.homepage, earl.createResource(homepage)); // Can be a person or a thing. // But here it is automated tests unless told otherwise.. reporter = system ; } public Resource getSystem() { return system ; } public Resource getReporter() { return reporter ; } public void setReporter(Resource reporter) { this.reporter = reporter ; } public void success(String testURI) { createAssertionResult(testURI, EARL.passed) ; //Old -- createAssertionResult(testURI, EARL.pass) ; } public void failure(String testURI) { createAssertionResult(testURI, EARL.failed) ; //Old -- createAssertionResult(testURI, EARL.fail) ; } public void notApplicable(String testURI) { createAssertionResult(testURI, EARL.inapplicable); // Old -- createAssertionResult(testURI, EARL.notApplicable); } public void notTested(String testURI) { createAssertionResult(testURI, EARL.untested); // Old -- createAssertionResult(testURI, EARL.notTested); } private void createAssertionResult(String testURI, Resource outcome) { Resource result = createResult(outcome) ; Resource assertion = createAssertion(testURI, result) ; } /* * Required: earl:assertedBy , earl:subject , earl:test , earl:result * Recommended: earl:mode */ private Resource createAssertion(String testURI, Resource result) { Resource thisTest = earl.createResource(testURI) ; return earl.createResource(EARL.Assertion) .addProperty(EARL.test, thisTest) .addProperty(EARL.result, result) .addProperty(EARL.subject, system) .addProperty(EARL.assertedBy, system) .addProperty(EARL.mode, EARL.automatic) ; } private Resource createResult(Resource outcome) { // String nowStr = Utils.nowAsXSDDateTimeString() ; // // Literal now = // ResourceFactory.createTypedLiteral(nowStr, XSDDatatype.XSDdateTime) ; String todayStr = DateTimeUtils.todayAsXSDDateString() ; Literal now = ResourceFactory.createTypedLiteral(todayStr, XSDDatatype.XSDdate) ; return earl.createResource(EARL.TestResult) .addProperty(EARL.outcome, outcome) .addProperty(DC.date, now) ; } public Model getModel() { return earl ; } public Model getDescription() { return earl ; } }