1 of 44

From property graphs to knowledge graphs

PhD Defense - Julian BRUYAT - 2024-06-03

1

Jury

  • Catherine FARON, Reviewer
  • Olaf HARTIG, Reviewer
  • Anastasia DIMOU, Examinator
  • Jose Emilio LABRA GAYO, Examinator
  • Philippe LAMARRE, Examinator
  • Frédérique LAFOREST, Advisor
  • Pierre-Antoine CHAMPIN, Co-advisor
  • Lionel MÉDINI, Co-advisor

2 of 44

Property graphs and RDF graphs: Knowledge graphs

2/39

3 of 44

Property graphs and RDF graphs: Property graphs

3/39

:Person

name: Tintin

job: Reporter

:Person

name: Haddock

:Animal

name: Snowy

:owns

:travelsWith

since: The crab with the golden claws

Vendors: Neo4j, JanusGraph, Amazon Neptune, Azure Cosmos DB…

Running example as a property graph

4 of 44

Property graphs and RDF graphs: Property graphs

4/39

Screenshot of the user interface of Neo4j

5 of 44

Property graphs and RDF graphs: RDF graphs

5/39

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

@prefix ex: <http://www.example.org/> .

@prefix dbpedia: <http://dbpedia.org/resource/> .

@prefix foaf: <http://xmlns.com/foaf/0.1/> .

@prefix schema: <http://schema.org/> .

_:tintin rdf:type foaf:Person .

_:tintin foaf:name "Tintin" .

_:tintin schema:job dbpedia:Reporter .

dbpedia:Reporter schema:name "Reporter" .

_:snowy rdf:type dbpedia:Animal .

_:snowy dbpedia:name "Snowy" .

_:haddock rdf:type foaf:Person .

_:haddock foaf:name "Haddock" .

_:tintin ex:owns _:snowy .

_:travelers� ex:traveler _:tintin� ex:traveler _:haddock

ex:since "The crab with the golden claws" .

Running example as an RDF graph written in Turtle

Running example as an RDF graph in a graphical representation

6 of 44

Property graphs and RDF graphs: RDF-star graphs

6/39

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

@prefix ex: <http://www.example.org/> .

@prefix dbpedia: <http://dbpedia.org/resource/> .

@prefix foaf: <http://xmlns.com/foaf/0.1/> .

@prefix schema: <http://schema.org/> .

_:tintin rdf:type foaf:Person .

_:tintin foaf:name "Tintin" .

_:tintin schema:job dbpedia:Reporter .

dbpedia:Reporter schema:name "Reporter" .

_:snowy rdf:type dbpedia:Animal .

_:snowy dbpedia:name "Snowy" .

_:haddock rdf:type foaf:Person .

_:haddock foaf:name "Haddock" .

_:tintin ex:owns _:snowy .

_:tintin ex:travelsWith _:haddock .

# RDF-star

<< _:tintin ex:travelsWith _:haddock >>

ex:since "The crab with the golden claws".

Running example as an RDF-star graph written in Turtle-star

Running example as an RDF-star graph in a graphical representation

7 of 44

Property graphs and RDF graphs: RDF graphs

  • W3C standard (1999, 2004, 2014, 2025?)

  • A lot of different standards developed around it
    • Querying : SPARQL
    • Reasoning: RDFS, OWL
    • Data integration: R2RML, JSON-LD
    • Validation: SHACL

7/39

8 of 44

Property graphs and RDF graphs

8/39

Property Graphs

RDF graphs

Definition

A graph, depends on vendors

Standardized as a set of RDF triples

Semantics

Local

Global

Merging two graphs

It is complicated

U mathematical operator

Query language

Path traversal:�Gremlin, OpenCypher

GQL

Pattern matching:�SPARQL

Adding information to edges

Native support

RDF-star (RDF 1.2)

Even though they both rely on a graph data structure, property graphs and RDF graphs are very different

9 of 44

Objectives

9/39

Convert PG data to RDF to benefit from its advantages

