We would like to thank to our developers Phillipp Häusle and Thibault Gerrier for their
implementation support.
Tyrolean Tourism Knowledge Graph (27M+ facts per crawl from 7 different sources)
MindLab (in progress)
DACH-KG (in progress)
We get the data from various (mostly) propriatery sources, typically in JSON or XML format
Then, we map them to schema.org
The generated RDF data feeds the knowledge graphs and websites as semantic annotations
We needed a scalable mapping solution
We looked around, made some preliminary tests and found RML very suitable for this task
But soon we faced some challenges due to our uses cases, so we decided to implement a new mapper
[{
"name":"Gschwandtkopflifte",
"type":"SkiResort",
"contactDetails":[
{
"address":{
"street":"Gschwandtkopf 700",
"postcode":"6100",
"city":"Seefeld",
"type":"Office"
}
},
{
"address":{
"street":"Gschwandtkopf 702",
"postcode":"6100",
"city":"Seefeld",
"type":"Lifte"
}
}
]
}]
Only XML and JSON as source format (CSV support is coming)
No Named Graphs
No JOIN Support
Only javascript functions
The language tag can be given to the mapper as an option and this tag is then attached to all mapped string literals
Particularly useful for data from the tourism sector
All applicable tests passed.
Implementing joins affected the performance drastically.
So we did some optimizations...
rr:subjectMap [ rr:template "http://example.com/resource/student_{ID}";
rr:class <http://example.com/ontology/Student>;
];
rr:predicateObjectMap [
rr:predicate foaf:name ;
rr:objectMap [ rml:reference "Name" ];
] ;
rr:predicateObjectMap [
rr:predicate <http://example.com/ontology/practises> ;
rr:objectMap [
a rr:RefObjectMap ;
rr:parentTriplesMap <TriplesMap2>;
rr:joinCondition [
rr:child "Sport" ;
rr:parent "ID" ;
]
];
];
* Currently, there is an issue with blank node naming due to the jsonld library.
Thank you for your attention!
We are looking forward to new cooperation with the Knowledge Graph community!