Information environment based on the principles of Open Data





The proposed information environment is a kind of decentralized social network. But unlike many existing solutions, this environment has a number of useful properties in addition to decentralization and is created on the basis of fairly simple and standard technical solutions (email, json, text files and a little blockchain). This allows anyone with basic programming knowledge to create their own services for this environment.



Generic identifier



In any online environment, user and object identifiers are one of the key elements of the system.



In this case, email acts as a user identifier, which has actually become a generally accepted identifier for authorization on sites and other services (jaber, openId).



In fact, the user ID in this online environment is the login + domain pair, which, for convenience, is written in the form familiar to most. Moreover, for greater decentralization, it is desirable for each user to have their own domain. Which is close to the principles of the individual, where a domain is used as a user identifier. In our case, the user adds a nickname to his domain, which allows you to create several accounts on the same domain (for friends, for example) and makes the addressing system more flexible.



This user ID format is not tied to any network. If the user places his data in the TOR network, then you can use domains in the .onion zone, if it is a network with a DNS system on the blockchain, then domains in the .bit zone. As a result, the addressing format of users and their data does not depend on the network through which they are transmitted (the login + domain bundle is used everywhere). For those wishing to use the bitcoin / ethereum address as an identifier, the system can be modified to use pseudo email addresses likexaca1b7c8126806f672f9dbee4951527bb0f2c4e4@ethereum.blockchain



Object addressing



This online environment is actually a set of objects that are described in a structured machine-readable form, refer to other objects and are tied to a specific user (email) or project / organization (domain).



The urn in the urn: opendata namespace is used as object identifiers. For example, a user profile has an address of the form:



urn:opendata:profile:user@domain.com


The user's comment has an address of the form:



urn:opendata:comment:user@domain.com:08adbed93413782682fd25da77bd93c99dfd0548


where 08adbed93413782682fd25da77bd93c99dfd0548 is a random sha-1 hash that acts as the id of an object, and user@domain.com is the owner of this object.



Principle of publishing user data



With his domain under control, the user can easily publish his data and content. And unlike indibeb, this does not require creating a site with html pages in which semantic data is embedded.



For example, basic information about a user is located in the datarobots.txt file located at an address like



http://55334.ru/konstantin@55334.ru/datarobots.txt


And it has content of this format:



Object: user
Services-Enabled: 55334.ru,newethnos.ru
Ethnos: newethnos
Delegate-Tokens: http://55334.ru/konstantin@55334.ru/delegete.txt


That is, in fact, it is a set of strings with data of the form key-> value, which is a simple task to parse for any person with basic programming knowledge. And you can edit the data, if desired, through a regular notepad.



More complex data (profile, comment, post, etc.) that have their own urn - are returned as a JSON object using the standard API (http://opendatahub.org/api_1.0?lang=ru), which can be located as on the user's domain and on a third-party site to which the user has delegated the storage, publication and editing of his data (in the Services-Enabled line of the datarobots.txt file). Such third-party services are described below.



Simple ontology and JSON



The ontology of the communication environment is relatively simple compared to the ontology of industry knowledge bases. Since in the communication environment there is a relatively small set of standard objects (post, comment, like, profile, review) with a relatively small set of properties.



Therefore, to describe objects in such an environment, it is sufficient to use JSON instead of XML, which is more complex in structure and parsing (it is important not to forget about the need for a low entry threshold and scalability).



To get an object with the urn we know, you need to refer to the user's domain, or to third-party services to which the user has delegated the management of his data.



In this online environment, each domain on which the online service exists also has its own datarobots.txt located at an address like example.com/datarobots.txt with similar content:



Object: service
Api: http://newethnos.ru/api
Api-Version: http://opendatahub.org/api_1.0


From which we can learn that you can get data about the object at the address of the form:



http://newethnos.ru/api?urn=urn:opendata:profile:konstantin@55334.ru



JSON object has the following structure:



{
    "urn": "urn:opendata:profile:expample@55334.ru",
    "status": 1,
    "message": "Ok",
    "timestamp": 1596429631,
    "service": "example.com",
    "data": {
        "name": "John",
        "surname": "Gald",
        "gender": "male",
        "city": "Moscow",
        "img": "http://domain.com/image.jpg",
        "birthtime": 332467200,
        "community_friends": {
            "example1@domain.com": "1",
            "example2@domain.com": "0.5",
            "example3@domain.com": "0.7"
        },
        "interests_tags": "cars,cats,cinema",
        "mental_cards": {
            "no_alcohol@main": 8,
            "data_accumulation@main": 8,
            "open_data@main": 8
        }
    }
}


Service architecture



Third party services are needed to simplify the process of publishing and finding data for end users.



Above, one of the types of services was mentioned that help the user publish his data on the network. There may be many such services, each of which provides the user with a convenient interface for editing one of the types of data (forum, blog, question-answer, etc.). If the user does not trust third-party services, then he can install a service script for working with data on his domain or develop it independently.



In addition to services that allow users to publish / edit data, a number of other services are provided in the online environment that perform relatively complex tasks that are quite problematic to implement on end-user nodes.



One of the types of such services are data hubs ( opendatahub.org/ru is an example), which act as a kind of web archive that collects all public machine-readable user data and provides access to them via API.



The presence of services in such an open, decentralized online environment significantly reduces the entry threshold for users, since there is no need to install and configure your own node. At the same time, the user retains control over his data (at any time, you can change the service to which the data publication is delegated or create your own node).



If the user is not at all interested in owning his data and he does not have his own domain or is familiar with the domain, then by default opendatahub.org manages his data.



At whose expense is it all?



Perhaps the main problem of almost all such decentralized projects is the impossibility of their monetization at a level sufficient for stable development and support.



Donate + tokens are used to cover development and marketing costs in this online environment.



All donations that users make to internal projects / services are public, machine readable and tied to email. This allows you to take them into account, for example, when calculating the intranet social rating and publish them on users' pages. When donations cease to be anonymous, then in fact users do not donate, but โ€œthrow offโ€ to support the common information environment. Just like people are throwing off for the repair of public places with an appropriate attitude towards those people who refused to throw off.



In addition to donations, to raise funds, tokens issued in a limited amount (400,000) are used, which are credited to everyone who makes donations to the main fund (ethnogenesis).



Additional functions of tokens



Each token is a โ€œkeyโ€ for accessing this online environment. That is, you can use services and be part of the online environment only if you have at least 1 token, which is tied to your email.



Tokens are a good spam filter due to their limitations. The more users there are in the system, the more difficult it is to get a token and the more expensive it is to create bots.



People, their data and social connections are more important than technology



The described online environment is technically a relatively primitive solution. But more important in it are not so much technology as people and the social connections and data (content) created within the environment.



The created social community, whose members have their own universal identifiers (email and their own domain) and structured data (with URN addresses, ontology and JSON objects) when a better technical solution appears, can transfer all this data to another online environment, while maintaining the formed links (ratings, ratings) and content.



This post describes one of the elements of a self-organized network community, which, in addition to a decentralized online environment, includes a number of offline areas that increase the benefits of the online environment and are โ€œcustomersโ€ that largely determine its functionality. But these are already topics for other articles that are not directly related to IT and technology.



All Articles