in terms of reasoning, data integration, data validation…

conversion

reversibility?

10 of 44

State of the art

  • NeoSemantics (Jesús Barrasa’s Neo4j plugin for PG - RDF interoperability)

10/39

:node1 rdf:type :Person .

:node1 :name "Tintin" .

:node1 :travelsWith :node2 .

<< :node1 :travelsWith :node2 >> :since "The crab …" .

:node2 rdf:type :Person .

Conversion operated by NeoSemantics, a Neo4j plugin for PG - RDF interoperability

:Person

name: Tintin

:Person

:travelsWith

since: The crab with the golden claws

  • The Property Graph ontology [1]

[1] Tomaszuk, D., Angles, R., & Thakkar, H. (2020). Pgo: Describing property graphs in rdf. IEEE Access, 8, 118355-118369.

_:pg pgo:hasNode _:node1 .

_:pg pgo:hasNode _:node2 .

_:pg pgo:hasEdge _:edge3 .

_:node1 rdf:type pgo:Node .

_:node1 pgo:label "Person" .

_:node1 pgo:hasNodeProperty _:property1 .

_:property1 pgo:key "name" .

_:property1 pgo:value "Tintin" .

_:node2 rdf:type pgo:Node .

_:node2 pgo:label "Person" .

_:edge3 rdf:type pgo:Edge .

_:edge3 rdf:startNode _:node1 .

_:edge3 rdf:endNode _:node2 .

_:edge3 pgo:hasEdgeProperty _:property3 .

# ...

11 of 44

State of the art

  • Hartig’s transformations [2,3]
    • The user defines a configuration = functions that maps components of the PG (property keys, property values, labels and nodes/edges) to RDF terms
    • The user chooses one approach among two for edge representation for all edges

RDF based approach

RDF-star based approach [2]

11/39

[2] Hartig, O. (2019, September). Foundations to Query Labeled Property Graphs using SPARQL. In SEM4TRA-AMAR@ SEMANTiCS.

[3] Khayatbashi, S., Ferrada, S., & Hartig, O. (2022, June). Converting property graphs to RDF: a preliminary study of the practical impact of different mappings. In Proceedings of the 5th ACM SIGMOD Joint International Workshop on Graph Data Management Experiences & Systems (GRADES) and Network Data Analytics (NDA) (pp. 1-9).

dbpedia:Tintin pgo:label "Person" .

dbpedia:Tintin foaf:name "Tintin" .

dbpedia:Haddock pgo:label "Person" .

dbpedia:Tintin :travelsWith dbpedia:Haddock .

<< dbpedia:Tintin :travelsWith dbpedia:Haddock >>

:since "The crab …" .

dbpedia:Tintin pgo:label "Person" .

dbpedia:Tintin foaf:name "Tintin" .

dbpedia:Haddock pgo:label "Person" .

ex:travelers ex:relation "Travellers" .

ex:travelers ex:traveler dbpedia:Tintin .

ex:travelers ex:traveler dbpedia:Haddock .

ex:travelers ex:since "The crab …"

:Person

name: Tintin

:Person

:travelsWith

since: The crab with the golden claws

12 of 44

State of the art

  • All existing works propose a uniform conversion for all nodes, edges, properties
  • However, this is not always the desired behavior

How to design a mapping language allowing users to produce idiomatic RDF graphs from PGs?

12/39

:Person

name: Tintin

job: Reporter

:Person

name: Haddock

:Animal

name: Snowy

:owns

:travelsWith

since: The crab with the golden claws

_:tintin ex:owns _:snowy .

_:travelers ex:traveler _:tintin .�_:travelers ex:traveler _:haddock .

_:travelers

ex:since "The crab with the golden claws" .

A part of the RDF graph presented earlier

Running example PG

Idiomatic RDF graph = a graph that uses common model structures

13 of 44

Motivation

How to design a mapping language allowing users to produce idiomatic RDF graphs from PGs?

13/39

Most other work

