Zhuang's Diary

言之有物,持之以恒

  • 知识图谱是一种用图模型来描述知识和建模世界万物之间的关联关系的技术方法。
  • 知识图谱在辅助搜索、辅助智能问答、自然语言理解、大数据分析、推荐计算、物联网设备互联、可解释性人工智能等多个方面展现出应用价值。
  • 目前国内外典型的知识图谱项目

    1) Schema.org

    采用互联网众包的方式生成和手机高质量的知识图谱数据。Schema 提供了一个词语本体,用于描述这些语义标签。目前已经包括600多个类和 900。。 多个关系。超过 31%的网页和 1200 万家网站已经使用了 Schema 发布语义化的链接数据。其他还包括 Siri、Cortana 等。中文 Schema 网址。

    2) Wikidata

    Wikidata 2012 年启动,目标是构建一个免费开放、多语言、任何人或者机器都可以编辑修改的大规模链接知识库。支持以三元组为基础的只是条目自由编辑,例如“<地球,地表面积是,五亿平方公里>”的三元组陈述。截至 2018 年,已经包含超过 5000 万条知识条目。

    3) ConceptNet5

    ConceptNet5版本已经包含有2800万关系描述。与Cyc相比,ConceptNet采用了非形式化、更加接近自然语言的描述,而不是像Cyc那样采用形式化的谓词逻辑。与链接数据和谷歌知识图谱相比,ConceptNet比较侧重于词与词之间的关系。从这个角度看,ConceptNet更加接近于WordNet,但是又比WordNet包含的关系类型多。此外,ConceptNet完全免费开放,并支持多种语言,另附github 开源地址-here

  • 技术方向

    如下图:

使用https://github.com/OpenZeppelin/openzeppelin-contracts 中的

openzeppelin-contracts/contracts/token/ERC20/TokenTimelock.sol,为每个人放置 release 的时间和数量。

使用说明整理文档==>link

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
pragma solidity ^0.5.0;

import "./SafeERC20.sol";

/**
* @dev A token holder contract that will allow a beneficiary to extract the
* tokens after a given release time.
*
* Useful for simple vesting schedules like "advisors get all of their tokens
* after 1 year".
*
* For a more complete vesting schedule, see {TokenVesting}.
*/
contract TokenTimelock {
using SafeERC20 for IERC20;

// ERC20 basic token contract being held
IERC20 private _token;

// beneficiary of tokens after they are released
address private _beneficiary;

// timestamp when token release is enabled
uint256 private _releaseTime;

constructor (IERC20 token, address beneficiary, uint256 releaseTime) public {
// solhint-disable-next-line not-rely-on-time
require(releaseTime > block.timestamp, "TokenTimelock: release time is before current time");
_token = token;
_beneficiary = beneficiary;
_releaseTime = releaseTime;
}

/**
* @return the token being held.
*/
function token() public view returns (IERC20) {
return _token;
}

/**
* @return the beneficiary of the tokens.
*/
function beneficiary() public view returns (address) {
return _beneficiary;
}

/**
* @return the time when the tokens are released.
*/
function releaseTime() public view returns (uint256) {
return _releaseTime;
}

/**
* @notice Transfers tokens held by timelock to beneficiary.
*/
function release() public {
// solhint-disable-next-line not-rely-on-time
require(block.timestamp >= _releaseTime, "TokenTimelock: current time is before release time");

uint256 amount = _token.balanceOf(address(this));
require(amount > 0, "TokenTimelock: no tokens to release");

_token.safeTransfer(_beneficiary, amount);
}
}