⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rdfstore.js

📁 初学者
💻 JS
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.data.RdfStore");dojo.provide("dojo.data.RhizomeStore");dojo.require("dojo.lang.declare");dojo.require("dojo.data.core.RemoteStore");dojo.require("dojo.experimental");dojo.data.RdfDatatypeSerializer = function (type, convertFunc, uri) {	this.type = type;	this._converter = convertFunc;	this.uri = uri;	this.serialize = function (value) {		return this._converter.call(value, value);	};};dojo.declare("dojo.data.RdfStore", dojo.data.core.RemoteStore, {_datatypeMap:{literal:function (value) {	var literal = value.value;	if (value["xml:lang"]) {		literal.lang = value["xml:lang"];	}	return literal;}, uri:function (value) {	return {id:value.value};}, bnode:function (value) {	return {id:"_:" + value.value};}, "http://www.w3.org/2001/XMLSchema#int":function (value) {	return parseInt(value.value);}, "http://www.w3.org/2001/XMLSchema#integer":function (value) {	return parseInt(value.value);}, "http://www.w3.org/2001/XMLSchema#long":function (value) {	return parseInt(value.value);}, "http://www.w3.org/2001/XMLSchema#float":function (value) {	return parseFloat(value.value);}, "http://www.w3.org/2001/XMLSchema#double":function (value) {	return parseFloat(value.value);}, "http://www.w3.org/2001/XMLSchema#boolean":function (value) {	return !value || value == "false" || value == "0" ? false : true;}}, _datatypeSerializers:[new dojo.data.RdfDatatypeSerializer(Number, Number.toString, "http://www.w3.org/2001/XMLSchema#float"), new dojo.data.RdfDatatypeSerializer(Boolean, Boolean.toString, "http://www.w3.org/2001/XMLSchema#boolean")], _findDatatypeSerializer:function (value) {	var length = this._datatypeSerializers.length;	for (var i = 0; i < length; i++) {		var datatype = this._datatypeSerializers[i];		if (value instanceof datatype.type) {			return datatype;		}	}}, _toRDFValue:function (value) {	var rdfvalue = {};	if (value.id) {		if (value.id.slice(0, 2) == "_:") {			rdfvalue.type = "bnode";			rdfvalue.value = value.id.substring(2);		} else {			rdfvalue.type = "uri";			rdfvalue.value = value.id;		}	} else {		if (typeof value == "string" || value instanceof String) {			rdfvalue.type = "literal";			rdfvalue.value = value;			if (value.lang) {				rdfvalue["xml:lang"] = value.lang;			}		} else {			if (typeof value == "number") {				value = new Number(value);			} else {				if (typeof value == "boolean") {					value = new Boolean(value);				}			}			var datatype = this._findDatatypeSerializer(value);			if (datatype) {				rdfvalue = {"type":"typed-literal", "datatype":datatype.uri, "value":value.toString()};			} else {				rdfvalue = {"type":"literal", "value":value.toString()};			}		}	}	return rdfvalue;}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {	var rdfResult = {"head":{"vars":["s", "p", "o"]}, "results":{"bindings":[]}};	var resources = [];	for (var key in this._deleted) {		resources.push(key);	}	rdfResult.results.deleted = resources;	for (key in this._changed) {		var subject = this._toRDFValue(this.getIdentity(key));		var attributes = this._changed[key];		for (var attr in attributes) {			var predicate = {type:"uri", value:attr};			var values = attributes[attr];			if (!values.length) {				continue;			}			var rdfvalues = [];			for (var i = 0; i < values.length; i++) {				var rdfvalue = this._toRDFValue(values[i]);				rdfResult.results.bindings.push({s:subject, p:predicate, o:rdfvalue});			}		}	}	var oldRegistry = dojo.json.jsonRegistry;	dojo.json.jsonRegistry = this._jsonRegistry;	var jsonString = dojo.json.serialize(rdfResult);	dojo.json.jsonRegistry = oldRegistry;	requestKw.postContent = jsonString;}, _resultToQueryMetadata:function (json) {	return json.head;}, _resultToQueryData:function (json) {	var items = {};	var stmts = json.results.bindings;	for (var i = 0; i < stmts.length; i++) {		var stmt = stmts[i];		var subject = stmt.s.value;		if (stmt.s.type == "bnode") {			subject = "_:" + subject;		}		var attributes = data[subject];		if (!attributes) {			attributes = {};			data[stmt.s] = attributes;		}		var attr = attributes[stmt.p.value];		if (!attr) {			attributes[stmt.p.value] = [stmt.o];		} else {			attr.push(stmt.o);		}	}	return items;}});dojo.declare("dojo.data.RhizomeStore", dojo.data.RdfStore, {initializer:function (kwArgs) {	this._serverQueryUrl = kwArgs.baseUrl + "search?view=json&searchType=RxPath&search=";	this._serverSaveUrl = kwArgs.baseUrl + "save-metadata";}, _resultToQueryMetadata:function (json) {	return json;}, _resultToQueryData:function (json) {	return json;}, _setupSaveRequest:function (saveKeywordArgs, requestKw) {	requestKw.url = this._serverSaveUrl;	requestKw.method = "post";	requestKw.mimetype = "text/plain";	var resources = [];	for (var key in this._deleted) {		resources.push(key);	}	var changes = {};	for (key in this._changed) {		if (!this._added[key]) {			resources.push(key);		}		var attributes = this._changed[key];		var rdfattributes = {};		for (var attr in attributes) {			var values = attributes[attr];			if (!values.length) {				continue;			}			var rdfvalues = [];			for (var i = 0; i < values.length; i++) {				var rdfvalue = this._toRDFValue(values[i]);				rdfvalues.push(rdfvalue);			}			rdfattributes[attr] = rdfvalues;		}		changes[key] = rdfattributes;	}	var oldRegistry = dojo.json.jsonRegistry;	dojo.json.jsonRegistry = this._jsonRegistry;	var jsonString = dojo.json.serialize(changes);	dojo.json.jsonRegistry = oldRegistry;	requestKw.content = {rdfFormat:"json", resource:resources, metadata:jsonString};}});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -