Aligning powerplants on Enipedia with their Wikipedia articles

From Enipedia
Jump to: navigation, search

Below is a first attempt at using the Silk Link Discovery Framework to help provide links between Enipedia articles and the corresponding Wikipedia articles. This has been superceded by work on the Enipedia Power Plant Dataset Reconciliation API in combination with custom R code that traverses the hierarchical categories starting at

[edit] What does this do?

Silk helps to link data on your SPARQL endpoint to data on someone else's SPARQL endpoint. This greatly help with the Linking aspect of the Linking Open Data movement. It does this by querying two SPARQL endpoints and then doing some sort of intelligent matching between the objects it gets returned. In practical terms, this is a great way for us to fill in links from Enipedia pages to Wikipedia pages.


  • Find all power plants on Enipedia that do not have a Wikipedia page specified.
  • Try to match this with everything that is a type of dbpedia-owl:PowerStation on DBpedia.
  • Matches >= 85% are written to file.
  • Results are written to Enipedia page using a bot (some manual supervision is needed even for high scores).

[edit] What else can this do?

We should use this to align the other datasets that we have such as the EPRTR and EU-ETS. This will never give us a complete 1:1 matching, although we can autogenerate some tables of suggested links.

[edit] Code

<?xml version="1.0" encoding="utf-8" ?>
	<!--These are the prefixes used for the queries below-->
		<Prefix id="rdf" namespace="" />
		<Prefix id="rdfs" namespace="" />
		<Prefix id="owl" namespace="" />
		<Prefix id="cat" namespace="" />
		<Prefix id="prop" namespace="" />
		<Prefix id="dbpedia-owl" namespace="" />

	<!--These are the SPARQL endpoints that will be queried-->

		<!--Talk to Enipedia-->
		<DataSource id="enipedia" type="sparqlEndpoint">
			<Param name="endpointURI" value="" />

		<!--Talk to DBpedia-->
		<DataSource id="dbpedia" type="sparqlEndpoint">
			<Param name="endpointURI" value="" />
			<Param name="graph" value="" />

		<Interlink id="eni">

			<!--This is where the query to Enipedia is built-->
			<!--get us everything that is a powerplant, which does not have a Wikipedia page specified-->			
			<SourceDataset dataSource="enipedia" var="a">
				?a rdf:type cat:Powerplant .
				OPTIONAL{?a prop:Wikipedia_page ?wikipediaPage} . 
				FILTER(!bound(?wikipediaPage)) . 

			<!--This is where the query to DBpedia is built-->
			<!--get us everything that is a type of dbpedia-owl:PowerStation-->
			<TargetDataset dataSource="dbpedia" var="b">
				?b rdf:type dbpedia-owl:PowerStation .

			<!-- compare the rdfs:label found for variables ?a and ?b -->
				<Aggregate type="max">
					<Compare metric="jaroWinkler">
						<TransformInput function="lowerCase">
							<Input path="?a/rdfs:label" />
						<TransformInput function="lowerCase">
							<Input path="?b/rdfs:label" />

			<!--don't show values below 85%-->
			<Filter threshold="0.85" />

				<!--if confidence between 85% and 99%, put in eni_wiki_verify_links.xml file-->
				<Output maxConfidence="0.99" type="file" >
					<Param name="file" value="eni_wiki_verify_links.xml"/>
					<Param name="format" value="alignment"/>

				<!--if confidence above 99%, put in eni_wiki_accept_links.xml file-->
				<Output minConfidence="0.99" type="file">
					<Param name="file" value="eni_wiki_accepted_links.xml"/>
					<Param name="format" value="alignment"/>
Personal tools