SlideShare a Scribd company logo
1 of 93
Download to read offline
Tomás Sabat
Comparing Semantic Web Technologies
to TypeDB
High Level Comparison
RDF
SPARQL
RDF Schema
OWL
SHACL
Trust
Proof
Unifying Logic
Rules
Ontologies
Taxonomies
Querying
Data Interchange
Unicode
Syntax
Identifiers
Ontologies
Taxonomies
Querying
Data Interchange
Syntax
Identifiers
OWL
RDFS
SPARQL
RDF
XML
URI
SHACL
OWL
RDFS
RDF/XML
SPARQL
What makes this complex?
SHACL
OWL
RDFS
RDF/XML
SPARQL
TopBraid
OWL DL, OWL Full, OWL Lite, OWL 2
SHACL
OWL
RDFS
RDF/XML
SPARQL
SHACL
OWL
RDFS
RDF/XML
SPARQL
TypeDB provides one technology as a higher-level abstraction over
Semantic Web technologies.
High Level Comparison
RDF
SPARQL
RDF Schema
OWL
SHACL
RDF Triples
Person Person
knows
Peter Parker knows Aunt May
RDF Triples
Person Person
knows
“Peter Parker” “Aunt May”
name name
Peter Parker knows Aunt May
RDF Triples
foaf:Person foaf:Person
foaf:knows
“Peter Parker” “Aunt May”
foaf:name foaf:name
Peter Parker knows Aunt May
RDF Triples
foaf:Person foaf:Person
foaf:knows
“Peter Parker” “Aunt May”
foaf:name foaf:name
Person
Person knows
name: ”Peter
Parker”
name: ”Aunt
May”
Instead of triples, TypeDB implements a concept level entity-relationship
model
Peter Parker knows Aunt May
RDF Triples
foaf:Person foaf:Person
foaf:knows
“Peter Parker” “Aunt May”
foaf:name foaf:name
Person
Person knows
name: ”Peter
Parker”
name: ”Aunt
May”
NB: TypeDB does not use public namespaces
Peter Parker knows Aunt May
RDF Triples
foaf:Person foaf:Person
foaf:knows
“Peter Parker” “Aunt May”
foaf:name foaf:name
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<foaf:Person>
<foaf:name>Peter Parker</foaf:name>
<foaf:knows>
<foaf:Person>
<foaf:name>Aunt May</foaf:name>
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
RDF Triples
foaf:Person foaf:Person
foaf:knows
“Peter Parker” “Aunt May”
foaf:name foaf:name
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<foaf:Person>
<foaf:name>Peter Parker</foaf:name>
<foaf:knows>
<foaf:Person>
<foaf:name>Aunt May</foaf:name>
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
$p isa person, has name "Peter Parker";
$p2 isa person, has name "Aunt May";
($p, $p2) isa knows;
RDF Triples
foaf:Person foaf:Person
foaf:knows
“Peter Parker” “Aunt May”
foaf:name foaf:name
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<foaf:Person>
<foaf:name>Peter Parker</foaf:name>
<foaf:knows>
<foaf:Person>
<foaf:name>Aunt May</foaf:name>
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
$p isa person, has name $n,
has uri "http://xmlns.com/foaf/0.1/Person";
$n "Peter Parker”; $n has uri
"http://xmlns.com/foaf/0.1/name";
$p1 isa person, has name $n1,
has uri "http://xmlns.com/foaf/0.1/Person";
$n1 "Aunt May"; $n1 has uri
"http://xmlns.com/foaf/0.1/name";
($p, $p1) isa knows,
has uri "http://xmlns.com/foaf/0.1/knows";
NB: We can add URIs as attributes in TypeDB.
Hyper-Relations
While in RDF an edge is just a pair of vertices, a hyperedge is a set of vertices.
Hyper-Relations
product
buyer
purchase
seller
located
marriage
spouse spouse
city
Ternary Relations Nested Relations
Hyper-Relations
Alice
Bob
marriage divorce-filing
petitioner
wife
certified-
marriage
respondent
husband
Hyper-Relations
Alice
Bob
marriage divorce-filing
petitioner
wife
certified-
marriage
respondent
husband
Hyper-Relations
Alice
Bob
marriage divorce-filing
petitioner
wife
certified-
marriage
respondent
husband
alice
woman
bob
man
rdf:type
rdf:type
married_to
Hyper-Relations
Alice
Bob
marriage divorce-filing
petitioner
wife
certified-
marriage
respondent
husband
divorce_filing
divorce
alice
woman
bob
man
rdf:type
married_to
rdf:type
rdf:type
Hyper-Relations
Alice
Bob
marriage divorce-filing
petitioner
wife
certified-
marriage
respondent
husband
divorce_filing
divorce
alice
woman
bob
man
rdf:type
married_to
rdf:type
rdf:type
Hyper-Relations
Alice
Bob
marriage divorce-filing
petitioner
wife
certified-
marriage
respondent
husband
divorce_filing
divorce
marriage rdf:Statement
alice
woman
bob
man
rdf:type
petitioner
rdf:type
married_to
rdf:type
rdf:type
respondent
rdf:subject
rdf:predicate
rdf:subject
certified_
marriage
In TypeDB, hyper-relations are first-class modelling constructs.
Higher Order Relationships
lit:HarryPotter bio:author lit:JKRowling .
lit:HarryPotter lit:JKRowling
bio:author
JK Rowling wrote Harry Potter
Higher Order Relationships
lit:HarryPotter bio:author lit:JKRowling .
lit:HarryPotter lit:JKRowling
bio:author
bio:n1 bio:author lit:JKRowling .
bio:n1 bio:title "Harry Potter" .
bio:n1 bio:publicationDate 2000 .
bio:n1 lit:JKRowling
bio:author
JK Rowling wrote Harry Potter JK Rowling wrote Harry Potter in 2000
”Harry Potter”
2000
bio:title
bio:publicationDate
Higher Order Relationships
bio:n1 bio:author lit:JKRowling .
bio:n1 bio:title "Harry Potter" .
bio:n1 bio:publicationDate 2000 .
bio:n1 lit:JKRowling
bio:author
JK Rowling wrote Harry Potter in 2000
”Harry Potter”
2000
bio:title
bio:publicationDate
date 2000
book authorship person
name: ”JK
Rowling”
name: ”Harry
Potter”
$a isa person, has name "JK Rowling";
$b isa book, has name "Harry Potter";
(author: $a, publication: $b) isa authorship,
has date "2000";
Blank Nodes
Harry Potter was inspired by a man who lives in England
lit: HarryPotter bio:name lit:"Harry Potter" .
lit:HarryPotter lit:hasInspiration [a :Man;
bio:livesIn geo:England] .
Blank Nodes
Harry Potter was inspired by a man who lives in England
lit: HarryPotter bio:name lit:"Harry Potter" .
lit:HarryPotter lit:hasInspiration [a :Man;
bio:livesIn geo:England] .
$b isa book, has name "Harry Potter";
$m isa man;
($b, $m) isa inspiration;
$l isa location, has name "England";
($m, $l) isa lives-in;
Blank Nodes
Harry Potter was inspired by a man who lives in England
Or, we query for a thing without a key “URI”.
lit: HarryPotter bio:name lit:"Harry Potter" .
lit:HarryPotter lit:hasInspiration [a :Man;
bio:livesIn geo:England] .
$b isa book, has name "Harry Potter";
$m isa man;
($b, $m) isa inspiration;
$l isa location, has name "England";
($m, $l) isa lives-in;
High Level Comparison
RDF
SPARQL
RDF Schema
OWL
SHACL
Inserting Data
A book with the title “New Book” and creator “A.N.Other”.
Inserting Data
PREFIX dc: <http://purl.org/dc/elements/1.1/>
INSERT DATA
{
<http://example/book1> dc:title "A new book" ;
dc:creator "A.N.Other" .
}
A book with the title “New Book” and creator “A.N.Other”.
Inserting Data
PREFIX dc: <http://purl.org/dc/elements/1.1/>
INSERT DATA
{
<http://example/book1> dc:title "A new book" ;
dc:creator "A.N.Other" .
}
insert
$b isa book, has title "A new book", has creator
"A.N.Other";
A book with the title “New Book” and creator “A.N.Other”.
Querying for Data
Who are all the persons that “Adam Smith” knows?
Querying for Data
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX vCard: <http://www.w3.org/2001/vcard-rdf/3.0#>
SELECT ?whom
WHERE {
?person rdf:type foaf:Person .
?person vcard:family-name "Smith" .
?person vcard:given-name "Adam" .
?person foaf:knows ?whom .
}
Who are all the persons that “Adam Smith” knows?
Querying for Data
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX vCard: <http://www.w3.org/2001/vcard-rdf/3.0#>
SELECT ?whom
WHERE {
?person rdf:type foaf:Person .
?person vcard:family-name "Smith" .
?person vcard:given-name "Adam" .
?person foaf:knows ?whom .
}
match
$p isa person, has family-name "Smith", has given-name
"Adam";
($p, $p2) isa knows; get $p2;
Who are all the persons that “Adam Smith” knows?
Querying for Data
Give me the director and movies that James Dean played in, where also a woman played a role,
and that woman played in a movie directed by John Ford.
Querying for Data
PREFIX movie: <http://example.com/moviedb/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX. foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?director ?movie
WHERE {
?actor rdf:type foaf:Man ;
movie:name "James Dean" ;
movie:playedIn ?movie .
?actress movie:playedIn ?movie ;
rdf:type foaf:Woman ;
movie:playedIn ?anotherMovie .
?JohnFord rdf:type foaf:Man ;
movie:name "John Ford" .
?anotherMovie movie:directedBy ?JohnFord .
}
Give me the director and movies that James Dean played in, where also a woman played a role,
and that woman played in a movie directed by John Ford.
Querying for Data
PREFIX movie: <http://example.com/moviedb/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX. foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?director ?movie
WHERE {
?actor rdf:type foaf:Man ;
movie:name "James Dean" ;
movie:playedIn ?movie .
?actress movie:playedIn ?movie ;
rdf:type foaf:Woman ;
movie:playedIn ?anotherMovie .
?JohnFord rdf:type foaf:Man ;
movie:name "John Ford" .
?anotherMovie movie:directedBy ?JohnFord .
}
match
$p isa man, has name "James Dean";
$w isa woman; (actor: $p, actress: $w, casted-movie: $m) isa
casting;
(actress: $w, casted-movie: $m2) isa casting;
$d isa man, has name "John Ford";
($m2, $d) isa directorship;
get $d, $m;
Give me the director and movies that James Dean played in, where also a woman played a role,
and that woman played in a movie directed by John Ford.
Querying for Data
foaf:Man
?actor
rdf:type
“James Dean”
movie:name
?movie
movie:playedIn
?actress
movie:playedIn
?foaf:Woman
rdf:type
?anotherMovie
movie:playedIn
?JohnFord foaf:Man
rdf:type
“John Ford”
movie:name
movie:directedBy
Querying for Data
James Dean
casting
actor
woman
movie
casting
movie directorship John Ford
actress
casted-
movie
casted-
movie
actress
director
directed-
movie
High Level Comparison
RDF
SPARQL
RDF Schema
OWL
SHACL
RDFS Classes
animal
sub
horse
RDFS Classes
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">
<rdfs:Class rdf:ID="animal" />
<rdfs:Class rdf:ID="horse">
<rdfs:subClassOf rdf:resource="#animal"/>
</rdfs:Class>
</rdf:RDF>
animal
sub
horse
RDFS Classes
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">
<rdfs:Class rdf:ID="animal" />
<rdfs:Class rdf:ID="horse">
<rdfs:subClassOf rdf:resource="#animal"/>
</rdfs:Class>
</rdf:RDF>
define
animal sub entity;
horse sub animal;
animal
sub
horse
RDFS Classes
employment
Part-time
employment
sub
mammal
sub
human
RDFS Classes
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">
<rdfs:Class rdf:ID="mammal" />
<rdfs:Class rdf:ID="human">
<rdfs:subClassOf rdf:resource="#mammal"/>
</rdfs:Class>
<rdfs:Property rdf:ID="employment" />
<rdfs:Property rdf:ID="part-time-employment">
<rdfs:subPropertyOf rdf:resource="#employment"/>
</rdfs:Property>
</rdf:RDF>
employment
Part-time
employment
sub
mammal
sub
human
RDFS Classes
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">
<rdfs:Class rdf:ID="mammal" />
<rdfs:Class rdf:ID="human">
<rdfs:subClassOf rdf:resource="#mammal"/>
</rdfs:Class>
<rdfs:Property rdf:ID="employment" />
<rdfs:Property rdf:ID="part-time-employment">
<rdfs:subPropertyOf rdf:resource="#employment"/>
</rdfs:Property>
</rdf:RDF>
define
mammal sub entity;
human sub mammal;
employment sub relation;
part-time-employment sub employment;
mammal
sub
human
employment
Part-time
employment
sub
Multiple Inheritance
company government
employer
rdfs:subClassOf
rdfs:subClassOf
Multiple Inheritance
company rdf:type rdfs:Class
government rdf:type rdfs:Class
employer rdf:type rdfs:Class
employer rdfs:subClassOf company
employer rdfs:subClassOf government
company government
employer
rdfs:subClassOf
rdfs:subClassOf
Multiple Inheritance
company rdf:type rdfs:Class
government rdf:type rdfs:Class
employer rdf:type rdfs:Class
employer rdfs:subClassOf company
employer rdfs:subClassOf government
company sub entity,
plays employment:employer;
government sub entity,
plays employment:employer;
employment sub relation,
relates employer;
company government
employer
rdfs:subClassOf
rdfs:subClassOf
employment
employer
company
employment
employer
government
Multiple Inheritance
TypeDB supports single type inheritance, TypeDB prefers composition over
inheritance through roles.
rdfs:domain and rdfs:range
:publishedOn rdfs:domain :PublishedBook :hasBrother rdfs:range :Male
rdfs:domain rdfs:range
… ...
:publishedOn
:PublishedBook
rdfs:domain
… ...
:hasBrother
:Male
rdfs:range
rdfs:domain and rdfs:range
:publishedOn rdfs:domain :PublishedBook
rdfs:domain
… ...
:publishedOn
:PublishedBook
rdfs:domain
when {
$b has published-date $pd;
} then {
(published-book: $b) isa publishing;
};
rdfs:domain and rdfs:range
:hasBrother rdfs:range :Male
rdfs:range
… ...
:hasBrother
:Male
rdfs:range
when {
$r (brother: $p) isa siblingship;
} then {
$p has gender "male";
};
If we have a vessel of class DepartingVessel, which has the Property nextDeparture specified, we could state:
ship:Vessel rdf:type rdfs:Class .
ship:DepartingVessel rdf:type rdfs:Class .
ship:nextDeparture rdf:type rdf:Property .
ship:QEII a ship:Vessel .
ship:QEII ship:nextDeparture "Mar 4, 2010" .
rdfs:domain and rdfs:range
If we have a vessel of class DepartingVessel, which has the Property nextDeparture specified, we could state:
ship:Vessel rdf:type rdfs:Class .
ship:DepartingVessel rdf:type rdfs:Class .
ship:nextDeparture rdf:type rdf:Property .
ship:QEII a ship:Vessel .
ship:QEII ship:nextDeparture "Mar 4, 2010" .
rdfs:domain and rdfs:range
With rdfs:domain, any vessel with nextDeparture will be inferred to be a DepartingVessel:
ship:nextDeparture rdfs:domain ship:DepartingVessel .
If we have a vessel of class DepartingVessel, which has the Property nextDeparture specified, we could state:
ship:Vessel rdf:type rdfs:Class .
ship:DepartingVessel rdf:type rdfs:Class .
ship:nextDeparture rdf:type rdf:Property .
ship:QEII a ship:Vessel .
ship:QEII ship:nextDeparture "Mar 4, 2010" .
rdfs:domain and rdfs:range
With rdfs:domain, any vessel with nextDeparture will be inferred to be a DepartingVessel:
ship:nextDeparture rdfs:domain ship:DepartingVessel .
“QEII” will now be a member of the DepartingVessel class.
In TypeDB, we write a rule that connect any entity with a next-departure attribute to the departing-vessel role.
rdfs:domain and rdfs:range
when {
$s has next-departure $nd;
} then {
(departing-vessel: $s) isa departure;
};
In TypeDB, we write a rule that connect any entity with a next-departure attribute to the departing-vessel role.
rdfs:domain and rdfs:range
when {
$s has next-departure $nd;
} then {
(departing-vessel: $s) isa departure;
};
If we insert this data:
$s isa vessel, has name "QEII", has next-departure "Mar 4, 2010";
In TypeDB, we write a rule that connect any entity with a next-departure attribute to the departing-vessel role.
rdfs:domain and rdfs:range
when {
$s has next-departure $nd;
} then {
(departing-vessel: $s) isa departure;
};
If we insert this data:
$s isa vessel, has name "QEII", has next-departure "Mar 4, 2010";
TypeDB will infer that QEII plays the role departing-vessel in a departure relation.
High Level Comparison
RDF
SPARQL
RDF Schema
OWL
SHACL
OWL Restrictions
AllValuesFrom: The range of hasParent with Person/Animal classes can only Person-parents/Animal-parents values.
OWL Restrictions
:Person
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :hasParent ;
owl:allValuesFrom :Person
] .
AllValuesFrom: The range of hasParent with Person/Animal classes can only Person-parents/Animal-parents values.
OWL Restrictions
:Person
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :hasParent ;
owl:allValuesFrom :Person
] .
:Animal
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :hasParent ;
owl:allValuesFrom :Animal
] .
AllValuesFrom: The range of hasParent with Person/Animal classes can only Person-parents/Animal-parents values.
OWL Restrictions
:Person
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :hasParent ;
owl:allValuesFrom :Person
] .
:Animal
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :hasParent ;
owl:allValuesFrom :Animal
] .
person sub entity,
plays person-parentship:child,
plays person-parentship:parent;
animal sub entity,
plays animal-parentship:child,
plays animal-parentship:parent;
parentship sub relation, abstract;
person-parentship sub parentship,
relates child,
relates parent;
animal-parentship sub parentship,
relates child,
relates parent;
AllValuesFrom: The range of hasParent with Person/Animal classes can only Person-parents/Animal-parents values.
Transitive Properties
If A is connected to B, and B is connected to C, then A is connected to C.
London
located
UK Kings Cross
located
located
Transitive Properties
:isLocated rdf:type owl:TransitiveProperty.
If A is connected to B, and B is connected to C, then A is connected to C.
London
located
UK Kings Cross
located
located
Transitive Properties
:isLocated rdf:type owl:TransitiveProperty.
:KingsCross :isLocated :London.
:London :isLocated :UK.
:UK : :isLocated :Europe.
If A is connected to B, and B is connected to C, then A is connected to C.
London
located
UK Kings Cross
located
located
Transitive Properties
:isLocated rdf:type owl:TransitiveProperty.
:KingsCross :isLocated :London.
:London :isLocated :UK.
:UK : :isLocated :Europe.
when {
$r1 (located: $a, locating: $b);
$r2 (located: $b, locating: $c);
} then {
(located: $a, locating: $c);
};
If A is connected to B, and B is connected to C, then A is connected to C.
London
located
UK Kings Cross
located
located
Transitive Properties
:isLocated rdf:type owl:TransitiveProperty.
:KingsCross :isLocated :London.
:London :isLocated :UK.
:UK : :isLocated :Europe.
when {
$r1 (located: $a, locating: $b);
$r2 (located: $b, locating: $c);
} then {
(located: $a, locating: $c);
};
If A is connected to B, and B is connected to C, then A is connected to C.
With this TypeDB rule, if we insert:
insert
$ldn isa city, has name "London";
$uk isa country, has name "Uk";
$eu isa continent, has name "Europe";
(located: $ldn, locating: $uk);
(located: $uk, locating: $eu);
Transitive Properties
:isLocated rdf:type owl:TransitiveProperty.
:KingsCross :isLocated :London.
:London :isLocated :UK.
:UK : :isLocated :Europe.
when {
$r1 (located: $a, locating: $b);
$r2 (located: $b, locating: $c);
} then {
(located: $a, locating: $c);
};
If A is connected to B, and B is connected to C, then A is connected to C.
With this TypeDB rule, if we insert:
This query will return UK and London:
match
$eu isa continent, has name "Europe";
(locating: $eu, located: $loc); get $loc;
insert
$ldn isa city, has name "London";
$uk isa country, has name "Uk";
$eu isa continent, has name "Europe";
(located: $ldn, locating: $uk);
(located: $uk, locating: $eu);
Equivalent Properties
Two properties have the same property extension.
$y
borrowing
$x
checked-out
Equivalent Properties
:borrows owl:equivalentProperty :checkedOut .
Two properties have the same property extension.
$y
borrowing
$x
checked-out
Equivalent Properties
:borrows owl:equivalentProperty :checkedOut . when {
(borrower: $x, borrowing: $y) isa borrowing;
} then {
(checking-out: $x, checked-out: $y) isa checked-out;
};
Two properties have the same property extension.
$y
borrowing
$x
checked-out
hasValue
Red wines should have the colour “red” property
red-wine color: “red”
has
hasValue
:RedWine
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :color ;
owl:hasValue "red"
] .
Red wines should have the colour “red” property
red-wine color: “red”
has
hasValue
:RedWine
a owl:Class ;
rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :color ;
owl:hasValue "red"
] .
when {
$w isa red-wine;
} then {
$w has color "red";
};
Red wines should have the colour “red” property
red-wine color: “red”
has
High Level Comparison
RDF
SPARQL
RDF Schema
OWL
SHACL
Verification with SHACL
Restrict person to work for a company
Restrict a company to have a name attribute of value string
Verification with SHACL
:Person a sh:NodeShape, rdfs:Class ;
sh:property [
sh:path schema:worksFor ;
sh:node :Company ;
] .
:Company a sh:Shape ;
sh:property [
sh:path schema:name ;
sh:datatype xsd:string;
] .
Restrict person to work for a company
Restrict a company to have a name attribute of value string
Verification with SHACL
:Person a sh:NodeShape, rdfs:Class ;
sh:property [
sh:path schema:worksFor ;
sh:node :Company ;
] .
:Company a sh:Shape ;
sh:property [
sh:path schema:name ;
sh:datatype xsd:string;
] .
define
person sub entity,
plays employment:employee;
company sub entity,
owns name,
plays employment:employer;
employment sub relation,
relates employer,
relates employee;
name sub attribute, value string;
Restrict person to work for a company
Restrict a company to have a name attribute of value string
TypeDB reduces the complexity while maintaining a high degree of expressivity
TypeDB provides a higher-level abstraction for working with complex data
Semantic Web Standards are built for the Web, TypeDB works for closed world systems
with private data
SHACL
OWL
RDFS
RDF/XML
SPARQL
TypeDB provides one technology as a higher-level abstraction over Semantic
Web standards.
Tomás Sabat Stöfsel
Comparing Semantic Web Technologies
to TypeDB