Hartig’s work

Reuse existing ontologies

Adapt existing modeling patterns

Preserve information

*

* Under some conditions

14 of 44

Contributions

  • A low level conversion: PREC-C
  • A schema-based conversion: PRSC
  • An auto-completion engine: Shacled Turtle

14/39

15 of 44

PREC-C: Example

15/39

:Person

name: Tintin

job: Reporter

:Person

name: Haddock

:Animal

name: Snowy

:owns

:travelsWith

since: The crab with� the golden claws

Property graph

Produced RDF graph

Context

(pseudo code)

Model edges as

?source ?edgeIRI ?destination��Model properties as� ?holder ?propertyIRI ?value

PREC = Property graph to RDF graph Experimental Converter�PREC-C = PREC-Context

:travelsWith → model it as

?self ex:traveler ?source

?self ex:traveler ?destination

:owns → ex:owns

since → ex:since

job → schema:job

but model it as

?holder ?propertyIRI ?self

?self schema:name ?value

name on a :Person → foaf:name

name → dbpedia:name

:Animal → dbpedia:Animal

:Person → foaf:Person

_:tintin rdf:type :Person .

_:haddock rdf:type :Person .

_:snowy rdf:type :Animal .

_:snowy :name "Snowy" .

_:tintin :name "Tintin" .

_:haddock :name "Haddock" .

_:tintin :job "Reporter" .

<< _:tintin :travelsWith _:haddock >>

:since "The crab with the golden claws" .

_:tintin :owns _:snowy .

_:tintin :travelsWith _:haddock .

_:tintin rdf:type foaf:Person .

_:haddock rdf:type foaf:Person .

_:snowy rdf:type dbpedia:Animal .

_:snowy dbpedia:name "Snowy" .

_:tintin dbpedia:name "Tintin" .

_:haddock dbpedia:name "Haddock" .

_:travelers ex:traveler _:tintin .�_:travelers ex:traveler _:haddock .

_:snowy dbpedia:name "Snowy" .

_:tintin foaf:name "Tintin" .      

_:haddock foaf:name "Haddock" .      

_:tintin schema:job _:reporter .

_:reporter schema:name "Reporter" .

_:tintin ex:owns _:snowy .

<< _:tintin :travelsWith _:haddock >>

ex:since "The crab with the golden claws" .

_:travelers ex:since "The crab with the golden claws" .

                                  

+

16 of 44

PREC-C: Contexts are RDF graphs

16/39

:Person → foaf:Person

:Animal → dbpedia:Animal

name → dbpedia:name

name on a :Person → foaf:name

job → schema:job

but model it as

?holder ?propertyIRI ?self

?self schema:name ?value

since → ex:since

:owns → ex:owns

:travelsWith → model it as

?self ex:traveler ?source

?self ex:traveler ?destination

Model properties as� ?holder ?propertyIRI ?propertyValue

Model edges as

?source ?edgeIRI ?destination

In the previous slide

In real life

prec:Properties prec:templatedBy prec:DirectTriples .

prec:Edges prec:templatedBy prec:RDFStarOccurrence .

[] a prec:NodeRule ;

prec:label "Person" ;

prec:nodeLabelIRI foaf:Person .

[] a prec:NodeRule ;

prec:label "Animal" ;

prec:nodeLabelIRI dbpedia:Animal .

[] a prec:PropertyRule ;

prec:propertyKey "name" ;

prec:propertyIRI dbpedia:name .

[] a prec:PropertyRule ;

prec:propertyKey "name" ;

prec:label "Person" ; prec:onKind prec:Node ;

prec:propertyIRI foaf:name .

[] a prec:PropertyRule ;

prec:propertyKey "job" ;

prec:propertyIRI schema:job ;

prec:templatedBy [

prec:produces << pvar:holder pvar:propertyIRI pvar:self >> ;

prec:produces << pvar:self schema:name pvar:value >> ;

] .

[] a prec:PropertyRule ;

