Contents
- Contributing to the project
- How does it work?
- Voting
- Blocks
- What do we mean by "Object" definition
- Object attributes
- Attributes inheritance
- Limitations
- Creating new object
- Objects comparison
- Sorting objects
- Comparing some data types
Contributing to the project
Factopedia in an open databse with a classified information about the objects around us. This database, website and even this text was created and supported by the people from all around the world, as you are. Thanks to them many people getting fast and free access to the information they are interested in. Many peoples can compare objects between each other to quickly make the right decision. We spend a lot of time daily to choose something, we don't know what to choose and need to see comparison table to make the right decision without doubt. We often wonder why does two same things assessed differently. We want to "expand" each object into the smallest "details", to solve this problems faster. This database is also very important to save and transfer knowledge for the future generations. Sometimes it's hard or impossible to obtain information about some objects, therefore we encourage people who have access to such information to share it with society, for the common good. Scientists and researchers all over the world, will be able to get fast and free access to this information and continue their researches.
If you like what we do you can contribute like a volunteer, you can
register and start to edit Factopedia or make a
donation. You can also edit as guest, without registration.
How does it work?
Guests and registered users can edit any
object or
comparison, they can also discuss changes. Each user can vote for approving or declining changes. Members can subscribe to updates, to see whats happening in the categories they are interested.
Voting
To approve or decline changes all the participants decide by voting. Participant vote weight is different and depending on the contribution made to the project. The more benefits a user has made to the project, the more weight his vote has. When a certain version scored a critical number of votes, version getting approved or declined. Changes can not be approved or declined by the large number of "small" votes, or by the small number of "big" votes. All is very simple.
Blocks
We take some measures to protect against vandals. Participants who harm the project are blocked, the blocking time is different and depending on the degree of damage caused. To prevent vandalism, there are some restrictions on some actions, such as making edits or adding new posts. If you edit Factopedia as a guest and getting a message to try later, you can
register to increase limits. Our limits are set such way that ordinary users do not feel discomfort from this, if you are a fair participant and have problems with limits, please
contact us.
What do we mean by "Object" definition
Almost all the objects belongs to some category or as we call it "
parent". Parents are the same objects which can have their parents. And so on untill the object will not have parent. This process we call inheritance. Object without parent -
Primary object or primary category, all the other objects created from them. If the object is a parent object at least for one other object and itself refers to another parent object, we call this object a
category or
intermediate object. For example, ordinary carrot "family tree" can looks like:
Plantae / Tracheophytes / Angiosperms / Eudicots / Asterids / Apiales / Apiaceae / Daucus / D. carota / Carrot
Do not afraid to identify "family tree" incorrectly, later we will decide together where is the right place of the object in the objects hierarchy.
If the object is not a parent of any other object, this is
final object. Most of work on our website is going with this type of objects. Parent objects is used for final objects classification. Primary, intermediate and final objects, thats are objects of the same type, but with different place in "family tree". So let's repeat:
- Primary object
do not has parent
- Intermediate object
has parent and is a parent for any other object (has children)
- Final object
has parent, but is not a parent for any other object (do not has children)
Object attributes
Each object consists of many attributes (properties), for exampleo object "Carrot" can have attributes "Calories" and/or "Fat", "Transport" object can have "Avarage speed".
The object can inherit an attributes of it's parents or have it's own attributes. Attributes can be with values or without values(undefined). Undefined attributes will be inherited by children objects and defined there. We collect only objective and important attributes about objects. When we compare objects we campare their attributes. A few world about how we hold and process some attributes:
⚬ Dynamic value
Attention! Setting this attribute requires special knowledge.
Sometimes attribute value changes, so as not to constantly update attribute value, you can specify source and parse rules and actual value will be always in our database. When you select attribute type Dynamic value you will see a skeleton of JSON object that you will need to fill.
{
"url": "",
"regexp": "",
"format": "",
"update_every_h": 24
}
where:
- url
URL address from which the value will be parsed
- regexp
Regular expression that will be used for parsing value from the URL
- format
Additional final value formating.
Math expression, where a, b, c etc., can be regular expression result values. For example if you want the first value of regular expression multiply by 100, you need to put to this field: a*100
Symbol replacement, for example: replace|,|.
You can also change any symbol in resulting value to another, for example: replace|,|. which will lead to a replacement of all the commas(,) to dots(.)
It's possible to use two or more formats at once: {"0":"replace|,|", "1":"a*100"} which will lead to a deleting of all the commas(,) in the first find value `a`, and then the result will be multiplied by 100.
- update_every_h
How often to update the value, in hours
in the values of these settings all signs
" or
\ must be additionally escaped with a sign
\, in "regexp" value sign
/ must be escaped with a double signs
\\, excluding signs
/ which opens and closes regular expression, for example:
{
"url": "https://factopedia.org",
"regexp": "/<\\/td>.*class=\"population\" data-count=\"([\\d]+).*\"/i",
"format": "a*1000",
"update_every_h": 24
}
It should also be noted that our parser does not yet process javascript.
⚬ Cost Cost is a biased, unstable value. So we currently do not hold object cost in our database.
Attributes inheritance
Objects inherited attributes of their parents. As a rule, objects which belongs to one parent, have similar attributes. By specifying correctly known object attributes you will simplify the work of everyone else who will create object from your parent. So when adding attributes make sure that they are assigned to the correct object in the hierarchy.
Primary and intermediate objects (categories), as a rule, have attributes with undefined values, and this attributes are defined in final objects.
Limitations
Attributes
- Numeric
from -2147483648 to 2147483647 and from -99999.999999999999999 to 99999.999999999999999
- Range
from -2147483648 to 2147483647 and from -99999.999999999999999 to 99999.999999999999999
- Textual, Dynamic
150 chars
- A set of values
number of elements * 3 + character length of all the values, need to be lower or equal to 999 chars
- A set of links to another objects
number of elements * 3 + character length of all the objects IDs, need to be lower or equal to 50 chars
If this limits is not enough for you, please contact us.
Creating new object
Creating new
object make sure that it is not already in our database. To do this, you need to make a search using our
API or search form on the top of each page. Creating a category, make sure that it will hold more than one final object. For example a car, can have a name equal to generation, and the part of his "family tree" can looks like:
... / Make / Model / Modification / Generation
- Parent objects (Categories)
If you could not find necessary category, a good practice is to create this category first. Don't forget that category is the same object as any other, so follow the same rules.
- Name
Final object need to have a full name, intermediate object preferably need to have only category name, for exaple a car object can have the following categories "Cars", "BMW", "E36", "320i sedan", but the final object is better to name "BMW E36 320i sedan, automatic". Final object name can be only singular in nominative case. Categories may be called in plural, for example "Cars", "Planes", "Countries".
- Description
You can use Markdown syntax for text formating. You can also use the folllowing tags to link other objects:
- {object}
Extended format: {{object:Object name or object ID:Link text}}
Object name or object ID is optional if Link text the same as object name, but if object name will be changed, the link will not working. So we recommend to link by object ID.
Example: {{object:United States:USA}}, {{object:United States}}, {{object:246:United States of America}}
- Attributes
Specify all the known object attributes, if you know the values of the attributes, fill them and select unit of measure, if needed.
Categories with many objects needs to be named in plural, for example: Planes, Vegetables, Fruits, Cars, etc.
Objects comparison
Objects can be compared with each other. Comparisons helps us better understand the difference between objects.
Limitations
- Maximum up to 20 objects in one comparison
- Maximum sorting up to 10 attributes
- Compared objects should have more than half common Attributes
Comparison name is optional, if not specified will be generated from the objects used in the comparison.
Objects sorting
Objects can be sorted by specified attributes, in a certain
sequence and
direction.
Sequence specified sorting priority. Objects will be sorted by specified attributes, in a certain sequence from smaller to larger. So in the beginning objects will be sorted by attribute 1 in a sequence, then by attribute 2 and so on.
Direction can be
- Ascending (↑)
from smaller to larger
- Descending (↓)
from larger to smaller
Comparing some data types
While it's clear with how we compare some data types like numeric or textual, other data types are not so simple in understanding how we compare them.
- Range. Two chunks of the range joins to one number and final number compares. For example range 20-30, will looks like 2030 when compairing
- Boolean false is lower than true
- Set of values all the values sorted ascending and then joins in one string before comparing, for example: "one, two, three", transforms to "onethreetwo"
- Objects compared by object names
- Set of objects compares the same as Set of values, just using object names in set