Introduction
The DX Network is an infrastructure-level structured data marketplace open to anyone.
It allows marketplace participants to buy and sell structured data from each other in real-time via an API with datapoint granularity. This allows data to be traded in a similar way to how stocks, commodities etc. are traded on market exchanges, effectively creating the first data exchange.
The initial data marketplace launched on the DX Network focuses on the exchange of data about the Technology Industry namely structured data about technology companies, products, investors, investments and news.
Initially, the DX Network is meant to be used as a complement to traditional data collection techniques such as purchasing a subscription from a data aggregator or scraping data from the web.
The three key advantages of acquiring data from the DX Network are as follows:
Real-time access to a wide range of data sources via a single API: data purchased from a DX marketplace is delivered aggregated from the most recent data listed by sellers in standard format (as defined by the marketplace's data model). This makes DX marketplaces particularly suited for use as data sources in live applications.
Semantic queries: moving beyond rigid data queries, the DX Network's semantic query language allows for unfettered access to the knowledge contained in DX marketplaces. It allows for arbitrarily complex—user crafted—data queries against the marketplace's underlying dataset which dramatically speed up data analysis tasks and can be used to reveal previously hidden insights. For convenience, a set of wrapper endpoints are also provided for a more familiar but less flexible interface to marketplace data.
Pay-as-you-go and Pay-per-datapoint: The DX Network inscribes itself in the machine-payable web movement. Instead of having marketplace participants deal with a central authority to collect, manage and deliver data and payments, trust-critical authentication and payment functions are performed using a state channel on the Ethereum blockchain as specified in Chapter 4 of the DX Network's whitepaper. This guarantees that data purchased by consumers hasn't been tampered with, allows consumers to pay for data with single-datapoint precision—paying data sellers directly, bypassing any middlemen—while guaranteeing data sellers collect the correct payment each time their data is hit all without requiring a subscription or any other agreement with a centralized authority.
By design, the DX Network is a fully open and neutral. It provides the core infrastructure needed for unbiased, secure, efficient and standardized data exchange between data consumers and owners. As such, it makes no assumption about marketplace participant honesty or data quality, taking instead an open market approach: data consumers are able to specify a whitelist or blacklist with their requests to include only certain data sources or exclude specific ones. Combining this mechanism with the marketplace's intrinsic economic incentives to prevent malicious behavior, the overall objective is to move away from central and authorative decisions in favor of crowdsourced reputation systems where individual data consumers are able to choose which data sources they decide to trust or not, on their own terms.
Finally, as most protocol and infrastructure-layer blockchain projects, the DX Network's source code is publicly available. We encourage our community to make pull requests on GitHub and provide assistance to developers who wish to build applications on top of the DX Network e.g. payment gateways, third party application plugins etc. Do get in touch if you're (thinking of) building one or if you have any comments/suggestions about this documentation.
Getting started
Language | Version | Example |
---|---|---|
Python 3 | DX-examples.py |
Install and use the Python library
1. [Optional] Install Python 3 by following the guide for your choice of OS here.
2. [Optional] Setup a virtual environment by running:
Linux/macOS
python3 -m venv env && source env/bin/activate
Windows
python -m venv env && env\Scripts\activate.bat
3. Install the DX library by running:
Linux/macOS
pip3 install DX.py
Windows
pip install DX.py
4. Download the example script from above.
5. Replace the arguments of DX.wallet.load
with a wallet filename and password that has Testnet (Ropsten) DX Tokens and Ethers. Get in touch if you need Testnet DX Tokens or Ethers.
6. Run the modified script:
Linux/macOS
python3 DX-examples.py
Windows
python DX-examples.py
Tweak at will and enjoy!
Authentication
Unlike most APIs, the DX Network doesn't use access tokens to authenticate users. Instead, it requires a marketplace buyer or seller to open a payment channel on the Ethereum blockchain to prove their identity and that they have the funds necessary to pay for any potential requests they might make on the network. For data sellers, the Ethereum address used to open the payment channel in which a given set of data was listed for sale is where payments are sent to when any of the data is later purchased on the network.
The technicalities are detailed in Chapter 4 of the DX Network's whitepaper and are entirely abstracted away from application developers using the provided DX SDKs, which only require the most rudimentary understanding of how Ethereum wallets work. Once the first fiat payment gateways are made available, absolutely no understanding of blockchain technology will be required to use the network.
Definitions
Graph: a data structure which consists of nodes (resources) connected by edges (properties). A node can either represent a high-level concept in which case it is called an entity e.g. a company, or it can be a data value such as a website domain. An edge is called a relationship when it connects two entities e.g. the
hasProduct
relationship between a company entity and a product entity, and is called a data property when it connects an entity to a data value e.g. theurl
data property connecting a company to its website url. For a visual example see DX Tech Industry Model.Resource type defines the nature of the information that a resource describes. For example, if the resource describes an entity, the type could be organization, article, etc. If the resource is a data value the type can be
string
,positiveInteger
, etc.Data model or ontology: a set of definitions which formally describe the resources and their associated properties in a knowledge domain e.g. the actors of today's Technology Industry and the potential connections between them. In the DX Network, an ontology strictly determines the type, structure and semantics of the data on a DX marketplace which buyers and sellers can exchange. For more information about the DX Network's data model see Data Models.
URN or uniform resource name: a string of characters used to unambiguously identify entities on the DX Network. Each URN consists of a namespace, a data model name, one or more model specific resource group(s) and an identifier. For example, an organization could be identified by the following URN:
urn:dx:tech-industry:organization/ceda7477-7abd-4968-a0d3-ba5331a5d05a
where the namespace isdx
, the model's name istech-industry
, the resource group isorganization
and the identifier isceda7477-7abd-4968-a0d3-ba5331a5d05a
.UUID or universally unique identifier: a 128-bit number encoded as a hexadecimal string used to create URNs for certain entities on the DX Network. Example:
ceda7477-7abd-4968-a0d3-ba5331a5d05a
for the organization above.
Data Models
On the DX Network, each data marketplace, or DX marketplace, corresponds to a specific knowledge domain e.g. data about the Technology Industry (Tech Industry data), the DX Network's first data marketplace. While all DX marketplaces use the same underlying technology and interface, a given DX marketplace differs from another by defining its own structure, format and semantics corresponding to its specific knowledge domain. These strictly determine the nature of the data buyers and sellers can exchange.
Each DX marketplace data model is defined through an ontology written using the OWL 2 Web Ontology Language, a W3C standard to define the structure of knowledge for various domains.
Informally, our data models may be viewed as directed graphs in which the nodes represent either entities or data values and there are two types of edges: those linking entities to other entities (relationships) and those linking entities to data values (data properties).
A familiarity with the OWL 2 specification is not required to use the APIs, however for completeness we include a brief outline of the OWL representation of our data models for those interested in downloading and exploring them in more depth. Each DX data model conforms to the OWL 2 RL Profile a subset of the full language. Entities are represented as OWL named individuals, the entity types as OWL classes, the relationships between entities as OWL object properties and values are associated with entities using OWL data properties. Data values are typed following the OWL 2 RL Profile utilising a subset of the XML Schema Definition (XSD) types. The XSD base types used in this specification are: integer
, positiveInteger
, string
, boolean
and dateTime
.
Initially, the following data model is defined in the DX Network:
DX Tech Industry Model
The Tech Industry data model represents the different entities: organizations (e.g. startups, investment firms and news publishers, see OrganizationCategory), articles and products which play or have played a role in today's technology industry, together with their associated properties (such as funding rounds and online presence, see Additional entities).
The data model can be visualized here and the corresponding Turtle file can be downloaded here.
For instance, the fact that a public company called Tesla, Inc. (formerly Tesla Motors) was founded on the 1st of July 2003 (source) would be represented by the following set of properties as defined by the Organization entity type of the ontology:
Where <URN>
is the organization's uniform resource name which uniquely identifies Tesla, Inc. on the DX Network.
The following entity types are defined in the Tech Industry ontology:
Article
Subtypes
Data Properties
-
articlePublishedDatedateTime
-
domainstring
-
entityDescriptionstring
-
entityNamestring
-
entityNameAliasstring
-
urlstring
-
urlAliasstring
Relationships
-
hasImage
-
mentioned
-
publishedBy
-
wasMentionedIn
Organization
Data Properties
-
domainstring
-
entityDescriptionstring
-
entityNamestring
-
entityNameAliasstring
-
organizationClosedDatedateTime
-
organizationFoundingDatedateTime
-
organizationIsPostRevenueboolean
-
teamSizepositiveInteger
-
teamSizeRangestring
-
urlstring
-
urlAliasstring
Relationships
-
accelerated
-
acquired
-
hasAdvisor
-
hasAngelList
-
hasBetaList
-
hasCrunchbase
-
hasFacebook
-
hasFounder
-
hasFundingRound
-
hasHeadquarter
-
hasImage
-
hasInstagram
-
hasInvestor
-
hasLinkedIn
-
hasMarket
-
hasOffice
-
hasOrganizationCategory
-
hasOrganizationStatus
-
hasOrganizationTotalFunding
-
hasOrganizationType
-
hasProduct
-
hasProductHunt
-
hasPublished
-
hasRevenueModel
-
hasStartupTracker
-
hasStudent
-
hasTeamMember
-
hasTwitter
-
hasUserType
-
hasYouTube
-
wasAcceleratedBy
-
wasAcquiredBy
-
wasMentionedIn
Product
Data Properties
-
domainstring
-
entityDescriptionstring
-
entityNamestring
-
entityNameAliasstring
-
productIsOpenSourceboolean
-
productKeywordsstring
-
productLaunchDatedateTime
-
teamSizepositiveInteger
-
teamSizeRangestring
-
urlstring
-
urlAliasstring
Relationships
-
hasAdvisor
-
hasAngelList
-
hasAppleAppStore
-
hasBetaList
-
hasCrunchbase
-
hasFacebook
-
hasImage
-
hasInstagram
-
hasLinkedIn
-
hasMaker
-
hasMarket
-
hasPlayStore
-
hasProductHunt
-
hasProductStage
-
hasProductType
-
hasRevenueModel
-
hasStartupTracker
-
hasTeamMember
-
hasTwitter
-
hasUserType
-
hasYouTube
-
productOf
-
wasAcceleratedBy
-
wasMentionedIn
Additional entities
Address
Data Properties
-
addressCitystring
-
addressFullstring
Relationships
-
hasCountry
Advisor
Relationships
-
advised
-
hasFacebook
-
hasInstagram
-
hasLinkedIn
-
hasPublished
-
hasTwitter
-
hasYouTube
-
made
-
studiedAt
-
teamMemberOf
AngelList
Data Properties
-
onlinePresenceHandlestring
AppStore
Subtypes
Data Properties
-
onlinePresenceHandlestring
AppleAppStore
Data Properties
-
onlinePresenceHandlestring
BetaList
Data Properties
-
onlinePresenceHandlestring
BlogPost
Data Properties
-
articlePublishedDatedateTime
-
domainstring
-
entityDescriptionstring
-
entityNamestring
-
entityNameAliasstring
-
urlstring
-
urlAliasstring
Relationships
-
hasImage
-
mentioned
-
publishedBy
-
wasMentionedIn
Country
Data Properties
-
countryAlpha2string
-
countryAlpha3string
-
countryNamestring
Relationships
-
hasRegion
-
usesCurrency
Possible values are represented as URNs using the prefix urn:dx:tech-industry:country/
.
Example: urn:dx:tech-industry:country/ad
Values
-
adAndorra
-
aeUnited Arab Emirates
-
afAfghanistan
-
agAntigua and Barbuda
-
aiAnguilla
-
alAlbania
-
amArmenia
-
aoAngola
-
aqAntarctica
-
arArgentina
-
asAmerican Samoa
-
atAustria
-
auAustralia
-
awAruba
-
axAland Islands
-
azAzerbaijan
-
baBosnia and Herzegovina
-
bbBarbados
-
bdBangladesh
-
beBelgium
-
bfBurkina Faso
-
bgBulgaria
-
bhBahrain
-
biBurundi
-
bjBenin
-
blSaint Barthélemy
-
bmBermuda
-
bnBrunei
-
boBolivia
-
bqBonaire
-
brBrazil
-
bsBahamas
-
btBhutan
-
bvBouvet Island
-
bwBotswana
-
byBelarus
-
bzBelize
-
caCanada
-
ccCocos (Keeling) Islands
-
cdDemocratic Republic of the Congo
-
cfCentral African Republic
-
cgCongo
-
chSwitzerland
-
ciCôte d'Ivoire
-
ckCook Islands
-
clChile
-
cmCameroon
-
cnChina
-
coColombia
-
crCosta Rica
-
cuCuba
-
cvCape Verde
-
cwCuraçao
-
cxChristmas Island
-
cyCyprus
-
czCzech Republic
-
deGermany
-
djDjibouti
-
dkDenmark
-
dmDominica
-
doDominican Republic
-
dzAlgeria
-
ecEcuador
-
eeEstonia
-
egEgypt
-
ehWestern Sahara
-
erEritrea
-
esSpain
-
etEthiopia
-
fiFinland
-
fjFiji
-
fkFalkland Islands
-
fmMicronesia
-
foFaroe Islands
-
frFrance
-
gaGabon
-
gbUnited Kingdom
-
gdGrenada
-
geGeorgia
-
gfFrench Guiana
-
ggGuernsey
-
ghGhana
-
giGibraltar
-
glGreenland
-
gmGambia
-
gnGuinea
-
gpGuadeloupe
-
gqEquatorial Guinea
-
grGreece
-
gsSouth Georgia and the South Sandwich Islands
-
gtGuatemala
-
guGuam
-
gwGuinea-Bissau
-
gyGuyana
-
hkHong Kong
-
hmHeard Island and McDonald Islands
-
hnHonduras
-
hrCroatia
-
htHaiti
-
huHungary
-
idIndonesia
-
ieIreland
-
ilIsrael
-
imIsle of Man
-
inIndia
-
ioBritish Indian Ocean Territory
-
iqIraq
-
irIran
-
isIceland
-
itItaly
-
jeJersey
-
jmJamaica
-
joJordan
-
jpJapan
-
keKenya
-
kgKyrgyzstan
-
khCambodia
-
kiKiribati
-
kmComoros
-
knSaint Kitts and Nevis
-
kpNorth Korea
-
krSouth Korea
-
kwKuwait
-
kyCayman Islands
-
kzKazakhstan
-
laLaos
-
lbLebanon
-
lcSaint Lucia
-
liLiechtenstein
-
lkSri Lanka
-
lrLiberia
-
lsLesotho
-
ltLithuania
-
luLuxembourg
-
lvLatvia
-
lyLibya
-
maMorocco
-
mcMonaco
-
mdMoldova
-
meMontenegro
-
mfSaint Martin
-
mgMadagascar
-
mhMarshall Islands
-
mkMacedonia
-
mlMali
-
mmMyanmar
-
mnMongolia
-
moMacao
-
mpNorthern Mariana Islands
-
mqMartinique
-
mrMauritania
-
msMontserrat
-
mtMalta
-
muMauritius
-
mvMaldives
-
mwMalawi
-
mxMexico
-
myMalaysia
-
mzMozambique
-
naNamibia
-
ncNew Caledonia
-
neNiger
-
nfNorfolk Island
-
ngNigeria
-
niNicaragua
-
nlNetherlands
-
noNorway
-
npNepal
-
nrNauru
-
nuNiue
-
nzNew Zealand
-
omOman
-
paPanama
-
pePeru
-
pfFrench Polynesia
-
pgPapua New Guinea
-
phPhilippines
-
pkPakistan
-
plPoland
-
pmSaint Pierre and Miquelon
-
pnPitcairn
-
prPuerto Rico
-
psPalestine
-
ptPortugal
-
pwPalau
-
pyParaguay
-
qaQatar
-
reRéunion
-
roRomania
-
rsSerbia
-
ruRussia
-
rwRwanda
-
saSaudi Arabia
-
sbSolomon Islands
-
scSeychelles
-
sdSudan
-
seSweden
-
sgSingapore
-
shSaint Helena, Ascension and Tristan da Cunha
-
siSlovenia
-
sjSvalbard and Jan Mayen
-
skSlovakia
-
slSierra Leone
-
smSan Marino
-
snSenegal
-
soSomalia
-
srSuriname
-
ssSouth Sudan
-
stSao Tome and Principe
-
svEl Salvador
-
sxSint Maartenf
-
sySyria
-
szSwaziland
-
tcTurks and Caicos Islands
-
tdChad
-
tfFrench Southern Territories
-
tgTogo
-
thThailand
-
tjTajikistan
-
tkTokelau
-
tlTimor-Leste
-
tmTurkmenistan
-
tnTunisia
-
toTonga
-
trTurkey
-
ttTrinidad and Tobago
-
tvTuvalu
-
twTaiwan
-
tzTanzania
-
uaUkraine
-
ugUganda
-
umUnited States Minor Outlying Islands
-
usUnited States
-
uyUruguay
-
uzUzbekistan
-
vaVatican
-
vcSaint Vincent and the Grenadines
-
veVenezuela
-
vgBritish Virgin Islands
-
viU.S Virgin Islands
-
vnVietnam
-
vuVanuatu
-
wfWallis and Futuna
-
wsSamoa
-
yeYemen
-
ytMayotte
-
zaSouth Africa
-
zmZambia
-
zwZimbabwe
Crunchbase
Data Properties
-
onlinePresenceHandlestring
Currency
Data Properties
-
currencyCodestring
-
currencyNamestring
-
currencySymbolstring
DebtRound
Data Properties
-
fundingRoundAnnouncedDatedateTime
Relationships
-
hasFundingRoundAmount
-
hasFundingRoundInvestor
Directory
Subtypes
AngelList, BetaList, Crunchbase, ProductHunt, StartupTracker
Data Properties
-
onlinePresenceHandlestring
EquityCrowdfundingRound
Data Properties
-
fundingRoundAnnouncedDatedateTime
Relationships
-
hasEquityRoundPremoneyValuation
-
hasEquityRoundStage
-
hasFundingRoundAmount
-
hasFundingRoundInvestor
EquityRound
Subtypes
Data Properties
-
fundingRoundAnnouncedDatedateTime
Relationships
-
hasEquityRoundPremoneyValuation
-
hasEquityRoundStage
-
hasFundingRoundAmount
-
hasFundingRoundInvestor
EquityRoundStage
Possible values are represented as URNs using the prefix urn:dx:tech-industry:equity-round-stage/
.
Example: urn:dx:tech-industry:equity-round-stage/ipo
Values
-
ipo
-
pre-seed
-
seed
-
series-a
-
series-b
-
series-c
-
series-d
-
series-e
-
series-f
-
series-g
-
series-h
-
series-i
-
series-j
Data Properties
-
onlinePresenceHandlestring
Founder
Relationships
-
founded
-
hasFacebook
-
hasInstagram
-
hasLinkedIn
-
hasPublished
-
hasTwitter
-
hasYouTube
-
made
-
studiedAt
-
teamMemberOf
FundingRound
Subtypes
DebtRound, EquityRound, GrantRound, NonEquityCrowdfundingRound, TokenSaleRound
Data Properties
-
fundingRoundAnnouncedDatedateTime
Relationships
-
hasFundingRoundAmount
-
hasFundingRoundInvestor
GrantRound
Data Properties
-
fundingRoundAnnouncedDatedateTime
Relationships
-
hasFundingRoundAmount
-
hasFundingRoundInvestor
Image
Data Properties
-
urlstring
Data Properties
-
onlinePresenceHandlestring
Investor
Relationships
-
hasFacebook
-
hasInstagram
-
hasLinkedIn
-
hasPublished
-
hasTwitter
-
hasYouTube
-
made
-
studiedAt
-
teamMemberOf
Data Properties
-
onlinePresenceHandlestring
Market
Possible values are represented as URNs using the prefix urn:dx:tech-industry:market/
.
Example: urn:dx:tech-industry:market/accounting-and-legal
Values
-
accounting-and-legal
-
advertising
-
ai
-
analytics
-
ar-vr
-
automotive
-
big-data
-
biotech
-
blockchain
-
bots
-
communication
-
consulting
-
content
-
data
-
design
-
e-commerce
-
education
-
energy
-
entertainment
-
events
-
fashion
-
finance
-
food-and-beverages
-
gaming
-
governmental
-
hardware
-
health
-
hospitality
-
hr-and-recruitment
-
insurance
-
iot
-
manufacturing
-
marketing
-
media
-
medical
-
messaging
-
music
-
other
-
productivity
-
real-estate
-
retail
-
robotics
-
sales
-
security
-
sharing-economy
-
social-networks
-
software-dev
-
startups
-
travel
MonetaryAmount
Data Properties
-
monetaryAmountValuepositiveInteger
Relationships
-
usesCurrency
News
Data Properties
-
articlePublishedDatedateTime
-
domainstring
-
entityDescriptionstring
-
entityNamestring
-
entityNameAliasstring
-
urlstring
-
urlAliasstring
Relationships
-
hasImage
-
mentioned
-
publishedBy
-
wasMentionedIn
NonEquityCrowdfundingRound
Data Properties
-
fundingRoundAnnouncedDatedateTime
Relationships
-
hasFundingRoundAmount
-
hasFundingRoundInvestor
OnlinePresence
Subtypes
Data Properties
-
onlinePresenceHandlestring
OrganizationCategory
Possible values are represented as URNs using the prefix urn:dx:tech-industry:organization:category/
.
Example: urn:dx:tech-industry:organization:category/accelerator
Values
-
accelerator
-
agency
-
crowdfunding-campaign
-
ico-token-sale
-
investment-firm
-
publisher
-
startup
-
university
OrganizationStatus
Possible values are represented as URNs using the prefix urn:dx:tech-industry:organization:status/
.
Example: urn:dx:tech-industry:organization:status/active
Values
-
active
-
closed
-
suspected-closed
OrganizationType
Possible values are represented as URNs using the prefix urn:dx:tech-industry:organization:type/
.
Example: urn:dx:tech-industry:organization:type/delisted
Values
-
delisted
-
ngo
-
private
-
public
Person
Subtypes
Relationships
-
hasFacebook
-
hasInstagram
-
hasLinkedIn
-
hasPublished
-
hasTwitter
-
hasYouTube
-
made
-
studiedAt
-
teamMemberOf
PhysicalGood
Possible values are represented as URNs using the prefix urn:dx:tech-industry:product:type/
.
Example: urn:dx:tech-industry:product:type/hardware
Values
-
hardware
-
non-electronic-good
Place
Subtypes
Address, Country, Region, Subregion
PlayStore
Data Properties
-
onlinePresenceHandlestring
ProductHunt
Data Properties
-
onlinePresenceHandlestring
ProductStage
Possible values are represented as URNs using the prefix urn:dx:tech-industry:product:stage/
.
Example: urn:dx:tech-industry:product:stage/pre-launch
Values
-
pre-launch
-
privately-launched
-
publicly-launched
ProductType
Subtypes
Possible values are represented as URNs using the prefix urn:dx:tech-industry:product:type/
.
Example: urn:dx:tech-industry:product:type/service
Values
-
service
Region
Data Properties
-
regionNamestring
Relationships
-
hasSubregion
Possible values are represented as URNs using the prefix urn:dx:tech-industry:region/
.
Example: urn:dx:tech-industry:region/africa
Values
-
africa
-
america
-
antarctica
-
asia
-
europe
-
oceania
RevenueModel
Possible values are represented as URNs using the prefix urn:dx:tech-industry:revenue-model/
.
Example: urn:dx:tech-industry:revenue-model/advertising
Values
-
advertising
-
affiliation
-
commission
-
freemium
-
none
-
other
-
sales
-
subscription
Review
Data Properties
-
articlePublishedDatedateTime
-
domainstring
-
entityDescriptionstring
-
entityNamestring
-
entityNameAliasstring
-
urlstring
-
urlAliasstring
Relationships
-
hasImage
-
mentioned
-
publishedBy
-
wasMentionedIn
Social
Subtypes
Facebook, Instagram, LinkedIn, Twitter, YouTube
Data Properties
-
onlinePresenceHandlestring
Software
Possible values are represented as URNs using the prefix urn:dx:tech-industry:product:type/
.
Example: urn:dx:tech-industry:product:type/desktop-app
Values
-
desktop-app
-
mobile-app
-
web-app
StartupTracker
Data Properties
-
onlinePresenceHandlestring
Subregion
Possible values are represented as URNs using the prefix urn:dx:tech-industry:subregion/
.
Example: urn:dx:tech-industry:subregion/australia-and-new-zealand
Values
-
australia-and-new-zealand
-
eastern-asia
-
eastern-europe
-
latin-america-and-the-caribbean
-
melanesia
-
micronesia
-
middle-east
-
northern-africa
-
northern-america
-
northern-europe
-
polynesia
-
southeastern-asia
-
southern-asia
-
southern-europe
-
sub-saharan-africa
-
western-europe
TokenSaleRound
Data Properties
-
fundingRoundAnnouncedDatedateTime
Relationships
-
hasFundingRoundAmount
-
hasFundingRoundInvestor
Data Properties
-
onlinePresenceHandlestring
UserType
Possible values are represented as URNs using the prefix urn:dx:tech-industry:user-type/
.
Example: urn:dx:tech-industry:user-type/b2b
Values
-
b2b
-
b2c
-
b2g
YouTube
Data Properties
-
onlinePresenceHandlestring
DX Tech Industry API
The DX Tech Industry API provides a familiar interface to the Tech Industry DX marketplace, similar to the APIs traditional Tech Industry data providers tend to offer.
It trades off query flexibility for familiarity by providing a wrapper over the DX Network's semantic interface, removing the need to understand or use the DX/SPARQL query language.
Search organizations
Definition
GET https://api-alpha.dx.network/techindustry/organizations
This endpoint returns a list organization summaries matching the specified query parameters.
An organization summary consists of a unique identifier (UUID) and basic information about the matching organization.
The page size is fixed at 100 and switching between pages is possible using the page
query parameter.
Parameters
-
name
Organization or product name.
-
domain
Organization or product website domain.
-
category
See OrganizationCategory for possible values.
-
keywords
Full text search across short descriptions of organizations and product keywords.
-
funding_min
Minimum amount of total funding raised in USD.
-
funding_max
Maximum amount of total funding raised in USD.
-
has_revenue
Existence of revenue.
-
founded_before
Organization is older than the specified date in ISO 8601 format.
-
founded_after
Organization is younger than the specified date in ISO 8601 format.
-
markets
Comma separated list of Market values.
-
city
City the organization is located in.
-
country
See Country for possible values.
-
region
See Region for possible values.
-
teamsize_min
Team must be smaller than the number specified.
-
teamsize_max
Team must be larger than the number specified.
-
page
Page number of the result list.
Fetch an organization
Definition
GET https://api-alpha.dx.network/techindustry/organizations/:uuid
Returns all available data for the specified Organization including its Products.
The organization's identifier must be specified in the uuid
path parameter which can be obtained by doing a search.
DX Semantic API
The DX Network stores data in a graph style knowledge base which allows for powerful semantic queries.
The DX Semantic API offers direct access to all of the DX Network's data properties and relationships across all entities and data models. Queries can be made using a simplified version of the SPARQL query language which is the W3C standard to extract knowledge from semantic graph databases.
All ontology specific wrapper APIs are built on top of the DX Semantic API. The following endpoints allow for advanced data discovery, analytics as well as enrichment scenarios.
DX/SPARQL
DX/SPARQL is a custom version of SPARQL 1.1 that can be used to retrieve knowledge from any of the network's supported knowledge domains. Most features of the SPARQL query language are available in DX/SPARQL, however data modification—the CONSTRUCT
query form and the SPARQL 1.1 Update Language—and some niche features such as federated queries are not available.
The following sections are based on an early, work in progress version of DX/SPARQL. As the development of the DX Network progresses the query language's specification could change.
DX/SPARQL compared to SPARQL
DX/SPARQL is a subset of SPARQL with DX Network specific extensions. The main differences are:
- DX/SPARQL only supports
SELECT
queries; - DX/SPARQL exposes only the latest snapshot of the data;
- DX/SPARQL adds
WHITELIST
andBLACKLIST
keywords to provide seller whitelisting and blacklisting features; - DX/SPARQL enforces an upper bound on the number of solutions returned, which is currently 100;
- DX/SPARQL adds
PAGE
andSIZE
keywords to assist with pagination, e.g.PAGE 2 SIZE 10
; - DX/SPARQL only supports a pre-defined set of prefixes (see below);
- Federated SPARQL queries (
SERVICE
clause) are not available in DX/SPARQL.
The following prefixes are defined in DX/SPARQL queries:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dx: <http://dx.network/tech-industry#>
Any additional prefixes will be ignored, however we plan to lift this restriction as the network grows.
DX/SPARQL Examples
Example #1: Find the investors that invested at least $100k in fashion companies.
SELECT $inv
WHERE {
$org a dx:Organization ;
dx:hasMarket <urn:dx:tech-industry:market/fashion> ;
dx:hasFundingRound $round .
$round dx:hasFundingRoundInvestor $inv ;
dx:fundingRoundCurrency <urn:dx:tech-industry:currency/usd> ;
dx:fundingRoundAmount $amount .
FILTER ($amount >= 100000)
}
Example #2: Find B2B or B2G AI companies based in London, UK.
SELECT $org $name
WHERE {
$org a dx:Organization ;
dx:hasMarket <urn:dx:tech-industry:market/ai> ;
dx:hasHeadquarter $addr ;
dx:hasUserType $user_type ;
dx:entityName $name .
$addr dx:addressCity "London" ;
dx:hasCountry <urn:dx:tech-industry:country/gb> .
FILTER (
$user_type IN (
<urn:dx:tech-industry:user-type/b2b>,
<urn:dx:tech-industry:user-type/b2g>
)
)
}
Example #3: Find all Western European companies submittied by the given data sellers.
SELECT $org
WHERE {
$region dx:hasSubregion <urn:dx:tech-industry:subregion/western-europe> .
$country dx:hasRegion $region .
$hq dx:hasCountry $country .
$org a dx:Organization ;
dx:hasHeadquarter $hq .
WHITELIST (
"0x02BdaCb2c3BAA8a12D3957f3bd8637d6d2b35f10",
"0x66D57867A1523dB7165Fc48228CC61b05F363008"
)
}
Example #4: Return the second page of all companies that have revenue.
SELECT $org
WHERE {
$org a dx:Organization ;
dx:organizationIsPostRevenue true .
}
PAGE 2
Example #5: Return five B2B recruitment companies that generate revenue through sales and subscriptions.
SELECT $org $name
WHERE {
$org a dx:Organization ;
dx:organizationIsPostRevenue true ;
dx:hasUserType <urn:dx:tech-industry:user-type/b2b> ;
dx:hasMarket <urn:dx:tech-industry:market/hr-and-recruitment> ;
dx:hasRevenueModel $revenue_model ;
dx:entityName $name .
FILTER (
$revenue_model IN (
<urn:dx:tech-industry:revenue-model/sales>,
<urn:dx:tech-industry:revenue-model/subscription>
)
)
}
PAGE 1 SIZE 5
Search by semantic query
Definition
GET https://api-alpha.dx.network/semantic/search
This endpoint can be used to retrieve knowledge embedded in the network's relationships and data fields using the network's simplified version of SPARQL called DX/SPARQL. DX/SPARQL only supports the SELECT
query form and restricts some advanced SPARQL features.
In case multiple versions of a relationship or data property are available as a response to a given DX/SPARQL query, the network automatically returns the most recent value listed across sellers, in accordance with the caller's whitelist/blacklist.
Solutions which match the patterns described in the query's WHERE
clause are returned in JSON format according to the SPARQL Query Results JSON Format specification.
Parameters
-
model
Name of the semantic model to query. As of now this can be
techindustry
only, but as the DX Network starts to support more ontologies this can vary and specifying it will be mandatory. -
queryrequired
DX/SPARQL query to execute. Only
SELECT
statements are allowed and custom prefixes will be ignored.
Fetch by identifier
Definition
GET https://api-alpha.dx.network/semantic/fetch
This endpoint allows for fetching the properties associated with an entity identified by its URN. Properties can be any of the data properties and/or relationships which are defined in the corresponding ontology. The endpoint returns exact data values for data properties and the URNs which identify the entities on the other side of the relationships for relationships.
Parameters
-
model
Name of the semantic model to fetch from. As of now this can be
techindustry
only, but as the DX Network starts to support more ontologies this can vary and specifying it will be mandatory. -
urnrequired
URN of the entity to fetch.
-
properties
Comma separated list of properties (data properties or relationships) of the given entity. Properties which are not defined on the given entity will be ignored. If not specified all properties will be returned.
Errors
The DX Network API uses the following HTTP error codes:
Error Code | Reason |
---|---|
400 | Bad Request — Your request is invalid. |
401 | Unauthorized — Your API key is wrong. |
402 | Payment Required — Initial deposit required. |
404 | Not Found — The specified endpoint could not be found. |
405 | Method Not Allowed — You tried to access an endpoint with an invalid method. |
406 | Not Acceptable — You requested a format that isn't JSON. |