prec:propertyKey "since" ;

prec:propertyIRI ex:since .

[] a prec:EdgeRule ;

prec:label "owns" ;

prec:edgeIRI ex:owns .

[] a prec:EdgeRule ;

prec:label "travelsWith" ;

prec:templatedBy [

prec:produces << pvar:self ex:traveler pvar:source >> ;

prec:produces << pvar:self ex:traveler pvar:destination >> ;

] .

Terms used in this example:

prec:Properties

prec:templatedBy

prec:DirectTriples

prec:Edges

prec:RDFStarOccurrence

prec:NodeRule

prec:label

prec:nodeLabelIRI

prec:PropertyRule

prec:propertyKey

prec:propertyIRI

prec:produces

prec:onKind

prec:EdgeRule

prec:edgeIRI

pvar:self

pvar:holder

pvar:propertyIRI

pvar:value

pvar:source

pvar:destination

[] a prec:PropertyRule ;

prec:propertyKey "job" ;

prec:propertyIRI schema:job ;

prec:templatedBy [

prec:produces << pvar:holder pvar:propertyIRI pvar:self >> ;

prec:produces << pvar:self schema:name pvar:value >> ;

] .

17 of 44

PREC-C: Design and issues

  • Design:
    • Converts all nodes, edges and properties
    • Can customize how nodes, edges and properties are converted by assigning to rules a new template graph
  • Issues:
    • Big ontology with a lot of terms and concepts (fallback templates, substitutions…)
    • The priority system is brittle

    • Expected to be hard to use and hard to study (esp. reversibility)

17/39

:Person :Animal

name: Enid

race: Werewolf

name on a :Person = foaf:name

name on an :Animal = schema:name

Which one do we pick?

18 of 44

Motivation

How to design a mapping language allowing users to produce idiomatic RDF graphs from PGs?

18/39

Most other work

Hartig’s work

PREC-C

Reuse existing ontologies

Adapt existing modeling patterns

Preserve information

*

?

* Under some conditions

19 of 44

Contributions

  • A low level conversion: PREC-C
  • A schema-based conversion: PRSC
  • An auto-completion engine: Shacled Turtle

19

20 of 44

PRSC: a schema-based conversion

20/39

:Person

name: Tintin

:Person

name: Tintin

job: Reporter

:Person

name: Haddock

:Animal

name: Snowy

:owns

:travelsWith

since: The crab with� the golden claws

:Person

name:

:Animal

name:

:owns

:travelsWith

since:

Running example PG

Schema

PRSC = Property graph to RDF graph Schema-based Converter

You will struggle to pronounce it until you realize you can pronounce it “presc”

:Person

name:

job:

21 of 44

PRSC: The context rises from the schema

21/39

:Person

name:

:Animal

name:

:owns

:travelsWith

since:

Schema

:PersonRule a prec:PRSCNodeRule ;

prec:label "Person" ;

prec:propertyKey "name" ;

prec:produces

:AnimalRule a prec:PRSCNodeRule ;

prec:label "Animal" ;

prec:propertyKey "name" ;

prec:produces

:OwnsRule a prec:PRSCEdgeRule ;

prec:label "owns" ;

prec:produces�

:TravelsWithRule a prec:PRSCEdgeRule ;

prec:label "travelsWith" ;

prec:propertyKey "since" ;

prec:produces

<< pvar:self rdf:type foaf:Person >> ,

<< pvar:self foaf:name "name"^^prec:valueOf >> .

<< pvar:self rdf:type dbpedia:Animal >> ,

<< pvar:self schema:name "name"^^prec:valueOf >> .

� << pvar:source ex:owns pvar:destination >> .

<< pvar:self ex:traveler pvar:source >> ,

<< pvar:self ex:traveler pvar:destination >> ,

<< pvar:self ex:since "since"^^prec:valueOf >> .

PRSC context

22 of 44

PRSC: The output

22/39

:Person

name: Tintin

:Person

name: Haddock

:Animal

name: Snowy