More Related Content

Similar to Comparing Semantic Web Technologies to TypeDB

An introduction to Semantic Web and Linked Data
An introduction to Semantic Web and Linked DataAn introduction to Semantic Web and Linked Data
An introduction to Semantic Web and Linked DataGabriela Agustini
 
W3C Tutorial on Semantic Web and Linked Data at WWW 2013
W3C Tutorial on Semantic Web and Linked Data at WWW 2013W3C Tutorial on Semantic Web and Linked Data at WWW 2013
W3C Tutorial on Semantic Web and Linked Data at WWW 2013Fabien Gandon
 
An introduction to Semantic Web and Linked Data
An introduction to Semantic  Web and Linked DataAn introduction to Semantic  Web and Linked Data
An introduction to Semantic Web and Linked DataGabriela Agustini
 
Introduction to RDF
Introduction to RDFIntroduction to RDF
Introduction to RDFNarni Rajesh
 
Keeping it personal
Keeping it personalKeeping it personal
Keeping it personaladactio
 
Www2008, Semantic Marc
Www2008, Semantic MarcWww2008, Semantic Marc
Www2008, Semantic Marcmmmmmrob
 
Consuming linked data by machines
Consuming linked data by machinesConsuming linked data by machines
Consuming linked data by machinesPatrick Sinclair
 
