/******************************************************************************* * Copyright 2012 Pearson Education * * Licensed 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.semantictools.context.renderer; import org.semantictools.context.renderer.model.JsonContext; import org.semantictools.context.renderer.model.TermInfo; import org.semantictools.context.renderer.model.TreeNode; import org.semantictools.frame.api.TypeManager; import com.hp.hpl.jena.vocabulary.OWL; import com.hp.hpl.jena.vocabulary.XSD; public class NodeUtil { /** * Returns a TreeNode for a datatype that is not declared in the specified JsonContext */ public static TreeNode createDefaultTypeNode(TypeManager typeManager, JsonContext context, String typeURI) { if (typeManager.isStandardLiteralType(typeURI)) { // For abstract data types (rdfs:Literal, rdfs:Datatype, rdf:XMLLiteral) // use xsd:string for the data type in bindings. typeURI = XSD.xstring.getURI(); } String namespaceURI = TypeManager.getNamespace(typeURI); TermInfo namespaceTerm = context.getTermInfoByURI(namespaceURI); if (namespaceTerm == null) { throw new TermNotFoundException(namespaceURI); } TreeNode node = new TreeNode(); String localName = TypeManager.getLocalName(typeURI); String prefix = namespaceTerm.getTermName(); String typeName = (XSD.getURI().equals(namespaceURI) || OWL.getURI().equals(namespaceURI)) ? prefix + ":" + localName : localName; String typeHref = typeManager.isStandardDatatype(namespaceURI) ? null : "#" + prefix + "." + localName; node.setTypeName(typeName); node.setTypeHref(typeHref); node.setTypeURI(typeURI); return node; } }