:owns

:travelsWith

since: The crab with� the golden claws

Running example PG

:PersonRule a prec:PRSCNodeRule ;

prec:label "Person" ;

prec:propertyKey "name" ;

prec:produces

<< pvar:self rdf:type foaf:Person >> ,

<< pvar:self foaf:name "name"^^prec:valueOf >> .

:AnimalRule a prec:PRSCNodeRule ;

prec:label "Animal" ;

prec:propertyKey "name" ;

prec:produces

<< pvar:self rdf:type dbpedia:Animal >> ,

<< pvar:self schema:name "name"^^prec:valueOf >> .

:OwnsRule a prec:PRSCEdgeRule ;

prec:label "owns" ;

prec:produces

<< pvar:source ex:owns pvar:destination >> .

:TravelsWithRule a prec:PRSCEdgeRule ;

prec:label "travelsWith" ;

prec:propertyKey "since" ;

prec:produces

<< pvar:self ex:traveler pvar:source >> ,

<< pvar:self ex:traveler pvar:destination >> ,

<< pvar:self ex:since "since"^^prec:valueOf >> .

_:tintin rdf:type foaf:Person .

_:tintin foaf:name "Tintin" .

_:haddock rdf:type foaf:Person .

_:haddock foaf:name "Haddock" .

_:snowy rdf:type dbpedia:Animal .

_:snowy schema:name "Snowy" .

_:tintin ex:owns _:snowy .

_:travelers ex:traveler _:tintin .

_:travelers ex:traveler _:haddock .

_:travelers ex:since

"The crab with the golden claws" .

PRSC context

Produced RDF graph

23 of 44

PRSC: Reversibility

  • Is the conversion operated by PRSC reversible = does it lose any information? It depends on the context!

  • PRSC well-behaved contexts
    • Proved to be reversible
    • Three criteria:
      • “No information loss”
      • “Signature template triple”
      • “Element provenance”

23/39

Well-behaved

contexts

Reversible contexts

All PRSC contexts

24 of 44

PRSC: Well-behaved contexts - No information loss

  • Inside each template graph, each property of the type must have a discriminative template triple.
  • For edges, the source (resp. the destination) must also have a discriminative template triple.

24/39

:Person

givenName: Archibald

familyName: Haddock

:PersonRule

prec:produces

<< pvar:self foaf:name "givenName"^^prec:valueOf >> .

_:haddock foaf:name "Archibald" .

:PersonRule

prec:produces

<< pvar:self foaf:name "givenName"^^prec:valueOf >> ,

<< pvar:self foaf:name "familyName"^^prec:valueOf >> .

_:haddock foaf:name "Archibald" .

_:haddock foaf:name "Haddock" .

:PersonRule

prec:produces

<< pvar:self foaf:givenName "givenName"^^prec:valueOf >> ,

<< pvar:self foaf:familyName "familyName"^^prec:valueOf >> .

_:haddock foaf:givenName "Archibald" .

_:haddock foaf:familyName "Haddock" .

25 of 44

PRSC: Well-behaved contexts - Signature template triple

  • Each template graph must have a template triple that no other template graph has

25/39

:Person

name: Tintin

:Animal

name: Snowy

:PersonRule

prec:produces

<< pvar:self foaf:name "name"^^prec:valueOf >> .

:AnimalRule

prec:produces

<< pvar:self foaf:name "name"^^prec:valueOf >> .

_:tintin foaf:name "Tintin" .

_:snowy foaf:name "Snowy" .

:PersonRule

prec:produces� << pvar:self rdf:type foaf:Person >> ,

<< pvar:self foaf:name "name"^^prec:valueOf >> .

:AnimalRule

prec:produces� << pvar:self rdf:type dbpedia:Animal >> ,

<< pvar:self foaf:name "name"^^prec:valueOf >> .

_:tintin rdf:type foaf:Person .

_:tintin foaf:name "Tintin" .

_:snowy rdf:type dbpedia:Animal .