The Semantic Desktop, SPARQL and You! - FOSDEM 2010
The Semantic Desktop, SPARQL and You! - FOSDEM 2010The Semantic Desktop, SPARQL and You! - FOSDEM 2010
The Semantic Desktop, SPARQL and You! - FOSDEM 2010Reconfigure.io
 
An introduction to Semantic Web and Linked Data
An introduction to Semantic Web and Linked DataAn introduction to Semantic Web and Linked Data
An introduction to Semantic Web and Linked DataFabien Gandon
 

Similar to Comparing Semantic Web Technologies to TypeDB (11)

An introduction to Semantic Web and Linked Data
An introduction to Semantic Web and Linked DataAn introduction to Semantic Web and Linked Data
An introduction to Semantic Web and Linked Data
 
W3C Tutorial on Semantic Web and Linked Data at WWW 2013
W3C Tutorial on Semantic Web and Linked Data at WWW 2013W3C Tutorial on Semantic Web and Linked Data at WWW 2013
W3C Tutorial on Semantic Web and Linked Data at WWW 2013
 
An introduction to Semantic Web and Linked Data
An introduction to Semantic  Web and Linked DataAn introduction to Semantic  Web and Linked Data
An introduction to Semantic Web and Linked Data
 
Introduction to RDF
Introduction to RDFIntroduction to RDF
Introduction to RDF
 
