# <!-- METAHEADER
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"*": "https://raw.githubusercontent.com/wefindx/schema/master/method/oo-item.yaml"
# <!-- HEADER
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"base:title": "0oo - World Mapping Assistant"
"og:title": "World Mapping Assistant"
"og:description": "_It could be like a game — you landed in a network of some sort, and your game helps you locate and use world resources for your goals._ Imagine that you buy a computer, and then install this program. The program is a tool (a bit like gamified, bittorrent-powered collaborative information retrieval and actualization tool), not a service. To make the game more fun, the program asks to set your goals and metrics (later on we&#x27;ll automate resource discovery to support those goals, so those goals would initially be for gamification purposes only), for example a goal may be &quot;find …"
"og:image": "https://avatars0.githubusercontent.com/u/28134655"
"og:url": "/method/1022/"
"base:css": "/static/css/bootstrap.min.9c25540d6272.css"
"base:extra-css": "/static/css/base.57997aeac1df.css"
"base:favicon": "/static/favicon.acaa334f0136.ico"
"base:body_class": ""
"layout:logo": "/static/0oo.8d2a8bbef612.svg"
"layout:index": "/"
"layout:menu": "/menu/"
"layout:categories": "/intents/"
"layout:ideas": "/methods/"
"layout:projects": "/projects/"
"layout:users": "/users/"
"layout:about": "/about/"
"layout:help": "/help/"
"layout:bug_report": "https://github.com/wefindx/0oo"
"layout:login": "/accounts/login/"
"layout:light-off": "/darken/?darken=true"
"layout:set-multilingual": "/mulang/?mulang=true"
"layout:lang": "Language"
"layout:set-language-post-action": "/i18n/setlang/"
"layout:csrf-token": "2y7WTh1AAGsS35HIhgoX6ESLYzNz9tFbCXrVYXQKlcyZrmSG1O8ZmX5731tXKEdW"
"layout:input-next": "/method/1022/"
"layout:languages": [{"code": "ja", "is-active": "false", "name": "日本語"}, {"code": "lt", "is-active": "false", "name": "Lietuviškai"}, {"code": "zh-hans", "is-active": "false", "name": "简体中文"}, {"code": "en", "is-active": "true", "name": "English"}, {"code": "ru", "is-active": "false", "name": "Русский"}, {"code": "oo", "is-active": "false", "name": "O;o,"}]
# <!-- TOPIC
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"item:parent:intents": [{"url": "/intent/1346/", "title": "Public: Information: Database"}, {"url": "/intent/105001/", "title": "Programmatic Access and Control"}, {"url": "/intent/1248/", "title": "Information Control"}, {"url": "/intent/1366/", "title": "Cyberspace"}, {"url": "/intent/1365/", "title": "Intelligence"}]
"item:title": ".:en:World Mapping Assistant.:cn:世界建模助手"
"item:summary": ".:en:A computer program-toolkit that helps individuals build world model by scanning networks and P2P crawling internet, leveraging their personal computer&#x27;s accessibility..:cn:一套电脑程序工具，利用个人电脑的可访问性来扫描网络和P2P抓取互联网，帮助个人建立世界模型。"
"item:voting": +2
"item:voting:add": "/admin/hlog/voting/add/?method=1022"
"item:voting:csrf_token": "2y7WTh1AAGsS35HIhgoX6ESLYzNz9tFbCXrVYXQKlcyZrmSG1O8ZmX5731tXKEdW"
"item:voting:submit-value-option": {"selected": "[-]", "value": "-"}
"item:base-administration": false
"item:body": |
    .:en
    _It could be like a game — you landed in a network of some sort, and your game helps you locate and use world resources for your goals._
    
    Imagine that you buy a computer, and then install this program. The program is a tool (a bit like gamified, bittorrent-powered collaborative information retrieval and actualization tool), not a service. To make the game more fun, the program asks to set your goals and metrics (later on we'll automate resource discovery to support those goals, so those goals would initially be for gamification purposes only), for example a goal may be "find a friend". Then, you run the program. It runs in background, having command line interface, that pops up by clicking on its tray icon or via command.
    
    The program starts to collaboratively scan and map available resources — from your hardware to network. To gather the initial information, like hardware available, using known locations and existing software, like path `/proc`, `nmap`, `bluetoothctl`, `nmcli` and scripts to machine and LAN info, identifying 3 main addressing spaces: `filesystem address space`, `IP address spaces`, `MAC address space`. The program then leverages on `ipinfo.io` data to get existing `Autonomous Systems` information, and how they the IP spaces are allocated via regional Internet registries (RIRs). Then, it uses the ICANN Centralized Zone Data Service to determine the what domains are publicly available on the Internet: `domains space`. The user is able to see the percentage of IP space covered by `domains space`, and have the rest of the IP space declared -- unknown.
    
    Thereafter, the program allows to choose any website, and get its structured information, if the information has been crawled by anyone on-line, keeping that data as easily downloadable as a movie via bittorrent. The user themselves is able to see what websites out of the `domains space` had been crawled by anyone, and if crawlers exists to initiate a new crawl.
    
    The crawled information is stored locally, based on protocol that it has been crawled in, and domain or IP that it was crawled from. For example,  if we use MongoDB to store crawled data, then, if it was crawled over HTTPS from `1.1.1.1`, at port `443`, then the web page would be saved to database named `HTTPS`, by protocol name:
    
    <pre>
    $ mongo
    > use HTTPS
    > db['1.1.1.1:443'].insertOne({'hi': 'there'})
    </pre>
    
    In addition, the program would suggest using an ontological vocabulary of concepts to map entities saved to database in a free form mapping the website's own concepts to this shared vocabulary, in a double-colon (`::`) notation, like so:
    
    <pre>
    $ mongo
    > use HTTPS
    > db['1.1.1.1:443/Page::resource:document'].insertOne({'hi': 'there'})
    </pre>
    
    Here, the `/Page` is the name of the entity within the source system, and the `::resource:document`, is the ontological vocabulary to classify the categories from all categorization systems. The vocabulary may be such or similar to the one described in the idea [Network of Functions](https://0oo.li/method/222/network-of-functions), but a subject of versioning and evolution.
    
    For example, I suggest the [V1](https://github.com/wefindx/nrv/tree/master/nrv) of the network resource vocabulary be:
    
    <pre>
    {
        '::category': ['.goal', '.concept', '.question'],
        '::system':   ['.project', '.structure', '.mechanism', '.organization', '.person', '.process', '.api'],
        '::method':   ['.idea', '.principle', '.function', '.invention', '.equipment', '.product', '.endpoint'],
        '::location': ['.address', '.account', '.url'],
        '::request':  ['.CATEGORY', '.query', '.order', '.operation', '.task', '.call'],
        '::resource': ['.record', '.document', '.METHOD', '.SYSTEM'],
    }
    </pre>
    
    With the vocabulary versioning, the naming would look like this
    
    <pre>
    mongo
    > use HTTPS
    > db['1.1.1.1:443/Page::v1/resource:document'].insertOne({'hi': 'there'})
    </pre>
    
    Note: capitalized `.CATEGORY`, `.METHOD`, and `.SYSTEM` within vocabulary are aliases, meaning that if you have a `::resource` that looks like a system, you should not use the `::resource` namespace, but use the `::system` namespace instead.
    
    This approach results in local database collected by the program, that has databases named by protocols, that may look something like that:
    
    <pre>
    FTP         114.330GB
    HTTP        5.340TB
    HTTPS       153.481TB
    IMAP        138.183GB
    POP         11.380GB
    XMPP        1.423GB
    admin       0.000GB
    config      0.000GB
    local       0.027GB
    </pre>
    
    You can imagine many more protocols, like: `TELNET`, `SSH`, `FTP`, `SMTP`, `DNS`, `AMQP`, `HTTPS:ATOM`, `HTTPS:RSS`, `BITCOIN`, `BITTORRENT`, `EDONKEY`, `FREENET`, `IRC`, `IMAP`, `IPFS`, `LDAP`, `HTTP`, `HTTPS`, `MIME`, `MQTT`, `NNTP`, `NTCIP`, `NTP`, `POP`, `RTP`, `RTSP`, `SIP`, `SMPT`, `TOR`, `TOX`, `XMPP`, `Z3950`, `TELEGRAM`, `ETHEREUM`, `HTTPS:GRAPHQL`, `HTTPS:REST`, etc.
    
    The crawlers each would define their own names to name the objects of the items crawled, e.g., `/Page`, but use the shared vocabulary version to add metadata for future data alignment, like `::resource:document`.
    
    The crawlers would be stored in public git repositories, and the data crawled would be shared as BitTorrent seeds. The world mapping assistant this way would automatically seed data crawled, and people would have quick access to structured data of the internet for computing, outreach and operations purposes.
    
    **Follow up thoughts:**
    
    - Crawling leads could be generated by monitoring, what websites people visit, and how many times, giving a user statistics of what kind of sources may be interesting to crawl automatically. Very easy to do with a browser plugin, but may also be done with monitoring own OS traffic.
    
    .:cn
    _就像一个游戏——你登陆了某种网络，你的游戏帮助你定位并利用世界资源实现你的目标。_
    
    假设你买了一台电脑，然后安装了这个程序。该程序是一个工具而不是服务（有点像游戏化的、由BT（BitTorrent）支持的协作信息检索和实现的工具）。为了让游戏更有趣，程序会要求你设定你的目标和度量标准（以后我们会自动发现资源来支持这些目标，因此这些目标最初仅用于游戏目的），比如目标可以是 "找到一个朋友"。然后，你运行这个程序。它在后台运行，有命令行界面，可通过点击其托盘图标或命令弹出。
    
    该程序开始协作扫描和映射可用的资源——从你的硬件到网络。收集初始信息，如硬件可用，使用已知的位置和现有的软件，如路径 `/proc`、`nmap`、`bluetoothctl`、`nmcli`、机器脚本和局域网信息，识别3个主要的地址空间：`文件系统地址空间`，`IP地址空间`，`MAC地址空间`。然后，该程序利用 `ipinfo.io` 数据获取现有的自治系统信息，以及如何通过区域互联网注册机构（RIR）分配IP空间。然后，它利用ICANN集中区域数据服务来确定哪些域在互联网上公开可用：`域名空间`。用户能够看到 `域名空间` 所覆盖的 `IP空间` 的百分比，并让其余的IP空间声明——未知。
    
    此后，该程序允许选择任何网站，获取其结构化信息，如果这些信息已经被任何人在线抓取，那么这些数据就像通过BT下载电影一样容易。用户自己能够看到域名空间中的哪些网站被什么人抓取过，如果存在爬虫，可以启动新的抓取。
    
    抓取的信息会根据被抓取的域名或IP的协议存储在本地。例如，如果我们使用MongoDB来存储抓取的数据，那么，如果是通过 HTTPS 从 `1.1.1.1` 在 `443` 端口抓取的，那么网页就会按照协议名保存到名为 `HTTPS` 的数据库中。如：
    
    <code>
    $ mongo
    > use HTTPS
    > db['1.1.1.1:443'].insertOne({'hi': 'there'})
    </code>
    
    另外，程序会建议使用概念的本体词汇来映射保存到数据库的实体，以自由的形式将网站自己的概念映射到这个共享词汇中，用双冒号（`::`）的标记，如下所示：
    
    <code>
    $ mongo
    > use HTTPS
    > db['1.1.1.1:443/Page::resource:document'].insertOne({'hi': 'there'})
    </code>
    
    这里 `/Page` 是源系统中实体的名称，而 `::resource:document` 是对所有分类系统中的类别进行分类的本体词汇。词汇表可能与 [Network of Functions](https://0oo.li/method/222/network-of-functions) 这个概念中所描述的词汇表相同或相似，但却是一个版本控制和演变的主题。
    
    
    例如，我建议网络资源词汇表的 [V1](https://github.com/wefindx/nrv/tree/master/nrv) 为。
    
    <pre>
    {
        '::category': ['.goal', '.concept', '.question'],
        '::system':   ['.project', '.structure', '.mechanism', '.organization', '.person', '.process', '.api'],
        '::method':   ['.idea', '.principle', '.function', '.invention', '.equipment', '.product', '.endpoint'],
        '::location': ['.address', '.account', '.url'],
        '::request':  ['.CATEGORY', '.query', '.order', '.operation', '.task', '.call'],
        '::resource': ['.record', '.document', '.METHOD', '.SYSTEM'],
    }
    </pre>
    
    在词汇表的这个版本中，命名是这样的：
    
    
    <code>
    $ mongo<br>
    &gt; use HTTPS<br>
    &gt; db['1.1.1.1:443/Page::v1/resource:document'].insertOne({'hi': 'there'})
    </code>
    
    注意：词汇表中大写的 `.CATEGORY`、`.METHOD` 和 `.SYSTEM` 是别名，也就是说，如果你有一个 `::resource`  看起来像系统，则不应该使用 `::resource`  命名空间，而应该使用 `::system` 命名空间。
    
    这种方法的结果是，程序收集的本地数据库，有按协议命名的数据库，可能看起来像这样：
    
    <code>
    FTP         114.330GB<br>
    HTTP        5.340TB<br>
    HTTPS       153.481TB<br>
    IMAP        138.183GB<br>
    POP         11.380GB<br>
    XMPP        1.423GB<br>
    admin       0.000GB<br>
    config      0.000GB<br>
    local       0.027GB
    </code>
    
    你可以想象更多的协议，比如： `TELNET`, `SSH`, `FTP`, `SMTP`, `DNS`, `AMQP`, `HTTPS:ATOM`, `HTTPS:RSS`, `BITCOIN`, `BITTORRENT`, `EDONKEY`, `FREENET`, `IRC`, `IMAP`, `IPFS`, `LDAP`, `HTTP`, `HTTPS`, `MIME`, `MQTT`, `NNTP`, `NTCIP`, `NTP`, `POP`, `RTP`, `RTSP`, `SIP`, `SMPT`, `TOR`, `TOX`, `XMPP`, `Z3950`, `TELEGRAM`, `ETHEREUM`, `HTTPS:GRAPHQL`, `HTTPS:REST`, 等等。
    
    爬虫各自会定义自己的名称来命名所爬取的项目对象，比如 `/Page`，但使用共享词汇版本如 `::resource:document` 来添加元数据，以备将来整理数据。
    
    爬虫将存储在公共的git库中，而抓取的数据将作为BT种子共享。世界映射助手这种方式会自动将抓取的数据作为种子，人们可以快速获取互联网的结构化数据，用于计算、扩展和运营。
    
    **后续思路：**
    
    - 可以通过监测人们访问了哪些网站、访问了多少次来生成爬网线索，为用户统计出什么样的来源可能会有兴趣自动抓取。很容易用浏览器插件来实现，但也可能用监测自己操作系统的流量来完成。
"item:source-date": ""
"item:permalink": "/method/1022/?l=en"
"item:owner": "Mindey"
"item:created": "2020-12-26T16:33:33.128000"
"item:ownerlink": "/user/147/Mindey"
# <!-- LINKS
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"item:link:add": "/admin/hlog/link/add/?parent=1022"
"item:link:items":
- "id": "l-49"
  "url": "https://lifeboat.com/ex/web.3.0"
  "text": "lifeboat.com / Web 3.0: The Third Generation Web is Coming"
  "note": |
    Is this idea in the realm of Web 4.0? (I.e., "Intelligent personal agents")
  "owner": "Mindey"
  "ownerlink": "/user/147/Mindey"
  "permalink": "/method/1022/?l=en#l-49"
  "created": "2020-12-27T06:35:18.340000"
"item:project:items":

# <!-- COMMENTS
# –––––––––––––––––––––––––––––––––––––––––––––––––– -->
"item:comment:items":
- "id": "a-1054"
  "text": |
    You forgot to mention any scanner in the radio frequency spectrum.
  "owner": "Inyuki"
  "ownerlink": "/user/206/Inyuki"
  "permalink": "/method/1022/?l=en#a-1054"
  "created": "2021-01-06T09:01:34.827000"
- "id": "a-1055"
  "text": |
    What about [GNU-Radio](https://www.gnuradio.org), [gqrx-sdr](https://gqrx.dk) and [gqrx-scanner](https://github.com/neural75/gqrx-scanner) ? Related thoughts on friend-seeking using radio waves: 
     https://ieeexplore.ieee.org/abstract/document/5641096
  "owner": "Mindey"
  "ownerlink": "/user/147/Mindey"
  "permalink": "/method/1022/?l=en#a-1055"
  "created": "2021-01-06T09:09:48.462000"
- "id": "a-1057"
  "mtrans": |

    According to lifeboat’s description of web3.0: “For example, services that use semantic web, microformats, natural language search, data mining, machine learning, recommendation agents, and artificial intelligence technologies-these services emphasize the understanding of information by machines to provide better Effective and intuitive user experience&quot;, this modeling assistant is building web3.0!

  "text": |
    根据lifeboat对web3.0的描述：“ 例如使用语义网络、微格式、自然语言搜索、数据挖掘、机器学习、推荐代理和人工智能技术的服务——这些服务强调机器对信息的理解，以提供更有效和直观的用户体验”，这个建模助手正是在建造web3.0！
  "owner": "草长莺飞"
  "ownerlink": "/user/211/草长莺飞"
  "permalink": "/method/1022/?l=en#a-1057"
  "created": "2021-01-06T22:57:33.679000"
- "id": "a-1058"
  "text": |
    Umm, yeah. If you add the capability to send signals in arbitrary protocol, such assistant could be extended to a "universal peer" (i.e., you don't need Ethereum peer, because you are the universal peer, and free to decide which protocol-defined peer-group to collaborate with). The Internet is already decentralized, it's just that the peer size distribution is skewed (tend to follow [power law](https://en.wikipedia.org/wiki/Power_law)), just like wealth distribution, with very few very big nodes with lots of resources, and most nodes with little resources.
  "owner": "Mindey"
  "ownerlink": "/user/147/Mindey"
  "permalink": "/method/1022/?l=en#a-1058"
  "created": "2021-01-07T03:28:38.441000"
"base:js": "/static/js/base.c7357c06cc89.js"
