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 Data
Gabriela Agustini
 
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
Gabriela 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 2013
Fabien Gandon
 
Keeping it personal
Keeping it personalKeeping it personal
Keeping it personal
adactio
 
Www2008, Semantic Marc
Www2008, Semantic MarcWww2008, Semantic Marc
Www2008, Semantic Marc
mmmmmrob
 
Consuming linked data by machines
Consuming linked data by machinesConsuming linked data by machines
Consuming linked data by machines
Patrick Sinclair
 

Similar to Comparing Semantic Web Technologies to TypeDB (13)

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
 
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
 
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
 
Let’s Make Graph Databases Fun Again with Java [DEV6043]
Let’s Make Graph Databases Fun Again with Java [DEV6043]Let’s Make Graph Databases Fun Again with Java [DEV6043]
Let’s Make Graph Databases Fun Again with Java [DEV6043]
 
RDF presentation at DrupalCon San Francisco 2010
RDF presentation at DrupalCon San Francisco 2010RDF presentation at DrupalCon San Francisco 2010
RDF presentation at DrupalCon San Francisco 2010
 
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 Discovery
Vaticle
 
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
Vaticle
 
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
Vaticle
 
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
Vaticle
 
TypeDB Academy | Modelling Principles
TypeDB Academy | Modelling PrinciplesTypeDB Academy | Modelling Principles
TypeDB Academy | Modelling Principles
Vaticle
 
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
Vaticle
 
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
Vaticle
 

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

Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
UK Journal
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
 

Recently uploaded (20)

ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
Your enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jYour enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4j
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 

Comparing Semantic Web Technologies to TypeDB