Keeping it personal
Keeping it personalKeeping it personal
Keeping it personal
 
Www2008, Semantic Marc
Www2008, Semantic MarcWww2008, Semantic Marc
Www2008, Semantic Marc
 
RDF Data Model
RDF Data ModelRDF Data Model
RDF Data Model
 
Consuming linked data by machines
Consuming linked data by machinesConsuming linked data by machines
Consuming linked data by machines
 
The Semantic Desktop, SPARQL and You! - FOSDEM 2010
The Semantic Desktop, SPARQL and You! - FOSDEM 2010The Semantic Desktop, SPARQL and You! - FOSDEM 2010
The Semantic Desktop, SPARQL and You! - FOSDEM 2010
 
RDF and SPARQL
RDF and SPARQLRDF and SPARQL
RDF and SPARQL
 
An introduction to Semantic Web and Linked Data
An introduction to Semantic Web and Linked DataAn introduction to Semantic Web and Linked Data
An introduction to Semantic Web and Linked Data
 

More from Vaticle

Building Biomedical Knowledge Graphs for In-Silico Drug Discovery
Building Biomedical Knowledge Graphs for In-Silico Drug DiscoveryBuilding Biomedical Knowledge Graphs for In-Silico Drug Discovery
Building Biomedical Knowledge Graphs for In-Silico Drug DiscoveryVaticle
 