_:snowy foaf:name "Snowy" .

:PersonRule

prec:produces

<< pvar:self foaf:name "name"^^prec:valueOf >> .

:AnimalRule

prec:produces

<< pvar:self schema:name "name"^^prec:valueOf >> .

_:tintin foaf:name "Tintin" .

_:snowy schema:name "Snowy" .

26 of 44

PRSC: Well-behaved contexts - Element provenance

  • All template triples in all template graphs must have pvar:self

26/39

:Person

name: Tintin

:Person

name: Haddock

:travelsWith

:travelsWith

:TravelsWithRule a prec:PRSCEdgeRule ;

prec:label "travelsWith" ;

prec:produces

<< pvar:source ex:travelsWith pvar:destination >> .

_:tintin ex:travelsWith _:haddock .

“RDF graphs are defined as sets of triples”

:TravelsWithRule a prec:PRSCEdgeRule ;

prec:label "travelsWith" ;

prec:produces

<< pvar:self ex:traveler pvar:source >> ,

<< pvar:self ex:traveler pvar:destination >> .

_:travel1 ex:traveler _:tintin .

_:travel1 ex:traveler _:haddock .

_:travel2 ex:traveler _:tintin .

_:travel2 ex:traveler _:haddock .

27 of 44

PRSC: Reversibility algorithm for well-behaved contexts

  1. Identify the PG type of each RDF blank node
    • Element provenance / Signature template triple
    • See Theorem 3
  2. Identify the RDF triples generated for each PG node and edge
    • Element provenance / Signature template triple
    • See Theorem 4
  3. Populate the properties of each PG node and edge
    • No information loss
    • See Theorem 5

27/39

28 of 44

PRSC: Edge-unique types

28/39

  • Element provenance: “All template triples in all template graphs must have pvar:self
    • With this criterion, all PG edges are converted to an RDF node
  • Edge-unique types: some edge types are meant to be used at most once between two given nodes.
    • Those edges could be represented as single RDF triples without loss of information

:Person

name: Tintin

:Animal

name: Snowy

:owns

:Animal

name: The llama in Prisoners of the sun

29 of 44

PRSC: Edge-unique types

29/39

  • Edge-unique types support: Some edge types may not comply with the “element provenance” criterion if all template triples used for edge unique types comply with the following rules:
    • The source and the destination must be in all template triples.
    • Each triple of the template graph must be distinguishable from all other template triples in the whole context

:Person

name: Tintin

:Animal

name: Snowy

:owns

:Animal

name: The llama in “Prisoners of the sun”

:OwnsEdgeRule a prec:PRSCEdgeRule ;

prec:produces

<< pvar:source ex:owns pvar:destination >> .

_:tintin ex:owns _:snowy .

-> No other template triple is allowed to use ex:owns in predicate position.

PROVED BY THEOREM 7

30 of 44

PRSC: Design and issues

  • Design:
    • Simple system based on schemas
    • Some contexts are proved to be reversible:
      • Well-behaved contexts
      • Edge-unique extension

  • Issues:
    • A given context can only convert a given subset of PGs
    • The schema language is a bit strict: no meta properties, no optional properties, closed types

30/39

31 of 44

Motivation

How to design a mapping language allowing users to produce idiomatic RDF graphs from PGs?

31/39

Most other work

Hartig’s work

PREC-C

PRSC

Reuse existing ontologies

Adapt existing modeling patterns

Preserve information

*

?

*

* Under some conditions

32 of 44

Contributions

  • A low level conversion: PREC-C
  • A schema based conversion: PRSC
  • An auto-completion engine: Shacled Turtle

32/39

33 of 44

Shacled Turtle: What do I write in my context?

  • The PREC ontology is composed of many terms.
  • How to help the user writing contexts?

33/39

Terms used in this presentation:

prec:Properties

prec:templatedBy

prec:DirectTriples

prec:Edges

prec:RDFStarOccurrence

prec:NodeRule

prec:label

