// Path: rdfagents-core/src/main/java/net/fortytwo/rdfagents/RDFAgents.java
// public class RDFAgents {
//     private static final Logger logger = Logger.getLogger(RDFAgents.class.getName());
// 
//     // Agent profile properties
//     public static final String
//             QUERY_ANSWERING_SUPPORTED = "behavior.query.answer.supported",
//             QUERY_ASKING_SUPPORTED = "behavior.query.ask.supported";
// 
//     public static final String
//             // TODO
//             BASE_IRI = "http://example.org/",
//             RDFAGENTS_ONTOLOGY_NAME = "rdfagents",
//             RDFAGENTS_ACCEPT_PARAMETER = "X-rdfagents-accept";
// 
//     public static final String NAME_PREFIX = "urn:x-agent:";
//     public static final String XMPP_URI_PREFIX = "xmpp://";
// 
//     public enum Protocol {
//         Query("fipa-query"), Subscribe("fipa-subscribe");
// 
//         private final String fipaName;
// 
//         private Protocol(final String fipaName) {
//             this.fipaName = fipaName;
//         }
// 
//         public String getFipaName() {
//             return fipaName;
//         }
// 
//         public static Protocol getByName(final String name) {
//             for (Protocol l : Protocol.values()) {
//                 if (l.fipaName.equals(name)) {
//                     return l;
//                 }
//             }
// 
//             return null;
//         }
//     }
// 
//     private RDFAgents() {
//     }
// 
//     public static boolean isValidIRI(final String iri) {
//         // TODO: make this more efficient, and base it on the IRI spec
//         try {
//             createIRI(iri);
//             return true;
//         } catch (Exception t) {
//             return false;
//         }
//     }
// 
//     public static IRI createIRI(String iri) {
//         return SimpleValueFactory.getInstance().createIRI(iri);
//     }
// 
//     public static Literal createLiteral(String iri) {
//         return SimpleValueFactory.getInstance().createLiteral(iri);
//     }
// 
//     public static Statement createStatement(Resource subject, IRI predicate, Value object) {
//         return SimpleValueFactory.getInstance().createStatement(subject, predicate, object);
//     }
// }
// 
// Path: rdfagents-core/src/main/java/net/fortytwo/rdfagents/model/ErrorExplanation.java
// public class ErrorExplanation {
//     private final Type type;
//     private final String message;
// 
//     public enum Type {
//         ExternalError("external-error"),
//         InteractionExplired("interaction-expired"),
//         InternalError("internal-error"),
//         InvalidMessage("invalid-message"),
//         NotImplemented("not-implemented"),
//         Unavailable("unavailable");
// 
//         private final String fipaName;
// 
//         private Type(final String fipaName) {
//             this.fipaName = fipaName;
//         }
// 
//         public String getFipaName() {
//             return fipaName;
//         }
// 
//         public static Type getByFipaName(final String fipaName) {
//             for (Type t : values()) {
//                 if (t.fipaName.equals(fipaName)) {
//                     return t;
//                 }
//             }
// 
//             return null;
//         }
//     }
// 
//     public ErrorExplanation(final Type type,
//                             final String message) {
//         this.type = type;
//         this.message = message;
// 
//         if (null == type) {
//             throw new IllegalArgumentException("null type");
//         }
// 
//         if (null == message) {
//             throw new IllegalArgumentException("null message");
//         }
// 
//         if (0 == message.length()) {
//             throw new IllegalArgumentException("empty message");
//         }
//     }
// 
//     public Type getType() {
//         return type;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public String toString() {
//         return type + " (" + message + ")";
//     }
// }