Loading Huge Amounts of Data
Loading Huge Amounts of DataLoading Huge Amounts of Data
Loading Huge Amounts of DataVaticle
 
Natural Language Interface to Knowledge Graph
Natural Language Interface to Knowledge GraphNatural Language Interface to Knowledge Graph
Natural Language Interface to Knowledge GraphVaticle
 
A Data Modelling Framework to Unify Cyber Security Knowledge
A Data Modelling Framework to Unify Cyber Security KnowledgeA Data Modelling Framework to Unify Cyber Security Knowledge
A Data Modelling Framework to Unify Cyber Security KnowledgeVaticle
 
Unifying Space Mission Knowledge with NLP & Knowledge Graph
Unifying Space Mission Knowledge with NLP & Knowledge GraphUnifying Space Mission Knowledge with NLP & Knowledge Graph
Unifying Space Mission Knowledge with NLP & Knowledge GraphVaticle
 
The Next Big Thing in AI - Causality
The Next Big Thing in AI - CausalityThe Next Big Thing in AI - Causality
The Next Big Thing in AI - CausalityVaticle
 
Building a Cyber Threat Intelligence Knowledge Graph
Building a Cyber Threat Intelligence Knowledge GraphBuilding a Cyber Threat Intelligence Knowledge Graph
Building a Cyber Threat Intelligence Knowledge GraphVaticle
 