prec:nodeLabelIRI

prec:PropertyRule

prec:propertyKey

prec:propertyIRI

prec:onKind

prec:EdgeRule

prec:edgeIRI

pvar:self

pvar:holder

pvar:propertyIRI

pvar:value

pvar:source

pvar:destination

prec:PRSCNodeRule

prec:PRSCEdgeRule

prec:produces

34 of 44

Shacled Turtle: Principle

34/39

35 of 44

Shacled Turtle: How to generate the help?

  • Schemas (RDFS, OWL, SHACL…) describe the expected structure of the graph.
    • In this example: PRSCNodeRules have rdf:type, prec:label, prec:propertyKey and prec:produces.

  • Schemas may also provide textual information: rdfs:label, sh:name, rdfs:comment, sh:description.

  • A generic autocompletion engine, leveraging schemas, could be useful beyond PREC

35/39

36 of 44

Shacled Turtle: Experiments

  • Exercice: convert a text into Turtle using the autocompletion engine
    • Two ontologies: schema.org (hundreds of terms) and foaf (a few dozen of terms, strong inference system)
    • ~30 volunteers
    • Results: disappointing in both cases
      • Users felt restricted -> promote relevant terms instead of filtering irrelevant ones
      • Users want to understand why the engine does some choices -> use Shacled Turtle analysis to improve the descriptions

  • In the context of writing an RML or a PREC mapping (closed ontologies): left for future works

36/39

37 of 44

Conclusion

37/39

Most other work

Hartig’s work

PREC-C

PRSC

Reuse existing ontologies

Uniform conversion

Term mapping

Template graph mapping

Adapt existing modeling patterns

Everything uses the same structure

Everything uses the same structure

Depends on the template graph

No information loss

Studied most of the time

Reversible

Reversible under some conditions

Not studied

Reversible under some conditions

Design a mapping language allowing users to produce idiomatic RDF graphs from PGs

38 of 44

Conclusion

38/39

PREC-C

PRSC

Philosophy

Convert all PGs�Specialized for some nodes, edges and properties

Based on a schema:

only convert PGs with the given nodes and edges

Rules can target

Nodes, edges, properties

Nodes, edges

Ontology complexity

High (terms, constructs)

Lower

Expressivity on properties

Meta properties

Can introduce a blank node for properties

Restricted

Information loss

Not studied

Well-behaved context,

Edge unique extension

Design a mapping language allowing users to produce idiomatic RDF graphs from PGs

39 of 44

Perspectives

PREC-C / PRSC

  • Improve PRSC with PREC-C properties
  • Run a user evaluation
  • Reuse PREC templating system in other transformation systems

Shacled Turtle

  • Improve the tool
  • Experiment on closed ontologies, in particular PREC

39/39

40 of 44

The characterization function κ

40/39

41 of 44

Well-behaved context: Formal definition

41/39

42 of 44

Shacled Turtle - Architecture

42/39

This slide was not used during the defense

43 of 44

Shacled Turtle - Example

43/39

- The range of founder is ex:Person

- ex:PersonShape targets the ex:Person class

- ex:name is a property of ex:PersonShape shape

This slide was not used during the defense

44 of 44

Substitution predicates

44/39

[] a prec:PropertyRule ;

prec:propertyKey "job" ;

prec:propertyIRI schema:job ;

prec:templatedBy [

prec:produces << pvar:holder pvar:propertyIRI pvar:self >> ;

prec:produces << pvar:self schema:name pvar:value >> ;

] .

prec:propertyIRI a prec:SubstitutionPredicate

prec:substitutionTarget pvar:propertyIRI .

[] a prec:PropertyRule ;

prec:propertyKey "job" ;

prec:substitute [

prec:from pvar:propertyIRI

prec:to schema:job

] ;

prec:templatedBy [

prec:produces << pvar:holder pvar:propertyIRI pvar:self >> ;

prec:produces << pvar:self schema:name pvar:value >> ;

] .

This slide was not used during the defense