// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String RDF_FIRST = RDF_SYNTAX_NS + "first";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String RDF_LANGSTRING = RDF_SYNTAX_NS + "langString";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String RDF_NIL = RDF_SYNTAX_NS + "nil";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String RDF_REST = RDF_SYNTAX_NS + "rest";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String RDF_TYPE = RDF_SYNTAX_NS + "type";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String XSD_BOOLEAN = XSD_NS + "boolean";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String XSD_DECIMAL = XSD_NS + "decimal";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String XSD_DOUBLE = XSD_NS + "double";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String XSD_INTEGER = XSD_NS + "integer";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String XSD_STRING = XSD_NS + "string";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdUtils.java
// static boolean isKeyword(Object key) {
//     if (!isString(key)) {
//         return false;
//     }
//     return "@base".equals(key) || "@context".equals(key) || "@container".equals(key)
//             || "@default".equals(key) || "@embed".equals(key) || "@explicit".equals(key)
//             || "@graph".equals(key) || "@id".equals(key) || "@index".equals(key)
//             || "@language".equals(key) || "@list".equals(key) || "@omitDefault".equals(key)
//             || "@reverse".equals(key) || "@preserve".equals(key) || "@set".equals(key)
//             || "@type".equals(key) || "@value".equals(key) || "@vocab".equals(key)
//             || "@requireAll".equals(key);
// }
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdUtils.java
// static Boolean isList(Object v) {
//     return (v instanceof Map && ((Map<String, Object>) v).containsKey("@list"));
// }
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdUtils.java
// static Boolean isObject(Object v) {
//     return (v instanceof Map);
// }
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdUtils.java
// static Boolean isString(Object v) {
//     // TODO: should this return true for arrays of strings as well?
//     return (v instanceof String);
// }
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdUtils.java
// static Boolean isValue(Object v) {
//     return (v instanceof Map && ((Map<String, Object>) v).containsKey("@value"));
// }
// 
// Path: core/src/main/java/com/github/jsonldjava/utils/Obj.java
// public static Map<String, Object> newMap() {
//     return new LinkedHashMap<String, Object>(4, 0.75f);
// }


import static com.github.jsonldjava.core.JsonLdConsts.RDF_FIRST;
import static com.github.jsonldjava.core.JsonLdConsts.RDF_LANGSTRING;
import static com.github.jsonldjava.core.JsonLdConsts.RDF_NIL;
import static com.github.jsonldjava.core.JsonLdConsts.RDF_REST;
import static com.github.jsonldjava.core.JsonLdConsts.RDF_TYPE;
import static com.github.jsonldjava.core.JsonLdConsts.XSD_BOOLEAN;
import static com.github.jsonldjava.core.JsonLdConsts.XSD_DECIMAL;
import static com.github.jsonldjava.core.JsonLdConsts.XSD_DOUBLE;
import static com.github.jsonldjava.core.JsonLdConsts.XSD_INTEGER;
import static com.github.jsonldjava.core.JsonLdConsts.XSD_STRING;
import static com.github.jsonldjava.core.JsonLdUtils.isKeyword;
import static com.github.jsonldjava.core.JsonLdUtils.isList;
import static com.github.jsonldjava.core.JsonLdUtils.isObject;
import static com.github.jsonldjava.core.JsonLdUtils.isString;
import static com.github.jsonldjava.core.JsonLdUtils.isValue;
import static com.github.jsonldjava.utils.Obj.newMap;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
        public boolean isBlankNode() {
            return false;
        }
    }

    public static class BlankNode extends Node {
        private static final long serialVersionUID = -2842402820440697318L;

        public BlankNode(String attribute) {
            super();
            put("type", "blank node");
            put("value", attribute);
        }

        @Override
        public boolean isLiteral() {
            return false;
        }

        @Override
        public boolean isIRI() {
            return false;
        }

        @Override
        public boolean isBlankNode() {
            return true;
        }
    }

// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String RDF_FIRST = RDF_SYNTAX_NS + "first";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String RDF_LANGSTRING = RDF_SYNTAX_NS + "langString";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String RDF_NIL = RDF_SYNTAX_NS + "nil";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String RDF_REST = RDF_SYNTAX_NS + "rest";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String RDF_TYPE = RDF_SYNTAX_NS + "type";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String XSD_BOOLEAN = XSD_NS + "boolean";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String XSD_DECIMAL = XSD_NS + "decimal";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String XSD_DOUBLE = XSD_NS + "double";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String XSD_INTEGER = XSD_NS + "integer";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdConsts.java
// public static final String XSD_STRING = XSD_NS + "string";
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdUtils.java
// static boolean isKeyword(Object key) {
//     if (!isString(key)) {
//         return false;
//     }
//     return "@base".equals(key) || "@context".equals(key) || "@container".equals(key)
//             || "@default".equals(key) || "@embed".equals(key) || "@explicit".equals(key)
//             || "@graph".equals(key) || "@id".equals(key) || "@index".equals(key)
//             || "@language".equals(key) || "@list".equals(key) || "@omitDefault".equals(key)
//             || "@reverse".equals(key) || "@preserve".equals(key) || "@set".equals(key)
//             || "@type".equals(key) || "@value".equals(key) || "@vocab".equals(key)
//             || "@requireAll".equals(key);
// }
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdUtils.java
// static Boolean isList(Object v) {
//     return (v instanceof Map && ((Map<String, Object>) v).containsKey("@list"));
// }
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdUtils.java
// static Boolean isObject(Object v) {
//     return (v instanceof Map);
// }
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdUtils.java
// static Boolean isString(Object v) {
//     // TODO: should this return true for arrays of strings as well?
//     return (v instanceof String);
// }
// 
// Path: core/src/main/java/com/github/jsonldjava/core/JsonLdUtils.java
// static Boolean isValue(Object v) {
//     return (v instanceof Map && ((Map<String, Object>) v).containsKey("@value"));
// }
// 
// Path: core/src/main/java/com/github/jsonldjava/utils/Obj.java
// public static Map<String, Object> newMap() {
//     return new LinkedHashMap<String, Object>(4, 0.75f);
// }


// Path: core/src/main/java/com/github/jsonldjava/core/RDFDataset.java
import static com.github.jsonldjava.core.JsonLdConsts.RDF_FIRST;
import static com.github.jsonldjava.core.JsonLdConsts.RDF_LANGSTRING;
import static com.github.jsonldjava.core.JsonLdConsts.RDF_NIL;
import static com.github.jsonldjava.core.JsonLdConsts.RDF_REST;
import static com.github.jsonldjava.core.JsonLdConsts.RDF_TYPE;
import static com.github.jsonldjava.core.JsonLdConsts.XSD_BOOLEAN;
import static com.github.jsonldjava.core.JsonLdConsts.XSD_DECIMAL;
import static com.github.jsonldjava.core.JsonLdConsts.XSD_DOUBLE;
import static com.github.jsonldjava.core.JsonLdConsts.XSD_INTEGER;
import static com.github.jsonldjava.core.JsonLdConsts.XSD_STRING;
import static com.github.jsonldjava.core.JsonLdUtils.isKeyword;
import static com.github.jsonldjava.core.JsonLdUtils.isList;
import static com.github.jsonldjava.core.JsonLdUtils.isObject;
import static com.github.jsonldjava.core.JsonLdUtils.isString;
import static com.github.jsonldjava.core.JsonLdUtils.isValue;
import static com.github.jsonldjava.utils.Obj.newMap;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;

        public boolean isBlankNode() {
            return false;
        }
    }

    public static class BlankNode extends Node {
        private static final long serialVersionUID = -2842402820440697318L;

        public BlankNode(String attribute) {
            super();
            put("type", "blank node");
            put("value", attribute);
        }

        @Override
        public boolean isLiteral() {
            return false;
        }

        @Override
        public boolean isIRI() {
            return false;
        }

        @Override
        public boolean isBlankNode() {
            return true;
        }
    }

    private static final Node first = new IRI(RDF_FIRST);