Knowledge Graphs for Supply Chain Operations.pdf
Knowledge Graphs for Supply Chain Operations.pdfKnowledge Graphs for Supply Chain Operations.pdf
Knowledge Graphs for Supply Chain Operations.pdfVaticle
 
Building a Distributed Database with Raft.pdf
Building a Distributed Database with Raft.pdfBuilding a Distributed Database with Raft.pdf
Building a Distributed Database with Raft.pdfVaticle
 
Enabling the Computational Future of Biology.pdf
Enabling the Computational Future of Biology.pdfEnabling the Computational Future of Biology.pdf
Enabling the Computational Future of Biology.pdfVaticle
 
TypeDB Academy | Inference with Rules
TypeDB Academy | Inference with RulesTypeDB Academy | Inference with Rules
TypeDB Academy | Inference with RulesVaticle
 
TypeDB Academy | Modelling Principles
TypeDB Academy | Modelling PrinciplesTypeDB Academy | Modelling Principles
TypeDB Academy | Modelling PrinciplesVaticle
 
Beyond SQL - Comparing SQL to TypeQL
Beyond SQL - Comparing SQL to TypeQLBeyond SQL - Comparing SQL to TypeQL
Beyond SQL - Comparing SQL to TypeQLVaticle
 
TypeDB Academy- Getting Started with Schema Design
TypeDB Academy- Getting Started with Schema DesignTypeDB Academy- Getting Started with Schema Design
TypeDB Academy- Getting Started with Schema DesignVaticle
 