import jade.content.lang.sl.SLOntology;
import jade.content.onto.BasicOntology;
import jade.content.onto.Ontology;
import jade.content.onto.OntologyException;
import jade.content.schema.ConceptSchema;
import jade.content.schema.ObjectSchema;
import jade.content.schema.PredicateSchema;
import jade.content.schema.PrimitiveSchema;
import net.fortytwo.rdfagents.RDFAgents;
import net.fortytwo.rdfagents.model.ErrorExplanation;
            throw new ExceptionInInitializerError(e);
        }
    }

    public static final String
            DATASET = "dataset",             // implicit (used only as a variable)
            DESCRIBES = "describes",
            DESCRIBES_DATASET = "dataset",   // implicit (unnamed parameter)
            DESCRIBES_SUBJECT = "subject",   // implicit (unnamed parameter)
            EXPLANATION = "explanation",     // implicit (abstract class) -- specific errors are in ErrorExplanation
            EXPLANATION_MESSAGE = "message",
            LITERAL = "literal",
            LITERAL_DATATYPE = "datatype",
            LITERAL_LANGUAGE = "language",
            LITERAL_LABEL = "label",
            VALUE = "value",                 // implicit (abstract class)
            RESOURCE = "resource",
            RESOURCE_IRI = "iri";

    private RDFAgentsOntology() throws OntologyException {
        super(RDFAgents.RDFAGENTS_ONTOLOGY_NAME, SLOntology.getInstance());

        add(new PredicateSchema(DESCRIBES));

        add(new ConceptSchema(DATASET));
        add(new ConceptSchema(VALUE));
        add(new ConceptSchema(RESOURCE));
        add(new ConceptSchema(LITERAL));

        add(new PredicateSchema(EXPLANATION));
// Path: rdfagents-core/src/main/java/net/fortytwo/rdfagents/RDFAgents.java
// public class RDFAgents {
//     private static final Logger logger = Logger.getLogger(RDFAgents.class.getName());
// 
//     // Agent profile properties
//     public static final String
//             QUERY_ANSWERING_SUPPORTED = "behavior.query.answer.supported",
//             QUERY_ASKING_SUPPORTED = "behavior.query.ask.supported";
// 
//     public static final String
//             // TODO
//             BASE_IRI = "http://example.org/",
//             RDFAGENTS_ONTOLOGY_NAME = "rdfagents",
//             RDFAGENTS_ACCEPT_PARAMETER = "X-rdfagents-accept";
// 
//     public static final String NAME_PREFIX = "urn:x-agent:";
//     public static final String XMPP_URI_PREFIX = "xmpp://";
// 
//     public enum Protocol {
//         Query("fipa-query"), Subscribe("fipa-subscribe");
// 
//         private final String fipaName;
// 
//         private Protocol(final String fipaName) {
//             this.fipaName = fipaName;
//         }
// 
//         public String getFipaName() {
//             return fipaName;
//         }
// 
//         public static Protocol getByName(final String name) {
//             for (Protocol l : Protocol.values()) {
//                 if (l.fipaName.equals(name)) {
//                     return l;
//                 }
//             }
// 
//             return null;
//         }
//     }
// 
//     private RDFAgents() {
//     }
// 
//     public static boolean isValidIRI(final String iri) {
//         // TODO: make this more efficient, and base it on the IRI spec
//         try {
//             createIRI(iri);
//             return true;
//         } catch (Exception t) {
//             return false;
//         }
//     }
// 
//     public static IRI createIRI(String iri) {
//         return SimpleValueFactory.getInstance().createIRI(iri);
//     }
// 
//     public static Literal createLiteral(String iri) {
//         return SimpleValueFactory.getInstance().createLiteral(iri);
//     }
// 
//     public static Statement createStatement(Resource subject, IRI predicate, Value object) {
//         return SimpleValueFactory.getInstance().createStatement(subject, predicate, object);
//     }
// }
// 
// Path: rdfagents-core/src/main/java/net/fortytwo/rdfagents/model/ErrorExplanation.java
// public class ErrorExplanation {
//     private final Type type;
//     private final String message;
// 
//     public enum Type {
//         ExternalError("external-error"),
//         InteractionExplired("interaction-expired"),
//         InternalError("internal-error"),
//         InvalidMessage("invalid-message"),
//         NotImplemented("not-implemented"),
//         Unavailable("unavailable");
// 
//         private final String fipaName;
// 
//         private Type(final String fipaName) {
//             this.fipaName = fipaName;
//         }
// 
//         public String getFipaName() {
//             return fipaName;
//         }
// 
//         public static Type getByFipaName(final String fipaName) {
//             for (Type t : values()) {
//                 if (t.fipaName.equals(fipaName)) {
//                     return t;
//                 }
//             }
// 
//             return null;
//         }
//     }
// 
//     public ErrorExplanation(final Type type,
//                             final String message) {
//         this.type = type;
//         this.message = message;
// 
//         if (null == type) {
//             throw new IllegalArgumentException("null type");
//         }
// 
//         if (null == message) {
//             throw new IllegalArgumentException("null message");
//         }
// 
//         if (0 == message.length()) {
//             throw new IllegalArgumentException("empty message");
//         }
//     }
// 
//     public Type getType() {
//         return type;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public String toString() {
//         return type + " (" + message + ")";
//     }
// }


// Path: rdfagents-jade/src/main/java/net/fortytwo/rdfagents/jade/RDFAgentsOntology.java
import jade.content.lang.sl.SLOntology;
import jade.content.onto.BasicOntology;
import jade.content.onto.Ontology;
import jade.content.onto.OntologyException;
import jade.content.schema.ConceptSchema;
import jade.content.schema.ObjectSchema;
import jade.content.schema.PredicateSchema;
import jade.content.schema.PrimitiveSchema;
import net.fortytwo.rdfagents.RDFAgents;
import net.fortytwo.rdfagents.model.ErrorExplanation;

            throw new ExceptionInInitializerError(e);
        }
    }

    public static final String
            DATASET = "dataset",             // implicit (used only as a variable)
            DESCRIBES = "describes",
            DESCRIBES_DATASET = "dataset",   // implicit (unnamed parameter)
            DESCRIBES_SUBJECT = "subject",   // implicit (unnamed parameter)
            EXPLANATION = "explanation",     // implicit (abstract class) -- specific errors are in ErrorExplanation
            EXPLANATION_MESSAGE = "message",
            LITERAL = "literal",
            LITERAL_DATATYPE = "datatype",
            LITERAL_LANGUAGE = "language",
            LITERAL_LABEL = "label",
            VALUE = "value",                 // implicit (abstract class)
            RESOURCE = "resource",
            RESOURCE_IRI = "iri";

    private RDFAgentsOntology() throws OntologyException {
        super(RDFAgents.RDFAGENTS_ONTOLOGY_NAME, SLOntology.getInstance());

        add(new PredicateSchema(DESCRIBES));

        add(new ConceptSchema(DATASET));
        add(new ConceptSchema(VALUE));
        add(new ConceptSchema(RESOURCE));
        add(new ConceptSchema(LITERAL));

        add(new PredicateSchema(EXPLANATION));
        for (ErrorExplanation.Type x : ErrorExplanation.Type.values()) {