<?xml version="1.0" encoding="utf-8" ?>
<Silk>
    <Prefix id="rdf" namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#" />
    <Prefix id="rdfs" namespace="http://www.w3.org/2000/01/rdf-schema#" />
    <Prefix id="foaf" namespace="http://xmlns.com/foaf/0.1/" />
    <Prefix id="owl" namespace="http://www.w3.org/2002/07/owl#" />
    <Prefix id="dbpedia" namespace="http://dbpedia.org/ontology/" />
    <Prefix id="dc" namespace="http://purl.org/dc/terms/" />
    <Prefix id="movie" namespace="http://data.linkedmdb.org/resource/movie/" />

    <DataSource id="dbpedia">
        <EndpointURI>http://sparql-server1/sparql</EndpointURI>
        <Graph>http://dbpedia.org</Graph>
        <DoCache>1</DoCache>
    </DataSource>

    <DataSource id="linkedmdb">
        <EndpointURI>http://sparql-server2/sparql</EndpointURI>
        <Graph>http://data.linkedmdb.org</Graph>
        <DoCache>1</DoCache>
    </DataSource>

    <Interlink id="movies">
        <LinkType>owl:sameAs</LinkType>

        <SourceDataset dataSource="dbpedia" var="a">
            <RestrictTo>
                ?a rdf:type dbpedia:Film
            </RestrictTo>
        </SourceDataset>

        <TargetDataset dataSource="linkedmdb" var="b">
            <RestrictTo>
                ?b rdf:type movie:film
            </RestrictTo>
        </TargetDataset>

        <PreMatchingDefinition sourcePath="?a/rdfs:label" hitLimit="10">
            <Index targetPath="?b/rdfs:label" />
            <Index targetPath="?b/dc:title" />
        </PreMatchingDefinition>

        <LinkCondition>
            <AVG>
                <MAX>
                    <Compare metric="jaroSimilarity">
                        <Param name="str1" path="?a/rdfs:label[@lang = 'en']" />
                        <Param name="str2" path="?b/rdfs:label" />
                    </Compare>
                    <Compare metric="jaroSimilarity" optional="1">
                        <Param name="str1" path="?a/rdfs:label[@lang = 'en']" />
                        <Param name="str2" path="?b/dc:title" />
                    </Compare>
                    <Compare metric="jaroSimilarity" optional="1">
                        <Param name="str1" path="?a/foaf:name" />
                        <Param name="str2" path="?b/dc:title" />
                    </Compare>
                </MAX>
                <MAX optional="1">
                    <Compare metric="jaroSimilarity" optional="1">
                        <Param name="str1" path="?a/dbpedia:director/foaf:name" />
                        <Param name="str2" path="?b/movie:director/movie:director_name" />
                    </Compare>
                    <Compare metric="jaroSimilarity" optional="1">
                        <Param name="str1" path="?a/dbpedia:director/rdfs:label" />
                        <Param name="str2" path="?b/movie:director/movie:director_name" />
                    </Compare>
                    <Compare metric="jaroSimilarity" optional="1">
                        <Param name="str1" path="?a/dbpedia:director" />
                        <Param name="str2" path="?b/movie:director/movie:director_name" />
                    </Compare>
                    <Compare metric="jaroSimilarity" optional="1">
                        <Param name="str1">
                            <Transform function="regexReplace">
                                <Param name="string">
                                    <Transform function="stripURIPrefix">
                                        <Param name="string" path="?a/dbpedia:director" />
                                    </Transform>
                                </Param>
                                <Param name="regex" value="_" />
                                <Param name="replace" value=" " />
                            </Transform>
                        </Param>
                        <Param name="str2" path="?b/movie:director/movie:director_name" />
                    </Compare>
                </MAX>
                <MAX optional="1">
                    <Compare metric="dateSimilarity" optional="1">
                        <Param name="date1" path="?a/dbpedia:releaseDate" />
                        <Param name="date2" path="?b/dc:date" />
                        <Param name="max_diff" value="20" />
                    </Compare>
                    <Compare metric="dateSimilarity" optional="1">
                        <Param name="date1" path="?a/dbpedia:releaseDate" />
                        <Param name="date2" path="?b/movie:initial_release_date" />
                        <Param name="max_diff" value="20" />
                    </Compare>
                </MAX>
                <Compare metric="numSimilarity" optional="1">
                    <Param name="num1" path="?a/dbpedia:runtime" />
                    <Param name="num2" path="?b/movie:runtime" />
                </Compare>
            </AVG>
        </LinkCondition>

        <Thresholds accept="0.9" verify="0.7" />
        <Limit max="1" method="metric_value" />
        <Output acceptedLinks="lmdb_accepted_links.n3" verifyLinks="lmdb_verify_links.n3" mode="truncate" />
    </Interlink>
</Silk>