Reasoner, Meet Actors | TypeDB's Native Reasoning Engine
Reasoner, Meet Actors | TypeDB's Native Reasoning EngineReasoner, Meet Actors | TypeDB's Native Reasoning Engine
Reasoner, Meet Actors | TypeDB's Native Reasoning EngineVaticle
 
Intro to TypeDB and TypeQL | A strongly-typed database
Intro to TypeDB and TypeQL | A strongly-typed databaseIntro to TypeDB and TypeQL | A strongly-typed database
Intro to TypeDB and TypeQL | A strongly-typed databaseVaticle
 
Graph Databases vs TypeDB | What you can't do with graphs
Graph Databases vs TypeDB | What you can't do with graphsGraph Databases vs TypeDB | What you can't do with graphs
Graph Databases vs TypeDB | What you can't do with graphsVaticle
 
Pandora Paper Leaks With TypeDB
 Pandora Paper Leaks With TypeDB Pandora Paper Leaks With TypeDB
Pandora Paper Leaks With TypeDBVaticle
 
Strongly Typed Data for Machine Learning
Strongly Typed Data for Machine LearningStrongly Typed Data for Machine Learning
Strongly Typed Data for Machine LearningVaticle
 
Open World Robotics
Open World RoboticsOpen World Robotics
Open World RoboticsVaticle
 

More from Vaticle (20)

Building Biomedical Knowledge Graphs for In-Silico Drug Discovery
Building Biomedical Knowledge Graphs for In-Silico Drug DiscoveryBuilding Biomedical Knowledge Graphs for In-Silico Drug Discovery
Building Biomedical Knowledge Graphs for In-Silico Drug Discovery
 
Loading Huge Amounts of Data
Loading Huge Amounts of DataLoading Huge Amounts of Data
Loading Huge Amounts of Data
 
Natural Language Interface to Knowledge Graph
Natural Language Interface to Knowledge GraphNatural Language Interface to Knowledge Graph
Natural Language Interface to Knowledge Graph
 
A Data Modelling Framework to Unify Cyber Security Knowledge
A Data Modelling Framework to Unify Cyber Security KnowledgeA Data Modelling Framework to Unify Cyber Security Knowledge
A Data Modelling Framework to Unify Cyber Security Knowledge
 
Unifying Space Mission Knowledge with NLP & Knowledge Graph
Unifying Space Mission Knowledge with NLP & Knowledge GraphUnifying Space Mission Knowledge with NLP & Knowledge Graph
Unifying Space Mission Knowledge with NLP & Knowledge Graph
 
The Next Big Thing in AI - Causality
The Next Big Thing in AI - CausalityThe Next Big Thing in AI - Causality
The Next Big Thing in AI - Causality
 
Building a Cyber Threat Intelligence Knowledge Graph
Building a Cyber Threat Intelligence Knowledge GraphBuilding a Cyber Threat Intelligence Knowledge Graph
Building a Cyber Threat Intelligence Knowledge Graph
 
Knowledge Graphs for Supply Chain Operations.pdf
Knowledge Graphs for Supply Chain Operations.pdfKnowledge Graphs for Supply Chain Operations.pdf
Knowledge Graphs for Supply Chain Operations.pdf
 
Building a Distributed Database with Raft.pdf
Building a Distributed Database with Raft.pdfBuilding a Distributed Database with Raft.pdf
Building a Distributed Database with Raft.pdf
 
Enabling the Computational Future of Biology.pdf
Enabling the Computational Future of Biology.pdfEnabling the Computational Future of Biology.pdf
Enabling the Computational Future of Biology.pdf
 
TypeDB Academy | Inference with Rules
TypeDB Academy | Inference with RulesTypeDB Academy | Inference with Rules
TypeDB Academy | Inference with Rules
 
TypeDB Academy | Modelling Principles
TypeDB Academy | Modelling PrinciplesTypeDB Academy | Modelling Principles
TypeDB Academy | Modelling Principles
 
Beyond SQL - Comparing SQL to TypeQL
Beyond SQL - Comparing SQL to TypeQLBeyond SQL - Comparing SQL to TypeQL
Beyond SQL - Comparing SQL to TypeQL
 
TypeDB Academy- Getting Started with Schema Design
TypeDB Academy- Getting Started with Schema DesignTypeDB Academy- Getting Started with Schema Design
TypeDB Academy- Getting Started with Schema Design
 
Reasoner, Meet Actors | TypeDB's Native Reasoning Engine
Reasoner, Meet Actors | TypeDB's Native Reasoning EngineReasoner, Meet Actors | TypeDB's Native Reasoning Engine
Reasoner, Meet Actors | TypeDB's Native Reasoning Engine
 
Intro to TypeDB and TypeQL | A strongly-typed database
Intro to TypeDB and TypeQL | A strongly-typed databaseIntro to TypeDB and TypeQL | A strongly-typed database
Intro to TypeDB and TypeQL | A strongly-typed database
 
Graph Databases vs TypeDB | What you can't do with graphs
Graph Databases vs TypeDB | What you can't do with graphsGraph Databases vs TypeDB | What you can't do with graphs
Graph Databases vs TypeDB | What you can't do with graphs
 
Pandora Paper Leaks With TypeDB
 Pandora Paper Leaks With TypeDB Pandora Paper Leaks With TypeDB
Pandora Paper Leaks With TypeDB
 
Strongly Typed Data for Machine Learning
Strongly Typed Data for Machine LearningStrongly Typed Data for Machine Learning
Strongly Typed Data for Machine Learning
 
Open World Robotics
Open World RoboticsOpen World Robotics
Open World Robotics
 

Recently uploaded

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 

Recently uploaded (20)

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 

Comparing Semantic Web Technologies to TypeDB