├── .classpath ├── .github └── workflows │ └── maven.yml ├── .gitignore ├── .project ├── LICENSE.txt ├── README.md ├── build.xml ├── licenses └── sesame.LICENSE.txt ├── pom.xml ├── project-repository ├── edu │ └── mit │ │ └── simile │ │ └── butterfly │ │ ├── 1.0.1 │ │ ├── butterfly-1.0.1.jar │ │ ├── butterfly-1.0.1.jar.md5 │ │ ├── butterfly-1.0.1.jar.sha1 │ │ ├── butterfly-1.0.1.pom │ │ ├── butterfly-1.0.1.pom.md5 │ │ └── butterfly-1.0.1.pom.sha1 │ │ ├── maven-metadata.xml │ │ ├── maven-metadata.xml.md5 │ │ └── maven-metadata.xml.sha1 ├── net │ └── sf │ │ └── opencsv │ │ └── opencsv │ │ ├── 2.4-SNAPSHOT │ │ ├── maven-metadata.xml │ │ ├── maven-metadata.xml.md5 │ │ ├── maven-metadata.xml.sha1 │ │ ├── opencsv-2.4-20180807.163813-1.jar │ │ ├── opencsv-2.4-20180807.163813-1.jar.md5 │ │ ├── opencsv-2.4-20180807.163813-1.jar.sha1 │ │ ├── opencsv-2.4-20180807.163813-1.pom │ │ ├── opencsv-2.4-20180807.163813-1.pom.md5 │ │ └── opencsv-2.4-20180807.163813-1.pom.sha1 │ │ ├── maven-metadata.xml │ │ ├── maven-metadata.xml.md5 │ │ └── maven-metadata.xml.sha1 └── org │ ├── openrefine │ └── openrefine │ │ ├── 2.8 │ │ ├── openrefine-2.8.jar │ │ ├── openrefine-2.8.jar.md5 │ │ ├── openrefine-2.8.jar.sha1 │ │ ├── openrefine-2.8.pom │ │ ├── openrefine-2.8.pom.md5 │ │ └── openrefine-2.8.pom.sha1 │ │ ├── 3.0 │ │ ├── openrefine-3.0.jar │ │ ├── openrefine-3.0.jar.md5 │ │ ├── openrefine-3.0.jar.sha1 │ │ ├── openrefine-3.0.pom │ │ ├── openrefine-3.0.pom.md5 │ │ └── openrefine-3.0.pom.sha1 │ │ ├── 3.1 │ │ ├── openrefine-3.1.jar │ │ ├── openrefine-3.1.jar.md5 │ │ ├── openrefine-3.1.jar.sha1 │ │ └── openrefine-3.1.pom │ │ ├── 3.2-beta │ │ ├── openrefine-3.2-beta.jar │ │ ├── openrefine-3.2-beta.jar.md5 │ │ ├── openrefine-3.2-beta.jar.sha1 │ │ ├── openrefine-3.2-beta.pom │ │ ├── openrefine-3.2-beta.pom.md5 │ │ └── openrefine-3.2-beta.pom.sha1 │ │ ├── 3.2 │ │ ├── openrefine-3.2.jar │ │ ├── openrefine-3.2.jar.md5 │ │ ├── openrefine-3.2.jar.sha1 │ │ ├── openrefine-3.2.pom │ │ ├── openrefine-3.2.pom.md5 │ │ └── openrefine-3.2.pom.sha1 │ │ ├── 3.3 │ │ ├── openrefine-3.3.jar │ │ ├── openrefine-3.3.jar.md5 │ │ ├── openrefine-3.3.jar.sha1 │ │ ├── openrefine-3.3.pom │ │ ├── openrefine-3.3.pom.md5 │ │ └── openrefine-3.3.pom.sha1 │ │ ├── maven-metadata-local.xml │ │ ├── maven-metadata-local.xml.md5 │ │ ├── maven-metadata-local.xml.sha1 │ │ ├── maven-metadata.xml │ │ ├── maven-metadata.xml.md5 │ │ └── maven-metadata.xml.sha1 │ └── shaded │ └── apache │ ├── any23 │ └── apache-any23-shaded-core │ │ ├── 2.3 │ │ ├── apache-any23-shaded-core-2.3.jar │ │ ├── apache-any23-shaded-core-2.3.jar.md5 │ │ ├── apache-any23-shaded-core-2.3.jar.sha1 │ │ ├── apache-any23-shaded-core-2.3.pom │ │ ├── apache-any23-shaded-core-2.3.pom.md5 │ │ └── apache-any23-shaded-core-2.3.pom.sha1 │ │ ├── maven-metadata-local.xml │ │ ├── maven-metadata-local.xml.md5 │ │ └── maven-metadata-local.xml.sha1 │ └── jena │ └── jena-shaded-arq │ ├── 3.8.0 │ ├── jena-shaded-arq-3.8.0.jar │ ├── jena-shaded-arq-3.8.0.jar.md5 │ ├── jena-shaded-arq-3.8.0.jar.sha1 │ ├── jena-shaded-arq-3.8.0.pom │ ├── jena-shaded-arq-3.8.0.pom.md5 │ └── jena-shaded-arq-3.8.0.pom.sha1 │ ├── 3.9.0 │ ├── jena-shaded-arq-3.9.0.jar │ ├── jena-shaded-arq-3.9.0.jar.md5 │ ├── jena-shaded-arq-3.9.0.jar.sha1 │ ├── jena-shaded-arq-3.9.0.pom │ ├── jena-shaded-arq-3.9.0.pom.md5 │ └── jena-shaded-arq-3.9.0.pom.sha1 │ ├── maven-metadata-local.xml │ ├── maven-metadata-local.xml.md5 │ └── maven-metadata-local.xml.sha1 ├── src ├── assembly │ └── module.xml ├── main │ ├── java │ │ └── org │ │ │ └── deri │ │ │ └── grefine │ │ │ ├── rdf │ │ │ ├── CellBlankNode.java │ │ │ ├── CellLiteralNode.java │ │ │ ├── CellNode.java │ │ │ ├── CellResourceNode.java │ │ │ ├── ConstantBlankNode.java │ │ │ ├── ConstantLiteralNode.java │ │ │ ├── ConstantResourceNode.java │ │ │ ├── Link.java │ │ │ ├── Node.java │ │ │ ├── NodeResolver.java │ │ │ ├── Prefix.java │ │ │ ├── RdfSchema.java │ │ │ ├── ResourceNode.java │ │ │ ├── Util.java │ │ │ ├── app │ │ │ │ ├── ApplicationContext.java │ │ │ │ └── InitializationCommand.java │ │ │ ├── commands │ │ │ │ ├── AddPrefixCommand.java │ │ │ │ ├── AddPrefixFromFileCommand.java │ │ │ │ ├── CodeResponse.java │ │ │ │ ├── GetDefaultPrefixesCommand.java │ │ │ │ ├── PreviewRdfCommand.java │ │ │ │ ├── PreviewRdfValueExpressionCommand.java │ │ │ │ ├── RdfCommand.java │ │ │ │ ├── RefreshPrefixCommand.java │ │ │ │ ├── RemovePrefixCommand.java │ │ │ │ ├── SaveBaseURICommand.java │ │ │ │ ├── SavePrefixesCommand.java │ │ │ │ ├── SaveRdfSchemaCommand.java │ │ │ │ ├── SuggestPrefixUriCommand.java │ │ │ │ └── SuggestTermCommand.java │ │ │ ├── exporters │ │ │ │ └── RdfExporter.java │ │ │ ├── expr │ │ │ │ ├── RdfBinder.java │ │ │ │ ├── functions │ │ │ │ │ └── strings │ │ │ │ │ │ └── Urlify.java │ │ │ │ └── util │ │ │ │ │ └── RdfExpressionUtil.java │ │ │ ├── operations │ │ │ │ └── SaveRdfSchemaOperation.java │ │ │ ├── utils │ │ │ │ └── HttpUtils.java │ │ │ └── vocab │ │ │ │ ├── IPredefinedVocabularyManager.java │ │ │ │ ├── IVocabularySearcher.java │ │ │ │ ├── PrefixExistException.java │ │ │ │ ├── PrefixManager.java │ │ │ │ ├── RDFNode.java │ │ │ │ ├── RDFSClass.java │ │ │ │ ├── RDFSProperty.java │ │ │ │ ├── SearchResultItem.java │ │ │ │ ├── Vocabulary.java │ │ │ │ ├── VocabularyImportException.java │ │ │ │ ├── VocabularyImporter.java │ │ │ │ ├── VocabularyIndexException.java │ │ │ │ ├── VocabularySaveException.java │ │ │ │ └── imp │ │ │ │ ├── PredefinedVocabularyManager.java │ │ │ │ ├── VocabularySearcher.java │ │ │ │ ├── predefined_vocabs.tsv │ │ │ │ └── prefixes.txt │ │ │ └── reconcile │ │ │ ├── GRefineServiceManager.java │ │ │ ├── ServiceRegistry.java │ │ │ ├── commands │ │ │ ├── AbstractAddServiceCommand.java │ │ │ ├── AddServiceCommand.java │ │ │ ├── AddStanbolServiceCommand.java │ │ │ ├── InitializationCommand.java │ │ │ ├── InitializeServicesCommand.java │ │ │ └── UploadFileAndAddServiceCommand.java │ │ │ ├── model │ │ │ ├── AbstractReconciliationService.java │ │ │ ├── ReconciliationCandidate.java │ │ │ ├── ReconciliationRequest.java │ │ │ ├── ReconciliationRequestContext.java │ │ │ ├── ReconciliationResponse.java │ │ │ ├── ReconciliationService.java │ │ │ ├── ReconciliationStanbolSite.java │ │ │ └── SearchResultItem.java │ │ │ ├── rdf │ │ │ ├── RdfReconciliationService.java │ │ │ ├── endpoints │ │ │ │ ├── PlainSparqlQueryEndpoint.java │ │ │ │ ├── QueryEndpoint.java │ │ │ │ ├── QueryEndpointFactory.java │ │ │ │ └── QueryEndpointImpl.java │ │ │ ├── executors │ │ │ │ ├── DumpQueryExecutor.java │ │ │ │ ├── QueryExecutor.java │ │ │ │ ├── RemoteQueryExecutor.java │ │ │ │ └── VirtuosoRemoteQueryExecutor.java │ │ │ └── factories │ │ │ │ ├── AbstractSparqlQueryFactory.java │ │ │ │ ├── BigOwlImSparqlQueryFactory.java │ │ │ │ ├── JenaTextSparqlQueryFactory.java │ │ │ │ ├── PlainSparqlQueryFactory.java │ │ │ │ ├── PreviewResourceCannedQuery.java │ │ │ │ ├── Rdf4jTextSparqlQueryFactory.java │ │ │ │ ├── SparqlQueryFactory.java │ │ │ │ ├── VirtuosoSparqlQueryFactory.java │ │ │ │ └── files │ │ │ │ └── preview_properties.properties │ │ │ └── util │ │ │ ├── GRefineJsonUtilities.java │ │ │ ├── GRefineJsonUtilitiesImpl.java │ │ │ ├── PrefixManager.java │ │ │ ├── RdfUtilities.java │ │ │ ├── RdfUtilitiesImpl.java │ │ │ ├── ResultSetWrappingUtil.java │ │ │ └── StringUtils.java │ └── resources │ │ ├── files │ │ ├── prefixes │ │ └── preview_properties.properties │ │ ├── module │ │ ├── MOD-INF │ │ │ ├── controller.js │ │ │ └── module.properties │ │ ├── images │ │ │ ├── Thumbs.db │ │ │ ├── add.png │ │ │ ├── arrow-end.png │ │ │ ├── arrow-start.png │ │ │ ├── collapsed.png │ │ │ ├── configure.png │ │ │ ├── delete.jpg │ │ │ ├── delete.png │ │ │ ├── expanded.png │ │ │ ├── import.gif │ │ │ ├── information.png │ │ │ ├── no.png │ │ │ ├── questionMarkIcon.jpg │ │ │ ├── questionMarkIcon2.jpg │ │ │ ├── refresh.jpg │ │ │ ├── spinner.gif │ │ │ ├── stanbol.png │ │ │ └── yes.png │ │ ├── langs │ │ │ ├── translation-default.json │ │ │ ├── translation-en.json │ │ │ └── translation-it.json │ │ ├── scripts │ │ │ ├── common.js │ │ │ ├── dialogs │ │ │ │ ├── new-prefix-widget.html │ │ │ │ ├── rdf-schema-alignment.html │ │ │ │ └── rdf-schema-manage-vocabs-widget.html │ │ │ ├── externals │ │ │ │ └── jquery.form.js │ │ │ ├── menu-bar-extensions.js │ │ │ ├── new-prefix-widget.html │ │ │ ├── rdf-data-table-view.js │ │ │ ├── rdf-schema-alignment-ui-link.js │ │ │ ├── rdf-schema-alignment-ui-node.js │ │ │ ├── rdf-schema-alignment.js │ │ │ ├── rdf-schema-manage-vocabs-widget.js │ │ │ ├── rdf-schema-new-prefix-widget.js │ │ │ ├── rdf-schema-vocabulary-manager.js │ │ │ ├── rdf-service-dialog.html │ │ │ ├── sparql-service-dialog.html │ │ │ ├── stanbol-service.html │ │ │ └── suggestterm.suggest.js │ │ └── styles │ │ │ ├── flyout.css │ │ │ ├── rdf-reconcile-service.css │ │ │ └── rdf-schema-alignment-dialog.css │ │ └── templates │ │ ├── entity_preview.vt │ │ ├── property_preview.vt │ │ ├── resource_preview.vt │ │ ├── resource_preview_template.vt │ │ └── type_preview.vt └── test │ ├── java │ ├── ProjectFake.java │ └── org │ │ └── deri │ │ └── grefine │ │ ├── rdf │ │ ├── CellBlankNodeTest.java │ │ ├── CellLiteralNodeTest.java │ │ ├── CellResourceNodeTest.java │ │ ├── ConstantBlankNodeTest.java │ │ ├── ConstantLiteralNodeTest.java │ │ ├── ConstantResourceNodeTest.java │ │ ├── LinkTest.java │ │ ├── RdfSchemaSerializationTest.java │ │ ├── RdfSchemaTest.java │ │ ├── exporters │ │ │ ├── RdfExporterFacultyDataTest.java │ │ │ ├── RdfExporterMultiRootNodesTest.java │ │ │ ├── RdfExporterPaymentDataTest.java │ │ │ └── RdfExporterTest.java │ │ └── vocab │ │ │ ├── AddPrefixCommandTest.java │ │ │ ├── AddPrefixTest.java │ │ │ └── ImportPrefixTest.java │ │ ├── reconcile │ │ ├── GRefineServiceManagerTest.java │ │ ├── endpoints │ │ │ ├── JenaTextSparqlEndpointTest.java │ │ │ └── PlainSparqlEndpointTest.java │ │ ├── executors │ │ │ ├── JenaTextSparqlQueryExecutorTest.java │ │ │ ├── PlainSparqlQueryExecutorTest.java │ │ │ └── Rdf4jTextSparqlQueryExecutorTest.java │ │ ├── factories │ │ │ ├── BigOwlImSparqlQueryFactoryTest.java │ │ │ ├── JenaTextSparqlQueryFactoryTest.java │ │ │ ├── PlainSparqlQueryFactoryTest.java │ │ │ ├── PreviewResourceCannedQueryTest.java │ │ │ ├── VirtuosoSparqlQueryFactoryTest.java │ │ │ └── files │ │ │ │ ├── preview_properties.properties │ │ │ │ └── sample.rdf │ │ └── files │ │ │ ├── derians.rdf │ │ │ ├── factbook-countries.rdf │ │ │ ├── films.ttl │ │ │ ├── foaf.rdf │ │ │ └── sample.ttl │ │ └── util │ │ └── TestUtils.java │ └── resources │ ├── Thumbs.db │ ├── non-unit-testing.xml │ ├── org │ └── deri │ │ └── grefine │ │ ├── rdf │ │ └── resources │ │ │ └── rdfschema-payment.csv │ │ ├── reconcile │ │ └── resources │ │ │ ├── films.ttl │ │ │ ├── preview_properties.properties │ │ │ └── sample.rdf │ │ └── vocab │ │ └── resources │ │ └── foaf.rdf │ ├── rdfschema-payment.rdf │ ├── rdfschema1.png │ ├── rdfschema2.png │ ├── reconcile-test-suite.xml │ ├── test1.xlsx │ ├── test2.xlsx │ └── testng.xml └── website ├── .htaccess ├── content ├── 404.html ├── docs.html ├── dump-recon.html ├── extResources.html ├── faq.html ├── home-intro.html ├── home-text.html ├── installation.html ├── publications.html ├── rdf-export-docs.html ├── rdf-export.html ├── reconciliation-docs.html ├── requirements.html ├── search-recon-doc.html ├── showcases.html ├── sindice-docs.html ├── sindice-recon.html ├── sparql-recon-doc.html ├── sparql-recon.html ├── support-dev.html └── team.html ├── files ├── dump │ ├── Thumbs.db │ └── screenshots │ │ ├── Thumbs.db │ │ ├── add-service.png │ │ ├── details.png │ │ ├── preview.png │ │ ├── reconciliation.png │ │ ├── results.png │ │ └── universities.png ├── export │ └── screenshots │ │ ├── Thumbs.db │ │ ├── earners.png │ │ ├── export.png │ │ ├── node.png │ │ ├── operation.png │ │ ├── preview.png │ │ └── schema.png ├── images │ ├── Thumbs.db │ ├── preview-fb.png │ └── reconcile-fb.png ├── installation │ ├── Thumbs.db │ ├── verify.png │ └── workspace.png ├── sindice │ ├── derians.csv │ └── screenshots │ │ ├── Thumbs.db │ │ ├── add-service-2.png │ │ ├── add-service.png │ │ ├── datasets.png │ │ ├── derians.png │ │ ├── discover_datasets.png │ │ ├── reconciliation.png │ │ └── results.png └── sparql │ ├── GDPS.csv │ └── screenshots │ ├── Thumbs.db │ ├── add-service.png │ ├── autocomplete.png │ ├── details.png │ ├── gdps.png │ ├── popup.png │ ├── reconciliation.png │ └── results.png ├── grefine-stuff.css ├── images ├── Thumbs.db ├── button-dark-whitebg.png ├── button-dark.png ├── favicon.png ├── icon_attention.png ├── info.png ├── lidrc-logo.png ├── nuig-logo.png ├── number1.png ├── number2.png ├── number3.png ├── number4.png ├── number5.png ├── number6.png ├── screenshots │ ├── Thumbs.db │ ├── schema.png │ └── schema3.png ├── sfi-logo.png ├── skeleton_example_annotated.png ├── tabs-dark.png ├── tabs.png └── uri_expression.png ├── index.php └── style.css /.github/workflows/maven.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build a Java project with Maven 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven 3 | 4 | name: Java CI with Maven 5 | 6 | on: 7 | push: 8 | branches: [ main ] 9 | pull_request: 10 | branches: [ main ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Set up JDK 1.11 20 | uses: actions/setup-java@v1 21 | with: 22 | java-version: 1.11 23 | - name: Build with Maven 24 | run: mvn -B package --file pom.xml 25 | - name: Test with Maven 26 | run: mvn -B test --file pom.xml 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.class 3 | *.lock 4 | *.DS_Store 5 | module/MOD-INF/classes/* 6 | target 7 | .idea 8 | output 9 | tree 10 | tmp 11 | tmp_VocabularySearchRelatedCommandsTest 12 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | grefine-rdf-extension 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.wst.common.project.facet.core.builder 10 | 11 | 12 | 13 | 14 | org.eclipse.jdt.core.javabuilder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.wst.common.project.facet.core.nature 22 | 23 | 24 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | /* 2 | * External Licenses 3 | */ 4 | 5 | See the 'licenses' directory for a list of the licenses for the libraries we depend on, 6 | ordered here by license: 7 | 8 | Sesame 9 | (c)Copyright Aduna (http://www.aduna-software.com/) 2001-2007 10 | http://www.openrdf.org/license.jsp 11 | 12 | Anything To Triples (any23) 13 | Apache License 14 | http://www.apache.org/licenses/LICENSE-2.0.html 15 | 16 | Lucene 3.0.1 17 | Apache License 18 | http://www.apache.org/licenses/LICENSE-2.0.html 19 | 20 | xercesImpl 2.7.1 21 | Apache License 22 | http://www.apache.org/licenses/LICENSE-2.0.html 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Build Status](https://github.com/stkenny/grefine-rdf-extension/workflows/Java%20CI%20with%20Maven/badge.svg) 2 | 3 | This project adds a graphical user interface(GUI) for exporting data of OpenRefine projects in RDF format. The export is based on mapping the data to a template graph using the GUI. It also provides a service for reconciling data against SPARQL endpoints (e.g., DBpedia). 4 | 5 | ## DOWNLOAD 6 | 7 | ### Latest release 8 | 9 | [RDF Extension v1.6.0](https://github.com/stkenny/grefine-rdf-extension/releases/download/v1.6.0/rdf-extension-1.6.0.zip) 10 | 11 | ## INSTALL 12 | 13 | ### Prerequisites 14 | 15 | You need to have Java and OpenRefine installed on your machine. 16 | * Java 11 17 | * OpenRefine 3.9 18 | 19 | ### From compiled release 20 | 21 | 1. If it does not exist, create a folder named **extensions/rdf-extension** under your user workspace directory for OpenRefine. The workspace should be located in the following places depending on your operating system (see [OpenRefine FAQ](https://github.com/OpenRefine/OpenRefine/wiki/FAQ-Where-Is-Data-Stored) for more details): 22 | * Linux ~/.local/share/OpenRefine 23 | * Windows C:/Documents and Settings//Application Data/OpenRefine OR C:/Documents and Settings//Local Settings/Application Data/OpenRefine 24 | * Mac OSX ~/Library/Application Support/OpenRefine 25 | 2. Unzip the downloaded release (ensuring it is a rdf-extension-x.x.x-*.zip **not** a source code .zip or tar.gz) into the extensions/rdf-extension folder (step 1). 26 | It is recommended that you have an active internet connection during the first run of the extension, as it will try to download a set of predefined vocabularies (rdf, rdfs, owl and foaf). You can add them later also. 27 | 3. Restart OpenRefine (OpenRefine usage instructions are provided in the [user documentation](https://github.com/OpenRefine/OpenRefine/wiki/Installation-Instructions#release-version)) 28 | 29 | ### To build from source 30 | - Clone this extension repository to your local machine 31 | - Checkout the main branch `git checkout main` 32 | - Run `mvn clean compile` and `mvn assembly:single` 33 | - Unpack the zip file created in the `target` directory to a sub-directory of the extensions folder of OpenRefine e.g., `extensions/rdf-extension` 34 | 35 | If you have previously installed the extension you will need to replace it in the OpenRefine extensions directory with the newly built version. 36 | 37 | ## Documentation 38 | * [Documentation Wiki](https://github.com/stkenny/grefine-rdf-extension/wiki) 39 | -------------------------------------------------------------------------------- /build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /licenses/sesame.LICENSE.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/licenses/sesame.LICENSE.txt -------------------------------------------------------------------------------- /project-repository/edu/mit/simile/butterfly/1.0.1/butterfly-1.0.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/project-repository/edu/mit/simile/butterfly/1.0.1/butterfly-1.0.1.jar -------------------------------------------------------------------------------- /project-repository/edu/mit/simile/butterfly/1.0.1/butterfly-1.0.1.jar.md5: -------------------------------------------------------------------------------- 1 | d2f7328d8b863d02cc979967ea10541d -------------------------------------------------------------------------------- /project-repository/edu/mit/simile/butterfly/1.0.1/butterfly-1.0.1.jar.sha1: -------------------------------------------------------------------------------- 1 | 606d4bf020f94195fc23e479d36cd65d1a380cdd -------------------------------------------------------------------------------- /project-repository/edu/mit/simile/butterfly/1.0.1/butterfly-1.0.1.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | edu.mit.simile 6 | butterfly 7 | 1.0.1 8 | 9 | -------------------------------------------------------------------------------- /project-repository/edu/mit/simile/butterfly/1.0.1/butterfly-1.0.1.pom.md5: -------------------------------------------------------------------------------- 1 | d85122c27cb5dd29b5c1ce5675f1e01d -------------------------------------------------------------------------------- /project-repository/edu/mit/simile/butterfly/1.0.1/butterfly-1.0.1.pom.sha1: -------------------------------------------------------------------------------- 1 | 1d122e928ff0671d7032457090876fc790524d84 -------------------------------------------------------------------------------- /project-repository/edu/mit/simile/butterfly/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | edu.mit.simile 4 | butterfly 5 | 6 | 1.0.1 7 | 8 | 1.0.1 9 | 10 | 20180430090118 11 | 12 | 13 | -------------------------------------------------------------------------------- /project-repository/edu/mit/simile/butterfly/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 339b7bbbbe3517eba6705da813dcdf15 -------------------------------------------------------------------------------- /project-repository/edu/mit/simile/butterfly/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | 4ff51180c6f18e00e3d21351852f8be4ba3662f3 -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/2.4-SNAPSHOT/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | net.sf.opencsv 4 | opencsv 5 | 2.4-SNAPSHOT 6 | 7 | 8 | 20180807.163813 9 | 1 10 | 11 | 20180807163813 12 | 13 | 14 | jar 15 | 2.4-20180807.163813-1 16 | 20180807163813 17 | 18 | 19 | pom 20 | 2.4-20180807.163813-1 21 | 20180807163813 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/2.4-SNAPSHOT/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | a2aaf7660ab1a9b977c1f863366bd2aa -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/2.4-SNAPSHOT/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | e6df86e7f03f7f242a4b364d51bb248a532c81f8 -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/2.4-SNAPSHOT/opencsv-2.4-20180807.163813-1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/project-repository/net/sf/opencsv/opencsv/2.4-SNAPSHOT/opencsv-2.4-20180807.163813-1.jar -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/2.4-SNAPSHOT/opencsv-2.4-20180807.163813-1.jar.md5: -------------------------------------------------------------------------------- 1 | da76ec29b9a4e37a5c00f8a14478e730 -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/2.4-SNAPSHOT/opencsv-2.4-20180807.163813-1.jar.sha1: -------------------------------------------------------------------------------- 1 | 60532261455d4a06634e6747f9e59a9536babd6a -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/2.4-SNAPSHOT/opencsv-2.4-20180807.163813-1.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | net.sf.opencsv 6 | opencsv 7 | 2.4-SNAPSHOT 8 | 9 | -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/2.4-SNAPSHOT/opencsv-2.4-20180807.163813-1.pom.md5: -------------------------------------------------------------------------------- 1 | 1f895b5d09ff64333da8dcb6e69d5290 -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/2.4-SNAPSHOT/opencsv-2.4-20180807.163813-1.pom.sha1: -------------------------------------------------------------------------------- 1 | 91cec12cd651efd7b3cc5257ca789b52b71770d6 -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | net.sf.opencsv 4 | opencsv 5 | 6 | 7 | 2.4-SNAPSHOT 8 | 9 | 20180807163813 10 | 11 | 12 | -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 9eb11dd9dfb7156097ce46b58a68864c -------------------------------------------------------------------------------- /project-repository/net/sf/opencsv/opencsv/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | d8cb1a6e170b2d08edcebf988e9160b43a655ee6 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/2.8/openrefine-2.8.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/project-repository/org/openrefine/openrefine/2.8/openrefine-2.8.jar -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/2.8/openrefine-2.8.jar.md5: -------------------------------------------------------------------------------- 1 | e46ddd109afd98c422db086d9b1ab1ac -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/2.8/openrefine-2.8.jar.sha1: -------------------------------------------------------------------------------- 1 | e554dcb0e54a38abb2cdd06f10df4c397f3600ac -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/2.8/openrefine-2.8.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | org.openrefine 6 | openrefine 7 | 2.8 8 | 9 | -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/2.8/openrefine-2.8.pom.md5: -------------------------------------------------------------------------------- 1 | 2d41ad7c0fb3e2f15199e7e9d51fda0f -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/2.8/openrefine-2.8.pom.sha1: -------------------------------------------------------------------------------- 1 | f81ea494b479b7a5102159a421246ce155bc5f81 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.0/openrefine-3.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/project-repository/org/openrefine/openrefine/3.0/openrefine-3.0.jar -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.0/openrefine-3.0.jar.md5: -------------------------------------------------------------------------------- 1 | be7ba75584ae7d556f87061ba13aa12b -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.0/openrefine-3.0.jar.sha1: -------------------------------------------------------------------------------- 1 | 9ec7a8587cb04841e1a2589ee5cad6d4e6074f30 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.0/openrefine-3.0.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | org.openrefine 6 | openrefine 7 | 3.0 8 | 9 | -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.0/openrefine-3.0.pom.md5: -------------------------------------------------------------------------------- 1 | 38560c4a8b3f7cd0a42361c84d1dee91 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.0/openrefine-3.0.pom.sha1: -------------------------------------------------------------------------------- 1 | d25c9b4e3f993ac70fc0dec1cf3b6b3417d83349 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.1/openrefine-3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/project-repository/org/openrefine/openrefine/3.1/openrefine-3.1.jar -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.1/openrefine-3.1.jar.md5: -------------------------------------------------------------------------------- 1 | 517517f018cf45a7db4fa9841b691790 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.1/openrefine-3.1.jar.sha1: -------------------------------------------------------------------------------- 1 | 795f39e8824583b9a409d249ea90f0b251982353 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.1/openrefine-3.1.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | org.openrefine 6 | openrefine 7 | 3.1 8 | POM was created from install:install-file 9 | 10 | -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2-beta/openrefine-3.2-beta.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/project-repository/org/openrefine/openrefine/3.2-beta/openrefine-3.2-beta.jar -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2-beta/openrefine-3.2-beta.jar.md5: -------------------------------------------------------------------------------- 1 | e3c20ba9778e7e71444c18762a75f9c9 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2-beta/openrefine-3.2-beta.jar.sha1: -------------------------------------------------------------------------------- 1 | 698bd50011cb1817e171a2420ecf78bce513e7c1 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2-beta/openrefine-3.2-beta.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | org.openrefine 6 | openrefine 7 | 3.2-beta 8 | POM was created from install:install-file 9 | 10 | -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2-beta/openrefine-3.2-beta.pom.md5: -------------------------------------------------------------------------------- 1 | a1091e9cddc5ff145373ee459d1344f0 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2-beta/openrefine-3.2-beta.pom.sha1: -------------------------------------------------------------------------------- 1 | 87331575abb2936808294824a4abee0bfd5ababb -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2/openrefine-3.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/project-repository/org/openrefine/openrefine/3.2/openrefine-3.2.jar -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2/openrefine-3.2.jar.md5: -------------------------------------------------------------------------------- 1 | a152c57f892b96fc3c084fa62ed8823a -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2/openrefine-3.2.jar.sha1: -------------------------------------------------------------------------------- 1 | 0f5f5de9bf28ee64ff6e1132ade9a16f92d7bd85 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2/openrefine-3.2.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | org.openrefine 6 | openrefine 7 | 3.2 8 | POM was created from install:install-file 9 | 10 | -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2/openrefine-3.2.pom.md5: -------------------------------------------------------------------------------- 1 | 1df20c174eeb508ef9bbb87a3221dd39 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.2/openrefine-3.2.pom.sha1: -------------------------------------------------------------------------------- 1 | a740986b3ba0b8a0a9deb8c86a43201a45171b5e -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.3/openrefine-3.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/project-repository/org/openrefine/openrefine/3.3/openrefine-3.3.jar -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.3/openrefine-3.3.jar.md5: -------------------------------------------------------------------------------- 1 | 2f02b164aa25b5b21d7ecf1c3068893a -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.3/openrefine-3.3.jar.sha1: -------------------------------------------------------------------------------- 1 | 0ab6622caad70c4c25ad075e586cee96a4cc6822 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.3/openrefine-3.3.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | org.openrefine 6 | openrefine 7 | 3.3 8 | POM was created from install:install-file 9 | 10 | -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.3/openrefine-3.3.pom.md5: -------------------------------------------------------------------------------- 1 | 4b4b020c2a988633cf13bf759ceb1ad4 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/3.3/openrefine-3.3.pom.sha1: -------------------------------------------------------------------------------- 1 | 1babbbb7f4fe45d236cfbcfaa7696cbc2ed83bb3 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.openrefine 4 | openrefine 5 | 6 | 3.3 7 | 8 | 3.1 9 | 3.2-beta 10 | 3.2 11 | 3.3 12 | 13 | 20200317183148 14 | 15 | 16 | -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/maven-metadata-local.xml.md5: -------------------------------------------------------------------------------- 1 | fda61a68c860bbfa717cfed87e62a99e -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/maven-metadata-local.xml.sha1: -------------------------------------------------------------------------------- 1 | bd35703c0c7dc85c25bbffa3ccbb3bf35b10727c -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.openrefine 4 | openrefine 5 | 6 | 3.0 7 | 8 | 2.8 9 | 3.0-beta 10 | 3.0-rc.1 11 | 3.0 12 | 13 | 20180922161244 14 | 15 | 16 | -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 36e875f51239ad6e3ed537a701159353 -------------------------------------------------------------------------------- /project-repository/org/openrefine/openrefine/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | 0f4e00f8262b388a4015eb5c18bfd56228f19d55 -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/any23/apache-any23-shaded-core/2.3/apache-any23-shaded-core-2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/project-repository/org/shaded/apache/any23/apache-any23-shaded-core/2.3/apache-any23-shaded-core-2.3.jar -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/any23/apache-any23-shaded-core/2.3/apache-any23-shaded-core-2.3.jar.md5: -------------------------------------------------------------------------------- 1 | df3bc8223da72dc96fcd4179d7c003bf -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/any23/apache-any23-shaded-core/2.3/apache-any23-shaded-core-2.3.jar.sha1: -------------------------------------------------------------------------------- 1 | 30393e7df15039c53034ff8feac3ce4d0008dbf2 -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/any23/apache-any23-shaded-core/2.3/apache-any23-shaded-core-2.3.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | org.shaded.apache.any23 6 | apache-any23-shaded-core 7 | 2.3 8 | POM was created from install:install-file 9 | 10 | 11 | net.sourceforge.owlapi 12 | owlapi-rio 13 | 5.1.13 14 | 15 | 16 | net.sourceforge.owlapi 17 | owlapi-parsers 18 | 5.1.13 19 | 20 | 21 | net.sourceforge.owlapi 22 | owlapi-api 23 | 5.1.13 24 | 25 | 27 | 28 | net.sourceforge.owlapi 29 | owlapi-apibinding 30 | 5.1.13 31 | runtime 32 | 33 | 34 | 35 | org.rypt 36 | f8 37 | 1.1 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/any23/apache-any23-shaded-core/2.3/apache-any23-shaded-core-2.3.pom.md5: -------------------------------------------------------------------------------- 1 | 9c63b6a6368b66cc8767a46b7d0816c1 -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/any23/apache-any23-shaded-core/2.3/apache-any23-shaded-core-2.3.pom.sha1: -------------------------------------------------------------------------------- 1 | dc01d78585eae524dcb7bbf073f2696cb08f2a12 -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/any23/apache-any23-shaded-core/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.shaded.apache.any23 4 | apache-any23-shaded-core 5 | 6 | 2.3 7 | 8 | 2.3 9 | 10 | 20201118115546 11 | 12 | 13 | -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/any23/apache-any23-shaded-core/maven-metadata-local.xml.md5: -------------------------------------------------------------------------------- 1 | 39872531142a8a409cd105007357d23c -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/any23/apache-any23-shaded-core/maven-metadata-local.xml.sha1: -------------------------------------------------------------------------------- 1 | c97d12bc8ad499bfbd425c4e3aa630745d86bafa -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.8.0/jena-shaded-arq-3.8.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/project-repository/org/shaded/apache/jena/jena-shaded-arq/3.8.0/jena-shaded-arq-3.8.0.jar -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.8.0/jena-shaded-arq-3.8.0.jar.md5: -------------------------------------------------------------------------------- 1 | 1b87d175d21e3527de433914c194ebc6 -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.8.0/jena-shaded-arq-3.8.0.jar.sha1: -------------------------------------------------------------------------------- 1 | 511e6ec5ba71f2dbf0b4ae90a415a9e155462a36 -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.8.0/jena-shaded-arq-3.8.0.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | org.shaded.apache.jena 6 | jena-shaded-arq 7 | 3.8.0 8 | POM was created from install:install-file 9 | 10 | -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.8.0/jena-shaded-arq-3.8.0.pom.md5: -------------------------------------------------------------------------------- 1 | 926ae418e0764086207239a79911787c -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.8.0/jena-shaded-arq-3.8.0.pom.sha1: -------------------------------------------------------------------------------- 1 | ebf75a2eeaf695f387dd3a7a87def22d7bc07ad3 -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.9.0/jena-shaded-arq-3.9.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/project-repository/org/shaded/apache/jena/jena-shaded-arq/3.9.0/jena-shaded-arq-3.9.0.jar -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.9.0/jena-shaded-arq-3.9.0.jar.md5: -------------------------------------------------------------------------------- 1 | 7a41ea926781e6ff33f89f986a6bf156 -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.9.0/jena-shaded-arq-3.9.0.jar.sha1: -------------------------------------------------------------------------------- 1 | 1bca3604154f2eff4d20c572c56204dc310c862c -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.9.0/jena-shaded-arq-3.9.0.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | org.shaded.apache.jena 6 | jena-shaded-arq 7 | 3.9.0 8 | POM was created from install:install-file 9 | 10 | -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.9.0/jena-shaded-arq-3.9.0.pom.md5: -------------------------------------------------------------------------------- 1 | 3e1922c8120993e10a9ac4c8c715ea87 -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/3.9.0/jena-shaded-arq-3.9.0.pom.sha1: -------------------------------------------------------------------------------- 1 | 77bd06225064d3b587959f59d6fe7567eaa18843 -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | org.shaded.apache.jena 4 | jena-shaded-arq 5 | 6 | 3.9.0 7 | 8 | 3.8.0 9 | 3.9.0 10 | 11 | 20191016204107 12 | 13 | 14 | -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/maven-metadata-local.xml.md5: -------------------------------------------------------------------------------- 1 | 8f554ac2c4b6851141c6082ebfe69696 -------------------------------------------------------------------------------- /project-repository/org/shaded/apache/jena/jena-shaded-arq/maven-metadata-local.xml.sha1: -------------------------------------------------------------------------------- 1 | caebb9373b53ec385b9031df69606075d82a9f62 -------------------------------------------------------------------------------- /src/assembly/module.xml: -------------------------------------------------------------------------------- 1 | 4 | orefine-${openrefine.version} 5 | false 6 | 7 | zip 8 | 9 | 10 | 11 | target/classes 12 | module/MOD-INF/classes 13 | 14 | **/module/** 15 | 16 | 17 | 18 | src/main/java 19 | module/MOD-INF/classes 20 | 21 | **/*.java 22 | 23 | 24 | 25 | src/main/resources/module 26 | module 27 | 28 | 29 | 30 | 31 | module/MOD-INF/lib 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/CellBlankNode.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import java.lang.reflect.Array; 4 | import java.net.URI; 5 | import java.io.IOException; 6 | 7 | import com.fasterxml.jackson.core.JsonGenerator; 8 | import com.fasterxml.jackson.core.JsonGenerationException; 9 | import org.eclipse.rdf4j.model.BNode; 10 | import org.eclipse.rdf4j.model.Resource; 11 | import org.eclipse.rdf4j.model.ValueFactory; 12 | 13 | import com.fasterxml.jackson.annotation.JsonCreator; 14 | import com.fasterxml.jackson.annotation.JsonInclude; 15 | import com.fasterxml.jackson.annotation.JsonProperty; 16 | import com.google.refine.expr.EvalError; 17 | import com.google.refine.model.Project; 18 | import com.google.refine.model.Row; 19 | 20 | public class CellBlankNode extends ResourceNode implements CellNode { 21 | 22 | final private String columnName; 23 | final boolean isRowNumberCell; 24 | final private String expression; 25 | 26 | @JsonCreator 27 | public CellBlankNode( 28 | @JsonProperty("columnName") 29 | String columnName, 30 | @JsonProperty("expression") 31 | String exp, 32 | @JsonProperty("isRowNumberCell") 33 | boolean isRowNumberCell){ 34 | this.columnName = columnName; 35 | this.isRowNumberCell = isRowNumberCell; 36 | this.expression = exp == null ? "value" : exp; 37 | } 38 | 39 | @Override 40 | public Resource[] createResource(URI baseUri, ValueFactory factory, Project project, 41 | Row row, int rowIndex,BNode[] blanks) { 42 | try{ 43 | Object result = Util.evaluateExpression(project, expression, columnName, row, rowIndex); 44 | if(result.getClass()==EvalError.class){ 45 | return null; 46 | } 47 | if(result.getClass().isArray()){ 48 | int lngth = Array.getLength(result); 49 | Resource[] bs = new BNode[lngth]; 50 | for(int i=0;i0){ 41 | Resource r = factory.createURI(Util.resolveUri(baseUri, this.uri)); 42 | return new Resource[]{r}; 43 | }else{ 44 | return null; 45 | } 46 | } 47 | 48 | @Override 49 | protected void writeNode(JsonGenerator writer) throws JsonGenerationException, IOException { 50 | writer.writeStringField("nodeType", "resource"); 51 | writer.writeStringField("value", uri); 52 | } 53 | 54 | @Override 55 | public String getNodeType() { 56 | return "resource"; 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/Link.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import java.util.Properties; 4 | import java.io.IOException; 5 | 6 | import com.fasterxml.jackson.annotation.JsonCreator; 7 | import com.fasterxml.jackson.annotation.JsonInclude; 8 | import com.fasterxml.jackson.annotation.JsonProperty; 9 | 10 | import com.fasterxml.jackson.core.JsonGenerator; 11 | import com.fasterxml.jackson.core.JsonGenerationException; 12 | 13 | public class Link { 14 | 15 | @JsonProperty("uri") 16 | public final String propertyUri; 17 | @JsonProperty("curie") 18 | public final String curie; 19 | @JsonProperty("target") 20 | @JsonInclude(JsonInclude.Include.NON_NULL) 21 | public final Node target; 22 | 23 | @JsonCreator 24 | public Link( 25 | @JsonProperty("uri") 26 | String uri, 27 | @JsonProperty("curie") 28 | String curie, 29 | @JsonProperty("target") 30 | Node t){ 31 | this.propertyUri = uri; 32 | this.target = t; 33 | this.curie = curie; 34 | } 35 | 36 | public void write(JsonGenerator writer, Properties options) throws JsonGenerationException, IOException{ 37 | writer.writeStartObject(); 38 | writer.writeStringField("uri", propertyUri); 39 | writer.writeStringField("curie", curie); 40 | if (target != null) { 41 | writer.writeFieldName("target"); 42 | target.write(writer, options); 43 | } 44 | writer.writeEndObject(); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/Node.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import com.fasterxml.jackson.annotation.JsonTypeInfo; 5 | import com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver; 6 | import com.fasterxml.jackson.core.JsonGenerator; 7 | import com.fasterxml.jackson.core.JsonGenerationException; 8 | import com.google.refine.model.Project; 9 | import com.google.refine.model.Row; 10 | import org.eclipse.rdf4j.model.BNode; 11 | import org.eclipse.rdf4j.model.Value; 12 | import org.eclipse.rdf4j.model.ValueFactory; 13 | import org.eclipse.rdf4j.repository.RepositoryConnection; 14 | 15 | import java.net.URI; 16 | import java.util.Properties; 17 | import java.io.IOException; 18 | 19 | @JsonTypeInfo( 20 | use=JsonTypeInfo.Id.CUSTOM, 21 | include=JsonTypeInfo.As.PROPERTY, 22 | property="nodeType") 23 | @JsonTypeIdResolver(NodeResolver.class) 24 | public interface Node { 25 | Value[] createNode(URI baseUri, ValueFactory factory, RepositoryConnection con, Project project, Row row, int rowIndex, BNode[] blanks); 26 | 27 | @JsonProperty("nodeType") 28 | public String getNodeType(); 29 | public void write(JsonGenerator writer, Properties options) throws JsonGenerationException, IOException; 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/NodeResolver.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import java.io.IOException; 4 | import java.util.HashMap; 5 | import java.util.Map; 6 | 7 | import com.fasterxml.jackson.annotation.JsonTypeInfo.Id; 8 | import com.fasterxml.jackson.databind.DatabindContext; 9 | import com.fasterxml.jackson.databind.JavaType; 10 | import com.fasterxml.jackson.databind.jsontype.impl.TypeIdResolverBase; 11 | import com.fasterxml.jackson.databind.type.TypeFactory; 12 | 13 | public class NodeResolver extends TypeIdResolverBase { 14 | protected TypeFactory factory = TypeFactory.defaultInstance(); 15 | 16 | @SuppressWarnings("rawtypes") 17 | private static Map registry = new HashMap<>(); 18 | 19 | static { 20 | 21 | registry.put("literal", ConstantLiteralNode.class); 22 | registry.put("blank", ConstantBlankNode.class); 23 | registry.put("resource", ConstantResourceNode.class); 24 | registry.put("cell-as-literal", CellLiteralNode.class); 25 | registry.put("cell-as-blank", CellBlankNode.class); 26 | registry.put("cell-as-resource", CellResourceNode.class); 27 | 28 | } 29 | 30 | @SuppressWarnings("rawtypes") 31 | public void registerNodeType(String nodeType, Class klass) { 32 | registry.put(nodeType, klass); 33 | } 34 | 35 | @Override 36 | public Id getMechanism() { 37 | return Id.NAME; 38 | } 39 | 40 | @Override 41 | public String idFromValue(Object instance) { 42 | return ((Node)instance).getNodeType(); 43 | } 44 | 45 | @Override 46 | public String idFromValueAndType(Object instance, Class type) { 47 | return ((Node) instance).getNodeType(); 48 | } 49 | 50 | @Override 51 | public JavaType typeFromId(DatabindContext context, String id) throws IOException { 52 | return factory.constructSimpleType(registry.get(id), new JavaType[0]); 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/Prefix.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | /** 4 | * @author fadmaa 5 | * represents a defined Namespace (a short name and full URI like foaf ) 6 | */ 7 | public class Prefix { 8 | 9 | private String name; 10 | private String uri; 11 | 12 | public String getName() { 13 | return name; 14 | } 15 | public String getUri() { 16 | return uri; 17 | } 18 | 19 | public Prefix(String name, String uri){ 20 | this.name = name; 21 | this.uri = uri; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/app/ApplicationContext.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.app; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | import java.io.InputStream; 6 | 7 | import org.deri.grefine.rdf.vocab.IPredefinedVocabularyManager; 8 | import org.deri.grefine.rdf.vocab.IVocabularySearcher; 9 | import org.deri.grefine.rdf.vocab.PrefixManager; 10 | import org.deri.grefine.rdf.vocab.imp.PredefinedVocabularyManager; 11 | import org.deri.grefine.rdf.vocab.imp.VocabularySearcher; 12 | 13 | public class ApplicationContext { 14 | 15 | private File workingDir; 16 | private IPredefinedVocabularyManager predefinedVocabularyManager; 17 | private IVocabularySearcher vocabularySearcher; 18 | private PrefixManager prefixManager; 19 | 20 | public IPredefinedVocabularyManager getPredefinedVocabularyManager() { 21 | return predefinedVocabularyManager; 22 | } 23 | 24 | public IVocabularySearcher getVocabularySearcher() { 25 | return vocabularySearcher; 26 | } 27 | 28 | protected void init(File workingDir) throws IOException { 29 | this.workingDir = workingDir; 30 | this.vocabularySearcher = new VocabularySearcher(this.workingDir); 31 | this.predefinedVocabularyManager = new PredefinedVocabularyManager(this, this.workingDir); 32 | InputStream in = this.getClass().getResourceAsStream("/files/prefixes"); 33 | this.prefixManager = new PrefixManager(in); 34 | } 35 | 36 | public void setPredefinedVocabularyManager( 37 | IPredefinedVocabularyManager predefinedVocabularyManager) { 38 | this.predefinedVocabularyManager = predefinedVocabularyManager; 39 | } 40 | 41 | public void setVocabularySearcher(IVocabularySearcher vocabularySearcher) { 42 | this.vocabularySearcher = vocabularySearcher; 43 | } 44 | 45 | public PrefixManager getPrefixManager() { 46 | return prefixManager; 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/app/InitializationCommand.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.app; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | 6 | import javax.servlet.ServletException; 7 | import javax.servlet.http.HttpServletRequest; 8 | import javax.servlet.http.HttpServletResponse; 9 | 10 | import com.google.refine.RefineServlet; 11 | import com.google.refine.commands.Command; 12 | 13 | public class InitializationCommand extends Command{ 14 | 15 | private File workingDir; 16 | 17 | @Override 18 | public void init(RefineServlet servlet) { 19 | workingDir = servlet.getCacheDir("rdfExtension/export"); 20 | super.init(servlet); 21 | } 22 | 23 | @Override 24 | public void doPost(HttpServletRequest request, HttpServletResponse response) 25 | throws ServletException, IOException { 26 | doGet(request,response); 27 | } 28 | 29 | @Override 30 | public void doGet(HttpServletRequest request, HttpServletResponse response) 31 | throws ServletException, IOException { 32 | throw new UnsupportedOperationException("This command is not meant to be called. It is just necessary for initialization"); 33 | } 34 | 35 | public void initRdfExportApplicationContext(ApplicationContext ctxt) throws IOException { 36 | ctxt.init(workingDir); 37 | } 38 | 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/commands/AddPrefixCommand.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.commands; 2 | 3 | import java.io.IOException; 4 | 5 | import javax.servlet.ServletException; 6 | import javax.servlet.http.HttpServletRequest; 7 | import javax.servlet.http.HttpServletResponse; 8 | 9 | import org.deri.grefine.rdf.app.ApplicationContext; 10 | import org.deri.grefine.rdf.vocab.PrefixExistException; 11 | import org.deri.grefine.rdf.vocab.VocabularyImportException; 12 | import org.deri.grefine.rdf.vocab.VocabularyImporter; 13 | 14 | public class AddPrefixCommand extends RdfCommand{ 15 | 16 | public AddPrefixCommand(ApplicationContext ctxt) { 17 | super(ctxt); 18 | } 19 | 20 | @Override 21 | public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 22 | if(!hasValidCSRFToken(request)) { 23 | respondCSRFError(response); 24 | return; 25 | } 26 | String name = request.getParameter("name").trim(); 27 | String uri = request.getParameter("uri").trim(); 28 | String projectId = request.getParameter("project"); 29 | String fetchOption = request.getParameter("fetch"); 30 | Boolean forceImport = Boolean.valueOf(request.getParameter("force-import")); 31 | try { 32 | getRdfSchema(request).addPrefix(name, uri); 33 | if(fetchOption.equals("web")){ 34 | String fetchUrl = request.getParameter("fetch-url"); 35 | if(fetchUrl==null || fetchOption.trim().isEmpty()){ 36 | fetchUrl = uri; 37 | } 38 | getRdfContext().getVocabularySearcher().importAndIndexVocabulary(name, uri, fetchUrl, projectId, new VocabularyImporter()); 39 | } 40 | respondJSON(response, CodeResponse.ok); 41 | } catch (PrefixExistException e) { 42 | getRdfSchema(request).removePrefix(name); 43 | respondException(response, e); 44 | } catch (VocabularyImportException e) { 45 | getRdfSchema(request).removePrefix(name); 46 | respondException(response, e); 47 | } catch (Exception e){ 48 | respondException(response, e); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/commands/CodeResponse.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.commands; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | 5 | public class CodeResponse { 6 | protected String code; 7 | 8 | public CodeResponse() { 9 | this.code = "ok"; 10 | } 11 | 12 | public CodeResponse(String code) { 13 | this.code = code; 14 | } 15 | 16 | @JsonProperty 17 | public String getCode() { 18 | return code; 19 | } 20 | 21 | protected void writeOtherFields() {} 22 | 23 | public static final CodeResponse ok = new CodeResponse("ok"); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/commands/GetDefaultPrefixesCommand.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.commands; 2 | 3 | import java.io.IOException; 4 | import java.util.Collection; 5 | import java.util.Map; 6 | import java.util.Properties; 7 | import java.util.function.Function; 8 | import java.util.stream.Collectors; 9 | 10 | import javax.servlet.ServletException; 11 | import javax.servlet.http.HttpServletRequest; 12 | import javax.servlet.http.HttpServletResponse; 13 | 14 | import org.deri.grefine.rdf.app.ApplicationContext; 15 | import org.deri.grefine.rdf.vocab.PrefixExistException; 16 | import org.deri.grefine.rdf.vocab.Vocabulary; 17 | import org.deri.grefine.rdf.vocab.VocabularyImportException; 18 | import org.deri.grefine.rdf.vocab.VocabularyImporter; 19 | import org.deri.grefine.rdf.vocab.VocabularyIndexException; 20 | 21 | import com.fasterxml.jackson.annotation.JsonCreator; 22 | import com.fasterxml.jackson.annotation.JsonProperty; 23 | 24 | public class GetDefaultPrefixesCommand extends RdfCommand{ 25 | 26 | public GetDefaultPrefixesCommand(ApplicationContext ctxt) { 27 | super(ctxt); 28 | } 29 | 30 | @Override 31 | public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 32 | response.setCharacterEncoding("UTF-8"); 33 | response.setHeader("Content-Type", "application/json"); 34 | try{ 35 | getDefaultPrefixes(request, response); 36 | } catch (Exception e) { 37 | respondException(response, e); 38 | } 39 | } 40 | 41 | private void getDefaultPrefixes(HttpServletRequest request, HttpServletResponse response) 42 | throws ServletException, IOException { 43 | String projectId = request.getParameter("project"); 44 | Collection voc = getRdfSchema(request).getPrefixesMap().values(); 45 | for (Vocabulary v : voc) { 46 | try { 47 | getRdfContext().getVocabularySearcher().importAndIndexVocabulary(v.getName(), v.getUri(), v.getUri(), projectId, new VocabularyImporter()); 48 | } catch (VocabularyImportException | VocabularyIndexException | PrefixExistException e) { 49 | logger.error("Error adding default prefix to project: " + e); 50 | } 51 | } 52 | respondJSON(response, new PrefixesList(voc)); 53 | } 54 | 55 | public class PrefixesList { 56 | 57 | @JsonProperty("prefixes") 58 | public Collection prefixes; 59 | 60 | @JsonCreator 61 | public PrefixesList( 62 | @JsonProperty("prefixes") 63 | Collection prefixes) { 64 | this.prefixes = prefixes; 65 | } 66 | 67 | public Map getMap() { 68 | return prefixes.stream() 69 | .collect(Collectors.toMap(Vocabulary::getName, Function.identity())); 70 | } 71 | } 72 | 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/commands/RdfCommand.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.commands; 2 | 3 | import java.io.IOException; 4 | 5 | import javax.servlet.ServletException; 6 | import javax.servlet.http.HttpServletRequest; 7 | 8 | import org.deri.grefine.rdf.RdfSchema; 9 | import org.deri.grefine.rdf.Util; 10 | import org.deri.grefine.rdf.app.ApplicationContext; 11 | import org.deri.grefine.rdf.vocab.VocabularyIndexException; 12 | 13 | import com.google.refine.commands.Command; 14 | import com.google.refine.model.Project; 15 | 16 | public abstract class RdfCommand extends Command { 17 | 18 | private ApplicationContext rdfContext; 19 | 20 | public RdfCommand(ApplicationContext ctxt){ 21 | super(); 22 | this.rdfContext = ctxt; 23 | } 24 | 25 | public ApplicationContext getRdfContext() { 26 | return rdfContext; 27 | } 28 | 29 | public RdfSchema getRdfSchema(HttpServletRequest request) throws ServletException{ 30 | try { 31 | Project project = getProject(request); 32 | return Util.getProjectSchema(getRdfContext(), project); 33 | } catch (VocabularyIndexException e) { 34 | throw new ServletException("Unable to create index for RDF schema",e); 35 | } catch (IOException e) { 36 | throw new ServletException("Unable to create index for RDF schema",e); 37 | } 38 | } 39 | 40 | protected boolean hasValidCSRFTokenAsHeader(HttpServletRequest request) throws ServletException { 41 | if (request == null) { 42 | throw new IllegalArgumentException("parameter 'request' should not be null"); 43 | } 44 | try { 45 | String token = request.getHeader("X-CSRF-TOKEN"); 46 | return token != null && csrfFactory.validToken(token); 47 | } catch (Exception e) { 48 | // ignore 49 | } 50 | throw new ServletException("Can't find CSRF token: missing or bad URL parameter"); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/commands/RefreshPrefixCommand.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.commands; 2 | 3 | import java.io.IOException; 4 | 5 | import javax.servlet.ServletException; 6 | import javax.servlet.http.HttpServletRequest; 7 | import javax.servlet.http.HttpServletResponse; 8 | 9 | import org.deri.grefine.rdf.app.ApplicationContext; 10 | import org.deri.grefine.rdf.vocab.PrefixExistException; 11 | import org.deri.grefine.rdf.vocab.VocabularyImporter; 12 | 13 | public class RefreshPrefixCommand extends RdfCommand{ 14 | 15 | public RefreshPrefixCommand(ApplicationContext ctxt) { 16 | super(ctxt); 17 | } 18 | 19 | @Override 20 | public void doPost(HttpServletRequest request, HttpServletResponse response) 21 | throws ServletException, IOException { 22 | if(!hasValidCSRFToken(request)) { 23 | respondCSRFError(response); 24 | return; 25 | } 26 | String name = request.getParameter("name"); 27 | String uri = request.getParameter("uri"); 28 | String projectId = request.getParameter("project"); 29 | getRdfSchema(request).removePrefix(name); 30 | 31 | getRdfContext().getVocabularySearcher().deleteTermsOfVocab(name, projectId); 32 | try{ 33 | getRdfContext().getVocabularySearcher(). 34 | importAndIndexVocabulary(name, uri, uri, projectId, new VocabularyImporter()); 35 | } catch (PrefixExistException e) { 36 | respondException(response, e); 37 | return; 38 | } catch (Exception e){ 39 | response.setCharacterEncoding("UTF-8"); 40 | response.setHeader("Content-Type", "application/json"); 41 | respond(response,"{\"code\":\"ok\"}"); 42 | return; 43 | } 44 | 45 | try { 46 | respondJSON(response, CodeResponse.ok); 47 | } catch (IOException e) { 48 | respondException(response, e); 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/commands/RemovePrefixCommand.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.commands; 2 | 3 | import java.io.IOException; 4 | 5 | import javax.servlet.ServletException; 6 | import javax.servlet.http.HttpServletRequest; 7 | import javax.servlet.http.HttpServletResponse; 8 | 9 | import org.deri.grefine.rdf.app.ApplicationContext; 10 | 11 | public class RemovePrefixCommand extends RdfCommand{ 12 | 13 | public RemovePrefixCommand(ApplicationContext ctxt) { 14 | super(ctxt); 15 | } 16 | 17 | @Override 18 | public void doPost(HttpServletRequest request, HttpServletResponse response) 19 | throws ServletException, IOException { 20 | if(!hasValidCSRFToken(request)) { 21 | respondCSRFError(response); 22 | return; 23 | } 24 | String name = request.getParameter("name"); 25 | String projectId = request.getParameter("project"); 26 | getRdfSchema(request).removePrefix(name); 27 | 28 | getRdfContext().getVocabularySearcher().deleteTermsOfVocab(name, projectId); 29 | try{ 30 | respondJSON(response, CodeResponse.ok); 31 | } catch (IOException e) { 32 | respondException(response, e); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/commands/SaveBaseURICommand.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.commands; 2 | 3 | import java.io.IOException; 4 | import java.net.URI; 5 | 6 | import javax.servlet.ServletException; 7 | import javax.servlet.http.HttpServletRequest; 8 | import javax.servlet.http.HttpServletResponse; 9 | 10 | import org.deri.grefine.rdf.Util; 11 | import org.deri.grefine.rdf.app.ApplicationContext; 12 | 13 | import com.google.refine.model.Project; 14 | 15 | public class SaveBaseURICommand extends RdfCommand { 16 | 17 | public SaveBaseURICommand(ApplicationContext ctxt) { 18 | super(ctxt); 19 | } 20 | 21 | @Override 22 | public void doPost(HttpServletRequest request, HttpServletResponse response) 23 | throws ServletException, IOException { 24 | if(!hasValidCSRFToken(request)) { 25 | respondCSRFError(response); 26 | return; 27 | } 28 | try { 29 | Project project = getProject(request); 30 | String base = request.getParameter("baseURI"); 31 | URI baseUri; 32 | try{ 33 | baseUri = Util.buildURI(base); 34 | }catch(RuntimeException re){ 35 | respondException(response, re); 36 | return; 37 | } 38 | Util.getProjectSchema(getRdfContext(),project).setBaseUri(baseUri); 39 | 40 | project.getMetadata().updateModified(); 41 | 42 | respond(response,"OK","Base URI saved"); 43 | 44 | }catch(Exception e){ 45 | respondException(response, e); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/commands/SavePrefixesCommand.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.commands; 2 | 3 | import com.fasterxml.jackson.databind.node.ArrayNode; 4 | import com.fasterxml.jackson.databind.JsonNode; 5 | import org.deri.grefine.rdf.app.ApplicationContext; 6 | import org.deri.grefine.rdf.vocab.Vocabulary; 7 | 8 | import com.google.refine.util.ParsingUtilities; 9 | 10 | import javax.servlet.ServletException; 11 | import javax.servlet.http.HttpServletRequest; 12 | import javax.servlet.http.HttpServletResponse; 13 | import java.io.IOException; 14 | import java.util.HashMap; 15 | import java.util.Map; 16 | 17 | public class SavePrefixesCommand extends RdfCommand{ 18 | 19 | public SavePrefixesCommand(ApplicationContext ctxt) { 20 | super(ctxt); 21 | } 22 | 23 | @Override 24 | public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 25 | if(!hasValidCSRFToken(request)) { 26 | respondCSRFError(response); 27 | return; 28 | } 29 | try{ 30 | Map prefixesMap = new HashMap(); 31 | ArrayNode prefixesArr = ParsingUtilities.evaluateJsonStringToArrayNode(request.getParameter("prefixes")); 32 | for(int i =0;i 23 | * 24 | */ 25 | public class HttpUtils { 26 | 27 | private static Logger log = LoggerFactory.getLogger(HttpUtils.class); 28 | public static final String USER_AGENT = "Google Refine LMF Extension (beta)"; 29 | public static final int CONNECTION_TIMEOUT = 10000; 30 | public static final int SO_TIMEOUT = 60000; 31 | private static final int MAX_REDIRECTS = 3; 32 | 33 | public static HttpClient createClient() { 34 | HttpParams httpParams = new BasicHttpParams(); 35 | httpParams.setParameter(CoreProtocolPNames.USER_AGENT, USER_AGENT); 36 | httpParams.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT); 37 | httpParams.setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT); 38 | httpParams.setBooleanParameter(ClientPNames.HANDLE_REDIRECTS ,true); 39 | httpParams.setIntParameter(ClientPNames.MAX_REDIRECTS, MAX_REDIRECTS); 40 | return new DefaultHttpClient(httpParams); 41 | } 42 | 43 | public static HttpEntity get(String uri) throws IOException { 44 | log.debug("GET request over " + uri); 45 | HttpGet get = new HttpGet(uri); 46 | return get(get); 47 | } 48 | 49 | public static HttpEntity get(String uri, String accept) throws IOException { 50 | log.debug("GET request over " + uri); 51 | HttpGet get = new HttpGet(uri); 52 | get.setHeader("Accept", accept); 53 | return get(get); 54 | } 55 | 56 | private static HttpEntity get(HttpGet get) throws IOException { 57 | HttpClient client = createClient(); 58 | HttpResponse response = client.execute(get); 59 | if (200 == response.getStatusLine().getStatusCode()) { 60 | return response.getEntity(); 61 | } else { 62 | String msg = "Error performing GET request: " + response.getStatusLine().getStatusCode() + " " + response.getStatusLine().getReasonPhrase(); 63 | log.error(msg); 64 | throw new ClientProtocolException(msg); 65 | } 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/IPredefinedVocabularyManager.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | import java.util.Map; 4 | 5 | public interface IPredefinedVocabularyManager { 6 | public Map getPredefinedVocabulariesMap(); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/IVocabularySearcher.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | import java.io.IOException; 4 | import java.util.List; 5 | import java.util.Set; 6 | 7 | import org.apache.lucene.index.CorruptIndexException; 8 | import org.eclipse.rdf4j.repository.Repository; 9 | 10 | 11 | 12 | 13 | public interface IVocabularySearcher { 14 | 15 | /** 16 | * import the vocabulary from namespace and use the short name name for it 17 | * this vocabulary is not limited to a specific project i.e. Global vocabulary 18 | */ 19 | public void importAndIndexVocabulary(String name, String uri, String fetchUrl,VocabularyImporter importer) throws VocabularyImportException, VocabularyIndexException, PrefixExistException, CorruptIndexException, IOException; 20 | 21 | /** 22 | * import the vocabulary from namespace and use the short name name for it 23 | * This vocabulary is to be used (searched...) only with project projectId 24 | * @param name 25 | * @param uri 26 | * @param projectId 27 | * @throws VocabularyImportException 28 | * @throws VocabularyIndexException 29 | * @throws PrefixExistException 30 | */ 31 | public void importAndIndexVocabulary(String name, String uri, String fetchUrl,String projectId,VocabularyImporter importer) throws VocabularyImportException, VocabularyIndexException, PrefixExistException, CorruptIndexException, IOException; 32 | public void importAndIndexVocabulary(String name, String uri, Repository repository, String projectId,VocabularyImporter importer) throws VocabularyImportException, VocabularyIndexException, PrefixExistException, CorruptIndexException, IOException; 33 | 34 | public List searchClasses(String str, String projectId) throws IOException; 35 | 36 | public List searchProperties(String str, String projectId) throws IOException; 37 | 38 | public void deleteTermsOfVocabs(Set toRemove,String projectId) throws CorruptIndexException, IOException; 39 | public void deleteTermsOfVocab(String vocabName, String projectId) throws CorruptIndexException, IOException; 40 | 41 | public void addPredefinedVocabulariesToProject(long projectId)throws VocabularyIndexException, IOException; 42 | 43 | public void update() throws CorruptIndexException, IOException; 44 | 45 | public void synchronize(String projectId, Set prefixes) throws IOException; 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/PrefixExistException.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | public class PrefixExistException extends Exception { 4 | private static final long serialVersionUID = 1916094460059608851L; 5 | 6 | public PrefixExistException(String msg){ 7 | super(msg); 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/PrefixManager.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStream; 6 | import java.io.InputStreamReader; 7 | import java.util.HashMap; 8 | import java.util.Map; 9 | import java.util.StringTokenizer; 10 | 11 | public class PrefixManager { 12 | private Map prefixMap = new HashMap(); 13 | 14 | public PrefixManager(InputStream in) throws IOException { 15 | BufferedReader br = new BufferedReader(new InputStreamReader(in)); 16 | String strLine; 17 | StringTokenizer tokenizer; 18 | // Read File Line By Line 19 | while ((strLine = br.readLine()) != null) { 20 | tokenizer = new StringTokenizer(strLine, "\t"); 21 | String prefix = tokenizer.nextToken(); 22 | String uri = tokenizer.nextToken(); 23 | prefixMap.put(prefix,uri); 24 | } 25 | } 26 | 27 | public String getUri(String prefix){ 28 | return prefixMap.get(prefix); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/RDFSClass.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | 4 | public class RDFSClass extends RDFNode{ 5 | 6 | @Override 7 | public String getType() { 8 | return "class"; 9 | } 10 | 11 | public RDFSClass( String uri, 12 | String label,String description,String prefix,String vocabularyUri) { 13 | super(uri,label,description,prefix,vocabularyUri); 14 | } 15 | 16 | public RDFSClass(String uri){ 17 | super(uri,uri,"","",""); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/RDFSProperty.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | 4 | public class RDFSProperty extends RDFNode{ 5 | 6 | public RDFSProperty(String uri, String label, String description, 7 | String prefix, String namespace) { 8 | super(uri,label,description,prefix,namespace); 9 | } 10 | 11 | public RDFSProperty(String uri){ 12 | super(uri,uri,"","",""); 13 | } 14 | @Override 15 | public String getType() { 16 | return "property"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/SearchResultItem.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | import java.io.IOException; 4 | 5 | import com.fasterxml.jackson.core.JsonGenerator; 6 | 7 | public class SearchResultItem { 8 | private String label; 9 | private String id; 10 | private String description; 11 | private String prefix; 12 | private String localName; 13 | 14 | public SearchResultItem(String id, String prefix, String lname, 15 | String label, String description) { 16 | this.id = id; 17 | this.label = label; 18 | this.description = description; 19 | this.prefix = prefix; 20 | this.localName = lname; 21 | } 22 | 23 | public String getLabel() { 24 | return label; 25 | } 26 | 27 | public String getId() { 28 | return id; 29 | } 30 | 31 | public String getPrefix() { 32 | return prefix; 33 | } 34 | 35 | public String getDescription() { 36 | return description; 37 | } 38 | 39 | public void writeAsSearchResult(JsonGenerator writer) throws IOException { 40 | writer.writeStartObject(); 41 | writer.writeStringField("id", id); 42 | writer.writeStringField("name", prefix + ":" + localName); 43 | writer.writeStringField("description", id + "
label: " + label 44 | + "
description: " + description); 45 | writer.writeEndObject(); 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/Vocabulary.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.core.JsonGenerationException; 5 | 6 | import com.fasterxml.jackson.annotation.JsonCreator; 7 | import com.fasterxml.jackson.annotation.JsonProperty; 8 | 9 | import java.io.IOException; 10 | 11 | public class Vocabulary { 12 | private String name; 13 | private String uri; 14 | 15 | @JsonCreator 16 | public Vocabulary(@JsonProperty("name") String name, @JsonProperty("uri") String uri){ 17 | this.name = name; 18 | this.uri = uri; 19 | } 20 | 21 | @JsonProperty("name") 22 | public String getName() { 23 | return name; 24 | } 25 | 26 | @JsonProperty("uri") 27 | public String getUri() { 28 | return uri; 29 | } 30 | 31 | public void write(JsonGenerator writer)throws JsonGenerationException, IOException { 32 | writer.writeStartObject(); 33 | 34 | writer.writeStringField("name", name); 35 | writer.writeStringField("uri", uri); 36 | 37 | writer.writeEndObject(); 38 | } 39 | 40 | 41 | @Override 42 | public int hashCode() { 43 | return name.hashCode(); 44 | } 45 | 46 | 47 | @Override 48 | public boolean equals(Object obj) { 49 | if(obj==null){ 50 | return false; 51 | } 52 | if(obj.getClass().equals(this.getClass())){ 53 | Vocabulary v2 = (Vocabulary) obj; 54 | return name.equals(v2.getName()); 55 | } 56 | return false; 57 | } 58 | 59 | 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/VocabularyImportException.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | @SuppressWarnings("serial") 4 | public class VocabularyImportException extends Exception{ 5 | 6 | public VocabularyImportException(String message, Throwable cause) { 7 | super(message, cause); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/VocabularyIndexException.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | @SuppressWarnings("serial") 4 | public class VocabularyIndexException extends Exception{ 5 | public VocabularyIndexException(String message, Throwable cause) { 6 | super(message, cause); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/VocabularySaveException.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | import java.io.IOException; 4 | 5 | @SuppressWarnings("serial") 6 | public class VocabularySaveException extends IOException{ 7 | public VocabularySaveException(String message, Throwable cause) { 8 | super(message, cause); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/rdf/vocab/imp/predefined_vocabs.tsv: -------------------------------------------------------------------------------- 1 | rdf http://www.w3.org/1999/02/22-rdf-syntax-ns# http://www.w3.org/1999/02/22-rdf-syntax-ns# 2 | rdfs http://www.w3.org/2000/01/rdf-schema# http://www.w3.org/2000/01/rdf-schema# 3 | owl http://www.w3.org/2002/07/owl# http://www.w3.org/2002/07/owl# 4 | foaf http://xmlns.com/foaf/0.1/ https://databus.dbpedia.org/ontologies/xmlns.com/foaf--0--1/2020.06.10-215725/foaf--0--1_type=orig.rdf 5 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/commands/InitializationCommand.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.commands; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | 6 | import javax.servlet.ServletException; 7 | import javax.servlet.http.HttpServletRequest; 8 | import javax.servlet.http.HttpServletResponse; 9 | 10 | import org.deri.grefine.reconcile.GRefineServiceManager; 11 | 12 | import org.slf4j.Logger; 13 | import org.slf4j.LoggerFactory; 14 | 15 | import com.google.refine.RefineServlet; 16 | import com.google.refine.commands.Command; 17 | 18 | public class InitializationCommand extends Command{ 19 | 20 | final static Logger logger = LoggerFactory.getLogger("rdf_reconcile_initializer"); 21 | 22 | @Override 23 | public void init(RefineServlet servlet) { 24 | File workingDir = servlet.getCacheDir("rdfExtension/reconcile"); 25 | try { 26 | GRefineServiceManager.initialize(workingDir); 27 | } catch (IOException e) { 28 | logger.error("Failed to initialize the extension. ", e); 29 | } 30 | } 31 | 32 | @Override 33 | public void doPost(HttpServletRequest request, HttpServletResponse response) 34 | throws ServletException, IOException { 35 | doGet(request,response); 36 | } 37 | 38 | @Override 39 | public void doGet(HttpServletRequest request, HttpServletResponse response) 40 | throws ServletException, IOException { 41 | throw new UnsupportedOperationException("This command is not meant to be called. It is just necessary for initialization"); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/commands/InitializeServicesCommand.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.commands; 2 | 3 | import java.io.IOException; 4 | import java.util.HashSet; 5 | import java.util.Set; 6 | 7 | import javax.servlet.http.HttpServletRequest; 8 | 9 | import org.deri.grefine.reconcile.GRefineServiceManager; 10 | import org.deri.grefine.reconcile.model.ReconciliationService; 11 | 12 | import com.fasterxml.jackson.databind.JsonNode; 13 | 14 | import com.google.refine.util.ParsingUtilities; 15 | 16 | 17 | public class InitializeServicesCommand extends AbstractAddServiceCommand{ 18 | 19 | @Override 20 | protected ReconciliationService getReconciliationService(HttpServletRequest request) { 21 | try { 22 | JsonNode arr = ParsingUtilities.evaluateJsonStringToArrayNode(request.getParameter("services")); 23 | Set urls = new HashSet(); 24 | for(int i=0;i services = GRefineServiceManager.singleton.getServices(); 29 | 30 | if (services.isEmpty()) { 31 | return null; 32 | } else { 33 | return services.iterator().next(); 34 | } 35 | 36 | } catch (Exception e) { 37 | throw new RuntimeException("Failed to initialize services", e); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/model/AbstractReconciliationService.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.model; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | import java.util.Map.Entry; 6 | import java.io.IOException; 7 | import com.fasterxml.jackson.core.JsonGenerator; 8 | import com.fasterxml.jackson.core.JsonGenerationException; 9 | import org.slf4j.Logger; 10 | import org.slf4j.LoggerFactory; 11 | 12 | import com.google.common.collect.ImmutableMap; 13 | 14 | /** 15 | * @author fadmaa 16 | * implement the multi-query mode reconciliation based on repetitive application of single-query reconcile {@link org.deri.grefine.reconcile.model.ReconciliationService#reconcile(ReconciliationRequest)} 17 | * 18 | */ 19 | 20 | public abstract class AbstractReconciliationService implements ReconciliationService { 21 | final static Logger logger = LoggerFactory.getLogger("AbstractReconciliationService"); 22 | 23 | protected String name; 24 | protected String id; 25 | 26 | protected AbstractReconciliationService(String id, String name){ 27 | this.name = name; 28 | this.id = id; 29 | } 30 | 31 | @Override 32 | public String getId() { 33 | return id; 34 | } 35 | 36 | @Override 37 | public String getName() { 38 | return name; 39 | } 40 | 41 | @Override 42 | public ImmutableMap reconcile(ImmutableMap multiQueryRequest) { 43 | Map multiQueryResponse = new HashMap(); 44 | for(Entry entry: multiQueryRequest.entrySet()){ 45 | try{ 46 | String key = entry.getKey(); 47 | ReconciliationRequest request = entry.getValue(); 48 | ReconciliationResponse response = reconcile(request); 49 | multiQueryResponse.put(key, response); 50 | Thread.sleep(300); 51 | }catch(Exception e){ 52 | multiQueryResponse.put(entry.getKey(), new ReconciliationResponse()); 53 | logger.error("error reconciling '" + entry.getValue().getQueryString() + "'",e); 54 | } 55 | } 56 | return ImmutableMap.copyOf(multiQueryResponse); 57 | } 58 | 59 | @Override 60 | public void writeAsJson(JsonGenerator w) throws JsonGenerationException, IOException { 61 | writeAsJson(w,false); 62 | } 63 | 64 | 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/model/ReconciliationCandidate.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.model; 2 | 3 | public class ReconciliationCandidate { 4 | 5 | private final String id; 6 | private final String name; 7 | private String[] types; 8 | private final double score; 9 | private boolean match; 10 | 11 | public ReconciliationCandidate(String id, String name, String[] types, double score, boolean match){ 12 | this.id = id; 13 | this.name = name; 14 | this.types = types; 15 | this.score = score; 16 | this.match = match; 17 | } 18 | 19 | public String getId() { 20 | return id; 21 | } 22 | 23 | public boolean isMatch() { 24 | return match; 25 | } 26 | 27 | public void setMatch(boolean match) { 28 | this.match = match; 29 | } 30 | 31 | public String getName() { 32 | return name; 33 | } 34 | 35 | public String[] getTypes() { 36 | return types; 37 | } 38 | 39 | public double getScore() { 40 | return score; 41 | } 42 | 43 | @Override 44 | public int hashCode() { 45 | return id.hashCode(); 46 | } 47 | 48 | public void setTypes(String[] types) { 49 | this.types = types; 50 | } 51 | 52 | @Override 53 | public boolean equals(Object obj) { 54 | if(obj==null) return false; 55 | if(!obj.getClass().equals(this.getClass())) return false; 56 | return this.getId().equals(((ReconciliationCandidate)obj).getId()); 57 | } 58 | 59 | 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/model/ReconciliationRequestContext.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.model; 2 | 3 | import java.util.Arrays; 4 | import java.util.LinkedHashSet; 5 | import java.util.Set; 6 | 7 | /** 8 | * @author fadmaa 9 | * complex reconciliation requests will use additional properties to make reconciliation more precise... this class is used to represent these additional 10 | * properties aka context 11 | */ 12 | public class ReconciliationRequestContext { 13 | 14 | private final Set properties; 15 | 16 | public ReconciliationRequestContext(Set props){ 17 | this.properties = props; 18 | } 19 | 20 | public ReconciliationRequestContext(PropertyContext... prop){ 21 | this.properties = new LinkedHashSet(Arrays.asList(prop)); 22 | } 23 | 24 | public Set getProperties() { 25 | return properties; 26 | } 27 | 28 | /** 29 | * @author fadmaa 30 | * A property id and its value 31 | */ 32 | public static class PropertyContext{ 33 | private final String pid; 34 | private final ValueContext v; 35 | 36 | public PropertyContext(String pid, ValueContext v) { 37 | this.pid = pid; 38 | this.v = v; 39 | } 40 | 41 | public PropertyContext(String pid, String v) { 42 | this.pid = pid; 43 | this.v = new TextualValueContext(v); 44 | } 45 | 46 | public String getPid() { 47 | return pid; 48 | } 49 | 50 | public ValueContext getV() { 51 | return v; 52 | } 53 | 54 | } 55 | 56 | public static interface ValueContext{ 57 | public String asSparqlValue(); 58 | public boolean isIRI(); 59 | } 60 | 61 | public static class IdentifiedValueContext implements ValueContext{ 62 | private final String id; 63 | 64 | public String getId() { 65 | return id; 66 | } 67 | 68 | public String toString(){ 69 | return id; 70 | } 71 | 72 | public IdentifiedValueContext(String id){ 73 | this.id = id; 74 | } 75 | 76 | public String asSparqlValue(){ 77 | return "<" + id + ">"; 78 | } 79 | 80 | public boolean isIRI(){ 81 | return true; 82 | } 83 | } 84 | 85 | public static class TextualValueContext implements ValueContext{ 86 | private final String text; 87 | 88 | public String getText() { 89 | return text; 90 | } 91 | 92 | public String asSparqlValue(){ 93 | return "'" + text + "'"; 94 | } 95 | 96 | public TextualValueContext(String text){ 97 | this.text = text; 98 | } 99 | 100 | public boolean isIRI(){ 101 | return false; 102 | } 103 | 104 | public String toString(){ 105 | return text; 106 | } 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/model/ReconciliationResponse.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.model; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import javax.xml.bind.annotation.XmlRootElement; 7 | 8 | @XmlRootElement 9 | public class ReconciliationResponse { 10 | 11 | private List results; 12 | 13 | public ReconciliationResponse(){ 14 | this.results = new ArrayList(); 15 | } 16 | 17 | /*public void addResult(ReconciliationCandidate result){ 18 | this.results.add(result); 19 | }*/ 20 | 21 | public List getResults() { 22 | return results; 23 | } 24 | 25 | public void setResults(List results) { 26 | this.results = results; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/model/ReconciliationStanbolSite.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.model; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | import com.fasterxml.jackson.databind.JsonNode; 7 | import com.fasterxml.jackson.databind.node.ObjectNode; 8 | import com.fasterxml.jackson.databind.ObjectMapper; 9 | 10 | /** 11 | * Reconciliation Stanbol Site 12 | * 13 | * @author Sergio Fernández 14 | * 15 | */ 16 | public class ReconciliationStanbolSite { 17 | 18 | private static final String URI = "uri"; 19 | private static final String NAME = "name"; 20 | private static final String LOCAL = "local"; 21 | private String uri; 22 | private String name; 23 | private boolean local; 24 | 25 | public ReconciliationStanbolSite() { 26 | super(); 27 | } 28 | 29 | public ReconciliationStanbolSite(String uri, String name, boolean local) { 30 | super(); 31 | this.uri = uri; 32 | this.name = name; 33 | this.local = local; 34 | } 35 | 36 | public String getUri() { 37 | return uri; 38 | } 39 | 40 | public void setUri(String uri) { 41 | this.uri = uri; 42 | } 43 | 44 | public String getName() { 45 | return name; 46 | } 47 | 48 | public void setName(String name) { 49 | this.name = name; 50 | } 51 | 52 | public boolean isLocal() { 53 | return local; 54 | } 55 | 56 | public void setLocal(boolean local) { 57 | this.local = local; 58 | } 59 | 60 | @Override 61 | public int hashCode() { 62 | final int prime = 31; 63 | int result = 1; 64 | result = prime * result + ((uri == null) ? 0 : uri.hashCode()); 65 | return result; 66 | } 67 | 68 | @Override 69 | public boolean equals(Object obj) { 70 | if (this == obj) 71 | return true; 72 | if (obj == null) 73 | return false; 74 | if (getClass() != obj.getClass()) 75 | return false; 76 | ReconciliationStanbolSite other = (ReconciliationStanbolSite) obj; 77 | if (uri == null) { 78 | if (other.uri != null) 79 | return false; 80 | } else if (!uri.equals(other.uri)) 81 | return false; 82 | return true; 83 | } 84 | 85 | public JsonNode getJSON() { 86 | ObjectMapper mapper = new ObjectMapper(); 87 | ObjectNode map = mapper.createObjectNode(); 88 | map.put(URI, this.uri); 89 | map.put(NAME, this.name); 90 | map.put(LOCAL, this.local); 91 | 92 | return map; 93 | } 94 | 95 | } 96 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/model/SearchResultItem.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.model; 2 | 3 | /** 4 | * @author fadmaa 5 | * represents an item in search result 6 | */ 7 | /** 8 | * @author fadmaa 9 | * 10 | */ 11 | public class SearchResultItem { 12 | 13 | /** 14 | * strong identifier 15 | */ 16 | private final String id; 17 | /** 18 | * human friendly name 19 | */ 20 | private final String name; 21 | 22 | /** 23 | * relevance of the search result item in [0..1] 24 | */ 25 | private final double score; 26 | 27 | public SearchResultItem(String id, String name){ 28 | this(id,name,0); 29 | } 30 | 31 | public SearchResultItem(String id, String name, double score) { 32 | this.id = id; 33 | this.name = name; 34 | this.score = score; 35 | } 36 | 37 | public String getId() { 38 | return id; 39 | } 40 | 41 | public String getName() { 42 | return name; 43 | } 44 | 45 | public double getScore() { 46 | return score; 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/rdf/endpoints/PlainSparqlQueryEndpoint.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.rdf.endpoints; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import org.deri.grefine.reconcile.model.ReconciliationCandidate; 7 | import org.deri.grefine.reconcile.model.ReconciliationRequest; 8 | import org.deri.grefine.reconcile.rdf.executors.QueryExecutor; 9 | import org.deri.grefine.reconcile.rdf.factories.PlainSparqlQueryFactory; 10 | 11 | import com.google.common.collect.ImmutableList; 12 | import com.google.common.collect.Multimap; 13 | import org.apache.jena.query.ResultSet; 14 | 15 | public class PlainSparqlQueryEndpoint extends QueryEndpointImpl { 16 | 17 | private PlainSparqlQueryFactory plainQueryFactory; 18 | public PlainSparqlQueryEndpoint(PlainSparqlQueryFactory queryFactory, QueryExecutor queryExecutor) { 19 | super(queryFactory, queryExecutor); 20 | plainQueryFactory = queryFactory; 21 | 22 | } 23 | 24 | /* (non-Javadoc) 25 | * @see org.deri.grefine.reconcile.rdf.endpoints.QueryEndpointImpl#reconcileEntities(com.google.refine.com.google.refine.org.deri.reconcile.model.ReconciliationRequest, com.google.common.collect.ImmutableList) 26 | * 27 | * this method will try first to search for exact match...if it succeeds the return results. if not, it resorts to the 28 | * more costly method define in its superclass 29 | */ 30 | @Override 31 | public List reconcileEntities(ReconciliationRequest request, ImmutableList searchPropertyUris, double matchThreshold) { 32 | String sparql = plainQueryFactory.getExactMatchReconciliationSparqlQuery(request, searchPropertyUris); 33 | ResultSet resultSet = queryExecutor.sparql(sparql); 34 | List candidates = plainQueryFactory.wrapResultset(resultSet, request.getQueryString(),matchThreshold); 35 | if(candidates.size()>0){ 36 | //if type is not specified, populate types 37 | if(request.getTypes().length==0 && candidates.size()>0){ 38 | List entities = new ArrayList(); 39 | for(ReconciliationCandidate candidate:candidates){ 40 | entities.add(candidate.getId()); 41 | } 42 | String typeSparql = this.queryFactory.getTypesOfEntitiesQuery(ImmutableList.copyOf(entities)); 43 | ResultSet typeResultSet = this.queryExecutor.sparql(typeSparql); 44 | Multimap typesMap = this.queryFactory.wrapTypesOfEntities(typeResultSet); 45 | for(ReconciliationCandidate candidate:candidates){ 46 | candidate.setTypes(typesMap.get(candidate.getId()).toArray(new String[]{})); 47 | } 48 | } 49 | return candidates; 50 | } 51 | return super.reconcileEntities(request, searchPropertyUris, matchThreshold); 52 | } 53 | 54 | @Override 55 | protected String getType() { 56 | return "plain"; 57 | } 58 | 59 | 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/rdf/endpoints/QueryEndpoint.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.rdf.endpoints; 2 | 3 | import java.io.FileInputStream; 4 | import java.io.FileOutputStream; 5 | import java.io.IOException; 6 | import java.util.List; 7 | 8 | import org.deri.grefine.reconcile.model.ReconciliationCandidate; 9 | import org.deri.grefine.reconcile.model.ReconciliationRequest; 10 | import org.deri.grefine.reconcile.model.SearchResultItem; 11 | import org.deri.grefine.reconcile.rdf.factories.PreviewResourceCannedQuery; 12 | 13 | import com.fasterxml.jackson.core.JsonGenerator; 14 | import com.fasterxml.jackson.core.JsonGenerationException; 15 | 16 | import com.google.common.collect.ImmutableList; 17 | import com.google.common.collect.Multimap; 18 | 19 | public interface QueryEndpoint { 20 | 21 | public List reconcileEntities(ReconciliationRequest request, ImmutableList searchPropertyUris, double matchThreshold); 22 | 23 | public ImmutableList suggestType(String prefix, int limit); 24 | 25 | public ImmutableList suggestProperty(String prefix, String typeUri, int limit); 26 | public ImmutableList suggestProperty(String prefix, int limit); 27 | 28 | /** 29 | * @param typeUri 30 | * @param limit 31 | * @return list of "limit" SearchResultItem. id of each SearchResultItem will be the instance URI, while name will be a label for it 32 | */ 33 | public ImmutableList getSampleInstances(String typeUri, ImmutableList searchPropertyUris, int limit); 34 | 35 | /** 36 | * @param propertyUri 37 | * @param limit 38 | * @return list of String[] of length 2 where the first element is the subject, the second is the object i.e. if the result is 39 | * List([s1,o1], [s2,o2]) ==> both (s1,propertyUri,o1) and (s2,propertyUri,o2) are stated predicates 40 | */ 41 | public ImmutableList getSampleValuesOfProperty(String propertyUri, int limit); 42 | 43 | /** 44 | * @param resourceUri 45 | * @param limit number of map *entries* 46 | * @return a multimap (as some properties will have multiple values) keys are properties URIs while values are... corresponding properties values 47 | */ 48 | public Multimap getResourcePropertiesMap(String resourceUri, int limit); 49 | public Multimap getResourcePropertiesMap(PreviewResourceCannedQuery cannedQuery, String resourceUri); 50 | 51 | public ImmutableList searchForEntities(String prefix, ImmutableList searchPropertyUris, int limit); 52 | 53 | public void save(String serviceId, FileOutputStream out) throws IOException; 54 | 55 | public void write(JsonGenerator writer) throws JsonGenerationException, IOException; 56 | public void initialize(FileInputStream in); 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/rdf/endpoints/QueryEndpointFactory.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.rdf.endpoints; 2 | 3 | import org.deri.grefine.reconcile.rdf.executors.DumpQueryExecutor; 4 | import org.deri.grefine.reconcile.rdf.executors.QueryExecutor; 5 | import org.deri.grefine.reconcile.rdf.factories.JenaTextSparqlQueryFactory; 6 | import org.deri.grefine.reconcile.rdf.factories.SparqlQueryFactory; 7 | 8 | import org.eclipse.rdf4j.model.Model; 9 | 10 | public class QueryEndpointFactory { 11 | 12 | public QueryEndpoint getLarqQueryEndpoint(Model model){ 13 | SparqlQueryFactory queryFactory = new JenaTextSparqlQueryFactory(); 14 | QueryExecutor queryExecutor = new DumpQueryExecutor(model); 15 | return new QueryEndpointImpl(queryFactory, queryExecutor); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/rdf/executors/QueryExecutor.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.rdf.executors; 2 | 3 | import java.io.FileInputStream; 4 | import java.io.InputStream; 5 | import java.io.FileOutputStream; 6 | import java.io.IOException; 7 | 8 | import com.fasterxml.jackson.core.JsonGenerator; 9 | import com.fasterxml.jackson.core.JsonGenerationException; 10 | 11 | import org.apache.jena.query.ResultSet; 12 | 13 | /** 14 | * @author fadmaa 15 | * this interface takes care of executing SPARQL queries. the RDF to query might be a dump or a remote SPARQL endpoint. 16 | * different implementation should take care of this. 17 | */ 18 | public interface QueryExecutor { 19 | 20 | public ResultSet sparql(String sparql); 21 | 22 | public void save(String serviceId, FileOutputStream out) throws IOException; 23 | public void write(JsonGenerator writer) throws JsonGenerationException, IOException; 24 | public void initialize(InputStream in); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/rdf/executors/RemoteQueryExecutor.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.rdf.executors; 2 | 3 | import java.io.FileInputStream; 4 | import java.io.InputStream; 5 | import java.io.FileOutputStream; 6 | import java.io.IOException; 7 | 8 | import com.fasterxml.jackson.core.JsonGenerator; 9 | import com.fasterxml.jackson.core.JsonGenerationException; 10 | 11 | import org.apache.jena.query.QueryExecution; 12 | import org.apache.jena.query.QueryExecutionFactory; 13 | import org.apache.jena.query.ResultSet; 14 | import org.apache.jena.query.ResultSetFactory; 15 | 16 | /** 17 | * @author fadmaa 18 | * query a remote SPARQL endpoint 19 | */ 20 | public class RemoteQueryExecutor implements QueryExecutor{ 21 | protected String sparqlEndpointUrl; 22 | protected String defaultGraphUri; 23 | 24 | public RemoteQueryExecutor(String sparqlEndpointUrl, String defaultGraphUri) { 25 | this.sparqlEndpointUrl = sparqlEndpointUrl; 26 | this.defaultGraphUri = defaultGraphUri; 27 | } 28 | 29 | @Override 30 | public ResultSet sparql(String sparql) { 31 | QueryExecution qExec; 32 | if(defaultGraphUri==null){ 33 | qExec = QueryExecutionFactory.sparqlService(sparqlEndpointUrl, sparql); 34 | }else{ 35 | qExec = QueryExecutionFactory.sparqlService(sparqlEndpointUrl, sparql, defaultGraphUri); 36 | } 37 | ResultSet results = null; 38 | try { 39 | ResultSet res = qExec.execSelect(); 40 | results = ResultSetFactory.copyResults(res); 41 | } finally { 42 | qExec.close(); 43 | } 44 | return results; 45 | } 46 | 47 | @Override 48 | public void save(String serviceId, FileOutputStream baseDir) throws IOException { 49 | //nothing to save... all data is external 50 | } 51 | 52 | @Override 53 | public void write(JsonGenerator writer) throws JsonGenerationException, IOException { 54 | writer.writeStartObject(); 55 | writer.writeStringField("type", "remote"); 56 | writer.writeStringField("sparql-url", sparqlEndpointUrl); 57 | if(defaultGraphUri!=null){ 58 | writer.writeStringField("default-graph-uri", defaultGraphUri); 59 | } 60 | writer.writeEndObject(); 61 | } 62 | 63 | @Override 64 | public void initialize(InputStream in) { 65 | //nothing to initialize 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/rdf/executors/VirtuosoRemoteQueryExecutor.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.rdf.executors; 2 | 3 | import java.util.Collections; 4 | import java.io.IOException; 5 | 6 | import org.apache.jena.query.ResultSetFactory; 7 | import com.fasterxml.jackson.core.JsonGenerator; 8 | import com.fasterxml.jackson.core.JsonGenerationException; 9 | 10 | import org.apache.jena.query.ResultSet; 11 | import org.apache.jena.sparql.exec.http.QueryExecutionHTTP; 12 | import org.apache.jena.sparql.exec.http.QueryExecutionHTTPBuilder; 13 | 14 | public class VirtuosoRemoteQueryExecutor extends RemoteQueryExecutor { 15 | 16 | public VirtuosoRemoteQueryExecutor(String sparqlEndpointUrl, String defaultGraphUri) { 17 | super(sparqlEndpointUrl, defaultGraphUri); 18 | } 19 | 20 | @Override 21 | public ResultSet sparql(String sparql) { 22 | // we use QueryEngineHTTP to skip query validation as Virtuoso 23 | // needs non-standardised extensions and will not pass ARQ validation 24 | QueryExecutionHTTPBuilder qBuilder = QueryExecutionHTTPBuilder.service(sparqlEndpointUrl); 25 | qBuilder.addDefaultGraphURI(defaultGraphUri); 26 | qBuilder.queryString(sparql); 27 | QueryExecutionHTTP qExec = qBuilder.build(); 28 | ResultSet results = null; 29 | try { 30 | ResultSet res = qExec.execSelect(); 31 | results = ResultSetFactory.copyResults(res); 32 | } finally { 33 | qExec.close(); 34 | } 35 | 36 | return results; 37 | } 38 | 39 | @Override 40 | public void write(JsonGenerator writer) throws JsonGenerationException, IOException { 41 | writer.writeStartObject(); 42 | writer.writeStringField("type", "remote-virtuoso"); 43 | writer.writeStringField("sparql-url", sparqlEndpointUrl); 44 | if (defaultGraphUri != null) { 45 | writer.writeStringField("default-graph-uri", defaultGraphUri); 46 | } 47 | writer.writeEndObject(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/rdf/factories/files/preview_properties.properties: -------------------------------------------------------------------------------- 1 | label= http://www.w3.org/2004/02/skos/core#prefLabel , http://purl.org/dc/terms/title , http://purl.org/dc/elements/1.1/title , http://xmlns.com/foaf/0.1/name , http://www.w3.org/2000/01/rdf-schema#label , http://xmlns.com/foaf/0.1/givenName , http://xmlns.com/foaf/0.1/familyName , http://xmlns.com/foaf/0.1/nick , http://www.w3.org/2004/02/skos/core#altLabel 2 | description=http://www.w3.org/2004/02/skos/core#definition , http://purl.org/dc/elements/1.1/description , http://purl.org/dc/terms/description , http://www.w3.org/2000/01/rdf-schema#comment , http://purl.org/dc/terms/abstract 3 | image=http://xmlns.com/foaf/0.1/img , http://xmlns.com/foaf/0.1/logo , http://xmlns.com/foaf/0.1/depiction -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/util/GRefineJsonUtilities.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.util; 2 | 3 | import java.io.IOException; 4 | import java.net.URL; 5 | 6 | import com.fasterxml.jackson.core.JsonGenerationException; 7 | import com.fasterxml.jackson.core.JsonParseException; 8 | import com.fasterxml.jackson.databind.JsonMappingException; 9 | import com.fasterxml.jackson.databind.node.ObjectNode; 10 | import com.fasterxml.jackson.databind.JsonNode; 11 | import org.deri.grefine.reconcile.model.ReconciliationRequest; 12 | import org.deri.grefine.reconcile.model.ReconciliationResponse; 13 | import org.deri.grefine.reconcile.model.ReconciliationService; 14 | import org.deri.grefine.reconcile.model.SearchResultItem; 15 | 16 | import com.google.common.collect.ImmutableList; 17 | import com.google.common.collect.ImmutableMap; 18 | 19 | public interface GRefineJsonUtilities { 20 | 21 | public String getServiceMetadataAsJsonP(ReconciliationService service, String callback, String baseServiceUrl); 22 | public ImmutableMap getMultipleRequest(String queries) throws JsonParseException, JsonMappingException, IOException; 23 | public ObjectNode getMultipleResponse(ImmutableMap multiResponse, PrefixManager prefixManager); 24 | public ObjectNode jsonizeSearchResult(ImmutableList results, String prefix) throws JsonGenerationException, JsonMappingException, IOException; 25 | public ObjectNode jsonizeHtml(String html, String id); 26 | public String getJsonP(String callback, ObjectNode obj); 27 | public JsonNode getJSONObjectFromUrl(URL url) throws IOException, JsonParseException; 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/util/PrefixManager.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.util; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStream; 6 | import java.io.InputStreamReader; 7 | import java.util.HashMap; 8 | import java.util.Map; 9 | import java.util.StringTokenizer; 10 | 11 | public class PrefixManager { 12 | private Map prefixMap = new HashMap<>(); 13 | 14 | public PrefixManager(InputStream in) throws IOException { 15 | BufferedReader br = new BufferedReader(new InputStreamReader(in)); 16 | String strLine; 17 | StringTokenizer tokenizer; 18 | // Read File Line By Line 19 | while ((strLine = br.readLine()) != null) { 20 | tokenizer = new StringTokenizer(strLine, "\t"); 21 | String prefix = tokenizer.nextToken(); 22 | String uri = tokenizer.nextToken(); 23 | if(!prefixMap.containsKey(uri)){ 24 | prefixMap.put(uri, prefix); 25 | } 26 | } 27 | } 28 | 29 | public String getPrefix(String namespace){ 30 | return prefixMap.get(namespace); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/util/RdfUtilities.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.util; 2 | 3 | import org.apache.jena.rdf.model.Model; 4 | 5 | public interface RdfUtilities { 6 | public Model dereferenceUri(String uri); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/util/RdfUtilitiesImpl.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.util; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | import org.apache.jena.rdf.model.Model; 7 | import org.apache.jena.rdf.model.ModelFactory; 8 | 9 | public class RdfUtilitiesImpl implements RdfUtilities{ 10 | 11 | final static Logger logger = LoggerFactory.getLogger("RdfUtilities"); 12 | @Override 13 | public Model dereferenceUri(String uri) { 14 | Model model = ModelFactory.createDefaultModel(); 15 | try{ 16 | model.read(uri); 17 | }catch(Exception ex){ 18 | //silent 19 | //if it fails try RDFa parsing 20 | try{ 21 | Class.forName("net.rootdev.javardfa.jena.RDFaReader"); 22 | model.read(uri, "HTML"); 23 | }catch(Exception e){ 24 | logger.error("Error loading RDFa parser", e); 25 | } 26 | } 27 | return model; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/org/deri/grefine/reconcile/util/StringUtils.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.reconcile.util; 2 | 3 | import java.util.List; 4 | 5 | import org.simmetrics.metrics.Levenshtein; 6 | import org.simmetrics.StringDistance; 7 | 8 | public class StringUtils { 9 | 10 | /** 11 | * @param strings 12 | * @param separator 13 | * @param perStringPrefix 14 | * @param prefi 15 | * @param suffix 16 | * @return joined string of elements in the list. each element will be prefixed by perStringPrefix, separated by separator 17 | * and the total result is prefixed by prefix and suffixed by suffix. Example 18 | * join(["str1", "str2"], "> || ", "p=<", "FILTER (", ">)") = "FILTER (p= || p=)" 19 | */ 20 | public static String join(String[] strings, String separator, String perStringPrefix, String prefix, String suffix){ 21 | if(strings==null || strings.length==0 || (strings.length==1 && strings[0].isEmpty())){ 22 | return ""; 23 | } 24 | StringBuilder builder = new StringBuilder(prefix); 25 | int sizeMinusOne = strings.length -1; 26 | for(int i=0; i || ", "p=<", "FILTER (", ">)") = "FILTER (p= || p=)" 48 | */ 49 | public static String join(List strings, String separator, String perStringPrefix, String prefix, String suffix){ 50 | return StringUtils.join(strings.toArray(new String[]{}), separator, perStringPrefix, prefix, suffix); 51 | } 52 | 53 | /** 54 | * @param str1 55 | * @param str2 56 | * @return similarity between str1 and str2. current implementation uses Levenshtein 57 | */ 58 | public static double getLevenshteinScore(String str1, String str2){ 59 | return new Levenshtein().compare(str1.toLowerCase(), str2.toLowerCase()); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/main/resources/files/preview_properties.properties: -------------------------------------------------------------------------------- 1 | label= http://www.w3.org/2004/02/skos/core#prefLabel , http://purl.org/dc/terms/title , http://purl.org/dc/elements/1.1/title , http://xmlns.com/foaf/0.1/name , http://www.w3.org/2000/01/rdf-schema#label , http://xmlns.com/foaf/0.1/givenName , http://xmlns.com/foaf/0.1/familyName , http://xmlns.com/foaf/0.1/nick , http://www.w3.org/2004/02/skos/core#altLabel 2 | description=http://www.w3.org/2004/02/skos/core#definition , http://purl.org/dc/elements/1.1/description , http://purl.org/dc/terms/description , http://www.w3.org/2000/01/rdf-schema#comment , http://purl.org/dc/terms/abstract 3 | image=http://xmlns.com/foaf/0.1/img , http://xmlns.com/foaf/0.1/logo , http://xmlns.com/foaf/0.1/depiction -------------------------------------------------------------------------------- /src/main/resources/module/MOD-INF/module.properties: -------------------------------------------------------------------------------- 1 | name = rdf-extension 2 | description = Google Refine RDF export 3 | requires = core -------------------------------------------------------------------------------- /src/main/resources/module/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/Thumbs.db -------------------------------------------------------------------------------- /src/main/resources/module/images/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/add.png -------------------------------------------------------------------------------- /src/main/resources/module/images/arrow-end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/arrow-end.png -------------------------------------------------------------------------------- /src/main/resources/module/images/arrow-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/arrow-start.png -------------------------------------------------------------------------------- /src/main/resources/module/images/collapsed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/collapsed.png -------------------------------------------------------------------------------- /src/main/resources/module/images/configure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/configure.png -------------------------------------------------------------------------------- /src/main/resources/module/images/delete.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/delete.jpg -------------------------------------------------------------------------------- /src/main/resources/module/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/delete.png -------------------------------------------------------------------------------- /src/main/resources/module/images/expanded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/expanded.png -------------------------------------------------------------------------------- /src/main/resources/module/images/import.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/import.gif -------------------------------------------------------------------------------- /src/main/resources/module/images/information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/information.png -------------------------------------------------------------------------------- /src/main/resources/module/images/no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/no.png -------------------------------------------------------------------------------- /src/main/resources/module/images/questionMarkIcon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/questionMarkIcon.jpg -------------------------------------------------------------------------------- /src/main/resources/module/images/questionMarkIcon2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/questionMarkIcon2.jpg -------------------------------------------------------------------------------- /src/main/resources/module/images/refresh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/refresh.jpg -------------------------------------------------------------------------------- /src/main/resources/module/images/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/spinner.gif -------------------------------------------------------------------------------- /src/main/resources/module/images/stanbol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/stanbol.png -------------------------------------------------------------------------------- /src/main/resources/module/images/yes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/main/resources/module/images/yes.png -------------------------------------------------------------------------------- /src/main/resources/module/scripts/common.js: -------------------------------------------------------------------------------- 1 | 2 | function linkify(text) { 3 | var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 4 | return text.replace(exp,"$1"); 5 | } 6 | 7 | function validateURI(uri) { 8 | if(/^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(uri)) { 9 | return true; 10 | } else { 11 | return false; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/resources/module/scripts/dialogs/new-prefix-widget.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 |
8 | 9 | 10 | 11 | 15 | 16 |
12 | 13 |
14 |
17 |
18 |
19 | 20 | 21 | 22 | 25 | 26 | 27 | 30 | 31 | 32 | 55 | 56 |
23 | 24 |
28 | 29 |
33 | 34 | 35 |
36 | 37 | 38 | 39 | 40 | 42 | 43 | 52 |
41 |
44 | 51 |
53 |
54 |
57 |
58 |
59 | 60 |
61 | 66 |
67 | -------------------------------------------------------------------------------- /src/main/resources/module/scripts/dialogs/rdf-schema-alignment.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |

6 |

7 | 8 |

9 |
10 |
    11 |
  • 12 |
  • 13 |
14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 |
22 |
23 | 24 |
25 |
26 | 27 | 31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | -------------------------------------------------------------------------------- /src/main/resources/module/scripts/dialogs/rdf-schema-manage-vocabs-widget.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 | 7 |
8 |
9 |
10 | 14 |
-------------------------------------------------------------------------------- /src/main/resources/module/scripts/new-prefix-widget.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 16 | 17 |
prefix: 7 | 8 |
URI: 13 | 14 |
15 |
18 |
19 |
20 | Vocabulary Terms 21 | 22 | 23 | 26 | 27 | 28 | 48 | 49 |
24 | Try fetching vocabulary terms from the Web 25 |
29 | Import vocabulary terms from a file 30 |
31 | 32 | 33 | 34 | 35 | 36 | 45 |
File:
Format: 37 | 44 |
46 |
47 |
50 |
51 |
52 |
53 | -------------------------------------------------------------------------------- /src/main/resources/module/scripts/stanbol-service.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 |

7 | 8 |
9 | 10 | 11 | 12 | 14 | 16 | 17 | 18 |
13 | 15 |
19 | 20 |
21 | 22 | 25 | 26 |

27 | 28 |

29 | Apache 30 | Stanbol EntityHub. 32 |

33 | 34 |
35 | 36 | 43 | 44 |
-------------------------------------------------------------------------------- /src/main/resources/module/styles/flyout.css: -------------------------------------------------------------------------------- 1 | .rdf-resource-preview-flyout-content { 2 | border:1px solid #CCCCCC; 3 | background-color:#FFFFFF; 4 | margin:4px 8px 4px 4px; 5 | padding:4px; 6 | } 7 | 8 | .rdf-flyout-content{ 9 | height: 90%; 10 | width: 100%; 11 | } 12 | 13 | img.rdf-resource_preview_logo{ 14 | float:right; 15 | width:30%; 16 | height:auto; 17 | } -------------------------------------------------------------------------------- /src/main/resources/module/styles/rdf-reconcile-service.css: -------------------------------------------------------------------------------- 1 | div.rdf-reconcile-details-section{ 2 | border-bottom: solid 1px #EEEEEE; 3 | padding-bottom:0.5em; 4 | padding-top:2px; 5 | } 6 | 7 | div.rdf-reconcile-field-details{ 8 | font-size:85%; 9 | padding-bottom:0.3em; 10 | } 11 | .rdf-reconcile-spaced{ 12 | padding:0 0 0.5em 0.2em; 13 | } 14 | 15 | fieldset.rdf-reconcile-fieldset{ 16 | border:solid 1px #BBCCFF; 17 | padding: 0.2em 0 0.5em 0.2em; 18 | margin-top:1.5em; 19 | } 20 | 21 | fieldset.rdf-reconcile-fieldset legend{ 22 | font-weight:bold; 23 | } 24 | 25 | fieldset.rdf-reconcile-fieldset table,fieldset.rdf-reconcile-fieldset div.rdf-reconcile-content{ 26 | margin:0 1em 0 1em; 27 | } 28 | 29 | fieldset.rdf-reconcile-fieldset td{ 30 | padding:0 0 0.5em 0.2em; 31 | } 32 | fieldset.rdf-reconcile-fieldset input{ 33 | padding-bottom:0; 34 | } 35 | 36 | div.rdf-reconcile-content span{ 37 | margin-bottom:1em; 38 | } 39 | div.rdf-reconcile-label-option{ 40 | float:left; 41 | font-family:monospace; 42 | font-size:120%; 43 | padding-right:2em; 44 | } 45 | 46 | div.rdf-reconcile-label-last-option{ 47 | clear:left; 48 | font-family:Arial,sans-serif; 49 | margin-top:0.5em; 50 | 51 | } 52 | 53 | div.rdf-flyout-content{ 54 | color:#000; 55 | } 56 | div.rdf-flyout-content div.rdf-header{ 57 | overflow-wrap: break-word; 58 | font-weight:bold; 59 | margin:4px; 60 | } 61 | 62 | div.rdf-reconcile-dialog-body p { 63 | margin-top: 0.7em; 64 | margin-bottom: 0.7em; 65 | } 66 | 67 | div.rdf-reconcile-dialog-body img.validation { 68 | margin-left: 0.5em; 69 | } 70 | 71 | div.rdf-reconcile-dialog-body input[type=text], div.rdf-reconcile-dialog-body input[type=password] { 72 | //width: 80%; 73 | margin-left: 1em; 74 | padding: 3px; 75 | font-size: 1em; 76 | font-family: inherit; 77 | border: #CCC 1px solid; 78 | border-top: #888 1px solid; 79 | vertical-align: baseline; 80 | } 81 | 82 | div#stanbol-service { 83 | background-image: url(../images/stanbol.png); 84 | background-repeat: no-repeat; 85 | background-position: right bottom; 86 | } 87 | 88 | div.rdf-reconcile-registering { 89 | border: 1px solid #F8DCBB; 90 | margin: 1em; 91 | padding: 1em; 92 | background-color: #F8F8F8; 93 | font-size: 90%; 94 | overflow: auto; 95 | } 96 | 97 | div.rdf-reconcile-registering dl dd { 98 | margin-left: 2em; 99 | } 100 | 101 | div.rdf-reconcile-dialog-body input[type=text].error { 102 | border: solid 1px red; 103 | } 104 | -------------------------------------------------------------------------------- /src/main/resources/templates/entity_preview.vt: -------------------------------------------------------------------------------- 1 |
2 |
$resourceUri
3 | #foreach ($label in $propertiesMap.labels) 4 |

$label

5 | #end 6 | #foreach ($description in $propertiesMap.descriptions) 7 |
$description
8 | #end 9 |
-------------------------------------------------------------------------------- /src/main/resources/templates/property_preview.vt: -------------------------------------------------------------------------------- 1 |
2 |

$propertyUri

3 |

Sample Instances:

4 | 5 | 6 | 7 | 8 | 9 | #foreach($instance in $instances) 10 | 11 | #foreach($val in $instance) 12 | 13 | #end 14 | 15 | #end 16 |
SubjectObject

$val

17 |
-------------------------------------------------------------------------------- /src/main/resources/templates/resource_preview.vt: -------------------------------------------------------------------------------- 1 |
2 |
$resourceUri
3 | #foreach ($label in $propertiesMap.labels) 4 |

$label

5 | #end 6 | #foreach ($img in $propertiesMap.images) 7 | 8 | #end 9 | #foreach ($description in $propertiesMap.descriptions) 10 |
$description
11 | #end 12 |
-------------------------------------------------------------------------------- /src/main/resources/templates/resource_preview_template.vt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/resources/templates/type_preview.vt: -------------------------------------------------------------------------------- 1 |
2 |

$typeUri

3 |

Sample Instances:

4 | 5 | 6 | 7 | 8 | 9 | #foreach($instance in $instances) 10 | 11 | 12 | 13 | 14 | #end 15 |
URIlabel

$instance.id

$instance.name

16 |
-------------------------------------------------------------------------------- /src/test/java/ProjectFake.java: -------------------------------------------------------------------------------- 1 | import com.google.refine.ProjectMetadata; 2 | import com.google.refine.model.Project; 3 | 4 | public class ProjectFake extends Project{ 5 | 6 | @Override 7 | public ProjectMetadata getMetadata() { 8 | return new ProjectMetadata(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/rdf/CellBlankNodeTest.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import java.io.IOException; 4 | 5 | import org.deri.grefine.util.TestUtils; 6 | import org.testng.annotations.Test; 7 | 8 | import com.fasterxml.jackson.core.JsonParseException; 9 | import com.fasterxml.jackson.databind.JsonMappingException; 10 | import com.fasterxml.jackson.databind.ObjectMapper; 11 | 12 | public class CellBlankNodeTest { 13 | 14 | private ObjectMapper mapper = new ObjectMapper(); 15 | 16 | @Test 17 | public void serializeCellBlankNode() throws JsonParseException, JsonMappingException, IOException { 18 | String json = "{\n" + 19 | " \"columnName\" : \"my column\",\n" + 20 | " \"isRowNumberCell\" : false,\n" + 21 | " \"links\" : [ ],\n" + 22 | " \"nodeType\" : \"cell-as-blank\",\n" + 23 | " \"rdfTypes\" : [ ]\n" + 24 | " }"; 25 | CellBlankNode node = mapper.readValue(json, CellBlankNode.class); 26 | TestUtils.isSerializedTo(node, json); 27 | } 28 | 29 | @Test 30 | public void serializeCellBlankNodeNoColumn() throws JsonParseException, JsonMappingException, IOException { 31 | String json = "{\n" + 32 | " \"isRowNumberCell\" : false,\n" + 33 | " \"links\" : [ ],\n" + 34 | " \"nodeType\" : \"cell-as-blank\",\n" + 35 | " \"rdfTypes\" : [ ]\n" + 36 | " }"; 37 | CellBlankNode node = mapper.readValue(json, CellBlankNode.class); 38 | TestUtils.isSerializedTo(node, json); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/rdf/CellLiteralNodeTest.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import java.io.IOException; 4 | 5 | import org.deri.grefine.util.TestUtils; 6 | import org.testng.annotations.Test; 7 | 8 | import com.fasterxml.jackson.core.JsonParseException; 9 | import com.fasterxml.jackson.databind.JsonMappingException; 10 | import com.fasterxml.jackson.databind.ObjectMapper; 11 | 12 | public class CellLiteralNodeTest { 13 | private ObjectMapper mapper = new ObjectMapper(); 14 | 15 | @Test 16 | public void serializeCellLiteralNode() throws JsonParseException, JsonMappingException, IOException { 17 | String json = "{\n" + 18 | " \"columnName\" : \"my column\",\n" + 19 | " \"expression\" : \"value.strip()\",\n" + 20 | " \"isRowNumberCell\" : true,\n" + 21 | " \"lang\" : \"en\",\n" + 22 | " \"nodeType\" : \"cell-as-literal\",\n" + 23 | " \"valueType\" : \"http://owl.thing/\"\n" + 24 | " }"; 25 | CellLiteralNode node = mapper.readValue(json, CellLiteralNode.class); 26 | TestUtils.isSerializedTo(node, json); 27 | } 28 | 29 | @Test 30 | public void serializeCellLiteralNodeNoColumnName() throws JsonParseException, JsonMappingException, IOException { 31 | String json = "{\n" + 32 | " \"expression\" : \"value.strip()\",\n" + 33 | " \"isRowNumberCell\" : true,\n" + 34 | " \"lang\" : \"en\",\n" + 35 | " \"nodeType\" : \"cell-as-literal\",\n" + 36 | " \"valueType\" : \"http://owl.thing/\"\n" + 37 | " }"; 38 | CellLiteralNode node = mapper.readValue(json, CellLiteralNode.class); 39 | TestUtils.isSerializedTo(node, json); 40 | } 41 | 42 | @Test 43 | public void serializeCellLiteralNodeNoLang() throws JsonParseException, JsonMappingException, IOException { 44 | String json = "{\n" + 45 | " \"columnName\" : \"my column\",\n" + 46 | " \"expression\" : \"value.strip()\",\n" + 47 | " \"isRowNumberCell\" : true,\n" + 48 | " \"nodeType\" : \"cell-as-literal\",\n" + 49 | " \"valueType\" : \"http://owl.thing/\"\n" + 50 | " }"; 51 | CellLiteralNode node = mapper.readValue(json, CellLiteralNode.class); 52 | TestUtils.isSerializedTo(node, json); 53 | } 54 | 55 | @Test 56 | public void serializeCellLiteralNodeNoType() throws JsonParseException, JsonMappingException, IOException { 57 | String json = "{\n" + 58 | " \"columnName\" : \"my column\",\n" + 59 | " \"expression\" : \"value.strip()\",\n" + 60 | " \"isRowNumberCell\" : true,\n" + 61 | " \"lang\" : \"en\",\n" + 62 | " \"nodeType\" : \"cell-as-literal\"\n" + 63 | " }"; 64 | CellLiteralNode node = mapper.readValue(json, CellLiteralNode.class); 65 | TestUtils.isSerializedTo(node, json); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/rdf/CellResourceNodeTest.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import java.io.IOException; 4 | 5 | import org.deri.grefine.util.TestUtils; 6 | import org.testng.annotations.Test; 7 | 8 | import com.fasterxml.jackson.core.JsonParseException; 9 | import com.fasterxml.jackson.databind.JsonMappingException; 10 | import com.fasterxml.jackson.databind.ObjectMapper; 11 | 12 | public class CellResourceNodeTest { 13 | 14 | private ObjectMapper mapper = new ObjectMapper(); 15 | 16 | @Test 17 | public void serializeCellResourceNode() throws JsonParseException, JsonMappingException, IOException { 18 | String json = "{\n" + 19 | " \"columnName\" : \"my column\",\n" + 20 | " \"expression\" : \"value\",\n" + 21 | " \"isRowNumberCell\" : false,\n" + 22 | " \"links\" : [ ],\n" + 23 | " \"nodeType\" : \"cell-as-resource\",\n" + 24 | " \"rdfTypes\" : [ ]\n" + 25 | " }"; 26 | CellResourceNode node = mapper.readValue(json, CellResourceNode.class); 27 | TestUtils.isSerializedTo(node, json); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/rdf/ConstantBlankNodeTest.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import java.io.IOException; 4 | 5 | import org.deri.grefine.util.TestUtils; 6 | import org.testng.annotations.Test; 7 | 8 | import com.fasterxml.jackson.core.JsonParseException; 9 | import com.fasterxml.jackson.databind.JsonMappingException; 10 | import com.fasterxml.jackson.databind.ObjectMapper; 11 | 12 | public class ConstantBlankNodeTest { 13 | 14 | private ObjectMapper mapper = new ObjectMapper(); 15 | 16 | @Test 17 | public void serializeConstantBlankNode() throws JsonParseException, JsonMappingException, IOException { 18 | String json = "{\n" + 19 | " \"links\" : [ ],\n" + 20 | " \"nodeType\" : \"blank\",\n" + 21 | " \"rdfTypes\" : [ ]\n" + 22 | " }"; 23 | ConstantBlankNode node = mapper.readValue(json, ConstantBlankNode.class); 24 | TestUtils.isSerializedTo(node, json); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/rdf/ConstantLiteralNodeTest.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import java.io.IOException; 4 | 5 | import org.deri.grefine.util.TestUtils; 6 | import org.testng.annotations.Test; 7 | 8 | import com.fasterxml.jackson.core.JsonParseException; 9 | import com.fasterxml.jackson.databind.JsonMappingException; 10 | import com.fasterxml.jackson.databind.ObjectMapper; 11 | 12 | public class ConstantLiteralNodeTest { 13 | 14 | private ObjectMapper mapper = new ObjectMapper(); 15 | 16 | @Test 17 | public void serializeConstantLiteralNode() throws JsonParseException, JsonMappingException, IOException { 18 | String json = "{\n" + 19 | " \"lang\" : \"en\",\n" + 20 | " \"nodeType\" : \"literal\",\n" + 21 | " \"value\" : \"my value\",\n" + 22 | " \"valueType\" : \"http://owl.thing/\"\n" + 23 | " }"; 24 | ConstantLiteralNode node = mapper.readValue(json, ConstantLiteralNode.class); 25 | TestUtils.isSerializedTo(node, json); 26 | } 27 | 28 | @Test 29 | public void serializeConstantLiteralNodeNoType() throws JsonParseException, JsonMappingException, IOException { 30 | String json = "{\n" + 31 | " \"lang\" : \"en\",\n" + 32 | " \"nodeType\" : \"literal\",\n" + 33 | " \"value\" : \"my value\"\n" + 34 | " }"; 35 | ConstantLiteralNode node = mapper.readValue(json, ConstantLiteralNode.class); 36 | TestUtils.isSerializedTo(node, json); 37 | } 38 | 39 | @Test 40 | public void serializeConstantLiteralNodeNoLang() throws JsonParseException, JsonMappingException, IOException { 41 | String json = "{\n" + 42 | " \"nodeType\" : \"literal\",\n" + 43 | " \"value\" : \"my value\",\n" + 44 | " \"valueType\" : \"http://owl.thing/\"\n" + 45 | " }"; 46 | ConstantLiteralNode node = mapper.readValue(json, ConstantLiteralNode.class); 47 | TestUtils.isSerializedTo(node, json); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/rdf/ConstantResourceNodeTest.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import com.fasterxml.jackson.core.JsonParseException; 4 | import com.fasterxml.jackson.databind.JsonMappingException; 5 | import com.fasterxml.jackson.databind.ObjectMapper; 6 | import org.deri.grefine.util.TestUtils; 7 | import org.testng.annotations.Test; 8 | 9 | import java.io.IOException; 10 | 11 | public class ConstantResourceNodeTest { 12 | 13 | private ObjectMapper mapper = new ObjectMapper(); 14 | 15 | @Test 16 | public void serializeConstantResourceNode() throws JsonParseException, JsonMappingException, IOException { 17 | String json = "{\n" + 18 | " \"links\" : [ ],\n" + 19 | " \"nodeType\" : \"resource\",\n" + 20 | " \"rdfTypes\" : [\n" 21 | + " { \"uri\":\"http://u.ri\", \"curie\":\"http://cur.ie\"}" 22 | + " ],\n" + 23 | " \"value\" : \"http://my.thing/\"\n" + 24 | " }"; 25 | ConstantResourceNode node = mapper.readValue(json, ConstantResourceNode.class); 26 | TestUtils.isSerializedTo(node, json); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/rdf/LinkTest.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import com.fasterxml.jackson.core.JsonParseException; 4 | import com.fasterxml.jackson.databind.JsonMappingException; 5 | import com.fasterxml.jackson.databind.ObjectMapper; 6 | import org.deri.grefine.util.TestUtils; 7 | import org.testng.annotations.Test; 8 | 9 | import java.io.IOException; 10 | 11 | public class LinkTest { 12 | 13 | private ObjectMapper mapper = new ObjectMapper(); 14 | 15 | @Test 16 | public void serializeLinkNoTarget() throws JsonParseException, JsonMappingException, IOException { 17 | String json = "{\n" + 18 | " \"curie\" : \"http://my.curie/\",\n" + 19 | " \"uri\" : \"http://my.uri/\"\n" + 20 | " }"; 21 | Link link = mapper.readValue(json, Link.class); 22 | TestUtils.isSerializedTo(link, json); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/rdf/RdfSchemaSerializationTest.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf; 2 | 3 | import org.deri.grefine.util.TestUtils; 4 | import org.testng.annotations.BeforeClass; 5 | import org.testng.annotations.Test; 6 | 7 | import com.fasterxml.jackson.databind.ObjectMapper; 8 | 9 | public class RdfSchemaSerializationTest { 10 | 11 | private RdfSchema schema; 12 | private String json; 13 | private ObjectMapper mapper = new ObjectMapper(); 14 | 15 | @BeforeClass 16 | public void init() throws Exception{ 17 | json = "{\"baseUri\":\"http://data.bis.gov.uk/data/organogram/2010-08-26/\",\"prefixes\":[],\"rootNodes\":[{\"nodeType\":\"cell-as-resource\",\"isRowNumberCell\":false,\"expression\":\"'http://reference.data.gov.uk/id/department/bis/post/' + value\",\"columnName\":\"Post unique reference\",\"rdfTypes\":[{\"uri\":\"http://reference.data.gov.uk/def/central-government/CivilServicePost\",\"curie\":\"gov:CivilServicePost\"}],\"links\":[{\"uri\":\"http://reference.data.gov.uk/def/central-government/heldBy\",\"curie\":\"http://reference.data.gov.uk/def/central-government/heldBy\",\"target\":{\"nodeType\":\"cell-as-resource\",\"isRowNumberCell\":true,\"expression\":\"('#person' + value).urlify()\",\"rdfTypes\":[{\"uri\":\"http://xmlns.com/foaf/0.1/Person\",\"curie\":\"foaf:Person\"}],\"links\":[{\"uri\":\"http://xmlns.com/foaf/0.1/name\",\"curie\":\"foaf:name\",\"target\":{\"nodeType\":\"cell-as-literal\",\"expression\":\"value\",\"isRowNumberCell\":false,\"columnName\":\"Name\"}},{\"uri\":\"http://xmlns.com/foaf/0.1/mbox\",\"curie\":\"foaf:mbox\",\"target\":{\"nodeType\":\"cell-as-resource\",\"isRowNumberCell\":false,\"expression\":\"'mailto:' + value\",\"columnName\":\"Contact e-mail\",\"rdfTypes\":[],\"links\":[]}}]}},{\"uri\":\"http://www.w3.org/2000/01/rdf-schema#label\",\"curie\":\"rdfs:label\",\"target\":{\"nodeType\":\"cell-as-literal\",\"expression\":\"value\",\"isRowNumberCell\":false,\"lang\":\"en\",\"columnName\":\"Job Title\"}},{\"uri\":\"http://reference.data.gov.uk/def/central-government/postIn\",\"curie\":\"http://reference.data.gov.uk/def/central-government/postIn\",\"target\":{\"nodeType\":\"cell-as-resource\",\"isRowNumberCell\":false,\"expression\":\"value.urlify()\",\"columnName\":\"Unit\",\"rdfTypes\":[],\"links\":[{\"uri\":\"http://reference.data.gov.uk/def/central-government/hasPost\",\"curie\":\"http://reference.data.gov.uk/def/central-government/hasPost\",\"target\":{\"nodeType\":\"cell-as-resource\",\"isRowNumberCell\":false,\"expression\":\"'http://reference.data.gov.uk/id/department/bis/post/' + value\",\"columnName\":\"Post unique reference\",\"rdfTypes\":[],\"links\":[]}}]}}]}]}"; 18 | schema = mapper.readValue(json, RdfSchema.class); 19 | } 20 | 21 | @Test(groups={"rdf-schema-test"}) 22 | public void testSerialization() { 23 | TestUtils.isSerializedTo(schema, json); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/rdf/vocab/AddPrefixTest.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | import org.testng.annotations.Test; 4 | 5 | import org.deri.grefine.rdf.RdfSchema; 6 | 7 | import static org.testng.Assert.*; 8 | 9 | public class AddPrefixTest { 10 | 11 | @Test 12 | public void testAddNewPrefix() throws Exception{ 13 | RdfSchema schema = new RdfSchema(); 14 | assertFalse(schema.getPrefixesMap().containsKey("foaf")); 15 | schema.addPrefix("foaf", "http://xmlns.com/foaf/0.1/"); 16 | 17 | assertTrue(schema.getPrefixesMap().containsKey("foaf")); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/rdf/vocab/ImportPrefixTest.java: -------------------------------------------------------------------------------- 1 | package org.deri.grefine.rdf.vocab; 2 | 3 | import java.io.File; 4 | import java.io.InputStream; 5 | import java.util.List; 6 | 7 | import org.eclipse.rdf4j.repository.Repository; 8 | import org.eclipse.rdf4j.repository.RepositoryConnection; 9 | import org.eclipse.rdf4j.repository.sail.SailRepository; 10 | import org.eclipse.rdf4j.rio.RDFFormat; 11 | import org.eclipse.rdf4j.sail.memory.MemoryStore; 12 | import org.testng.annotations.Test; 13 | 14 | import org.deri.grefine.rdf.vocab.imp.VocabularySearcher; 15 | 16 | import static org.testng.Assert.*; 17 | 18 | public class ImportPrefixTest { 19 | 20 | @Test 21 | public void testImportAndSeach()throws Exception{ 22 | VocabularyImporter fakeImporter = new FakeImporter(); 23 | VocabularySearcher searcher = new VocabularySearcher(new File("tmp")); 24 | searcher.importAndIndexVocabulary("foaf", 25 | "http://xmlns.com/foaf/0.1/", 26 | "http://xmlns.com/foaf/0.1/", 27 | "1", 28 | fakeImporter); 29 | 30 | assertFalse(searcher.searchClasses("foaf:P", "1").isEmpty()); 31 | } 32 | 33 | } 34 | 35 | class FakeImporter extends VocabularyImporter{ 36 | 37 | private String classPrefix = "/org/deri/grefine/vocab/resources/"; 38 | 39 | @Override 40 | public void importVocabulary(String name, String uri, String fetchUrl, 41 | List classes, List properties) throws VocabularyImportException { 42 | try{ 43 | InputStream in = this.getClass().getResourceAsStream(classPrefix + "foaf.rdf"); 44 | Repository repos = getRepository(in, RDFFormat.RDFXML); 45 | getTerms(repos, name, uri, classes, properties); 46 | }catch(Exception e){ 47 | throw new RuntimeException(e); 48 | } 49 | } 50 | 51 | private Repository getRepository(InputStream in, RDFFormat format) throws Exception{ 52 | Repository repository = new SailRepository(new MemoryStore()); 53 | repository.initialize(); 54 | RepositoryConnection con = repository.getConnection(); 55 | con.add(in, "", format); 56 | con.close(); 57 | return repository; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/reconcile/factories/files/preview_properties.properties: -------------------------------------------------------------------------------- 1 | label= http://www.w3.org/2004/02/skos/core#prefLabel , http://xmlns.com/foaf/0.1/givenName , http://xmlns.com/foaf/0.1/familyName 2 | description=http://www.w3.org/2004/02/skos/core#definition , http://purl.org/dc/elements/1.1/description , http://purl.org/dc/terms/description 3 | image=http://xmlns.com/foaf/0.1/img -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/reconcile/factories/files/sample.rdf: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | Person 11 | 12 | 13 | give name 14 | 15 | 16 | Delbru 17 | 247d80518c87c6f8129d5a3ec60a07665eded006 18 | Renaud 19 | EN-Renaud 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/test/java/org/deri/grefine/reconcile/files/sample.ttl: -------------------------------------------------------------------------------- 1 | @prefix movie: . 2 | @prefix rdfs: . 3 | @prefix rdf: . 4 | @prefix ex: . 5 | 6 | 7 | a movie:film ; 8 | a ex:Movie; 9 | rdfs:label "sample" ; 10 | movie:initial_release_date 11 | "1985-07-24" . 12 | 13 | 14 | a movie:film_series ; 15 | rdfs:label "sample but not exact match" ; 16 | movie:initial_release_date 17 | "1994-09-28" . 18 | 19 | 20 | a movie:film ; 21 | a ex:Show; 22 | rdfs:label "sample but not exact match the long text will make the score less compared to the previous one" ; 23 | movie:initial_release_date 24 | "1999" . 25 | 26 | -------------------------------------------------------------------------------- /src/test/resources/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/test/resources/Thumbs.db -------------------------------------------------------------------------------- /src/test/resources/non-unit-testing.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/test/resources/org/deri/grefine/rdf/resources/rdfschema-payment.csv: -------------------------------------------------------------------------------- 1 | Directorate,Updated,TransNo,Service,Cost Centre,Supplier Name,Amount excl vat,Type,Column 2 | Adult & Community Services,09/04/2010,2650750,Magnet Leisure Centre,LM05,1st Choice - D B Driveways Limited,"1,875.00",Revenue 3 | Adult & Community Services,02/04/2010,2651845,Magnet Leisure Centre,LM05,STL Services,"3,495.00",Revenue 4 | -------------------------------------------------------------------------------- /src/test/resources/org/deri/grefine/reconcile/resources/preview_properties.properties: -------------------------------------------------------------------------------- 1 | label= http://www.w3.org/2004/02/skos/core#prefLabel , http://xmlns.com/foaf/0.1/givenName , http://xmlns.com/foaf/0.1/familyName 2 | description=http://www.w3.org/2004/02/skos/core#definition , http://purl.org/dc/elements/1.1/description , http://purl.org/dc/terms/description 3 | image=http://xmlns.com/foaf/0.1/img -------------------------------------------------------------------------------- /src/test/resources/org/deri/grefine/reconcile/resources/sample.rdf: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | Person 11 | 12 | 13 | give name 14 | 15 | 16 | Delbru 17 | 247d80518c87c6f8129d5a3ec60a07665eded006 18 | Renaud 19 | EN-Renaud 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/test/resources/rdfschema-payment.rdf: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 3,495.00 17 | 18 | 19 | 20 | 21 | 22 | 23 | 2651845 24 | 2651845 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 2650750 35 | 2650750 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 1,875.00 46 | 47 | 48 | -------------------------------------------------------------------------------- /src/test/resources/rdfschema1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/test/resources/rdfschema1.png -------------------------------------------------------------------------------- /src/test/resources/rdfschema2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/test/resources/rdfschema2.png -------------------------------------------------------------------------------- /src/test/resources/reconcile-test-suite.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/test/resources/test1.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/test/resources/test1.xlsx -------------------------------------------------------------------------------- /src/test/resources/test2.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/src/test/resources/test2.xlsx -------------------------------------------------------------------------------- /src/test/resources/testng.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /website/.htaccess: -------------------------------------------------------------------------------- 1 | RewriteEngine On 2 | RewriteBase / 3 | RewriteCond %{REQUEST_URI} !/(robots\.txt|favicon\.ico|style\.css|grefine-stuff\.css|.*\.js|images/.*|files/.*)$ 4 | RewriteRule .* index.php 5 | -------------------------------------------------------------------------------- /website/content/404.html: -------------------------------------------------------------------------------- 1 |

This page does not exist. The content you are looking for may have been 2 | moved elsewhere or removed, or you followed a faulty link.

3 |

Please use the navigation links at the top of this page, or your 4 | search engine of choice, to locate what you were looking for.

5 | -------------------------------------------------------------------------------- /website/content/docs.html: -------------------------------------------------------------------------------- 1 |

Choose a topic from the list on the left.

2 | -------------------------------------------------------------------------------- /website/content/extResources.html: -------------------------------------------------------------------------------- 1 |

2 | A number of people kindly provided materials and tutorials related to the RDF Extension. 3 | Please contact us if we forgot any related resources. 4 |

5 |

6 |

Screencasts

7 | 11 |

12 |

13 |

Tutorials:

14 | 20 |

21 |

22 |

Media

23 | 26 |

27 | -------------------------------------------------------------------------------- /website/content/faq.html: -------------------------------------------------------------------------------- 1 |

FAQ

2 |
    3 |
  1. Performance? ==> one label property, reduce data size
  2. 4 |
  3. No SPARQL endpoint or SPARQL endpoint with no text search? ==> CONSTRUCT query...
  4. 5 |
  5. 6 |

    How do I get the reconciled URI in the RDF exporter?

    7 |

    8 | using the GREL expression cell.recon.match.id 9 | 10 |

    11 |
  6. 12 |
  7. Silk Server support?
  8. 13 |
-------------------------------------------------------------------------------- /website/content/home-intro.html: -------------------------------------------------------------------------------- 1 |
2 | Screenshot of RDF schema 3 |
4 |

RDF Extension for Google Refine enables exporting interlinked RDF data from Google Refine projects.

5 |

6 | Main features 7 |

8 |
    9 |
  • Reconcile & interlink 10 |
      11 |
    • Reconcile against SPARQL endpoints, RDF dumps
    • 12 |
    • Search the Web for related RDF datasets
    • 13 |
    14 |
  • Export RDF 15 |
      16 |
    • GUI for defining the shape of the RDF graph
    • 17 |
    • Use you own vocabulary or import existing ones
    • 18 |
    • Autocomplete for property and class names
    • 19 |
    20 |
21 | 22 |

Download extension 0.5

23 |

24 | -------------------------------------------------------------------------------- /website/content/home-text.html: -------------------------------------------------------------------------------- 1 |

2 |

Getting started…

3 |
    4 |
  1. Make sure "extensions" folder exists in your Google Refine workspace
  2. 5 |
  3. Download the extension
  4. 6 |
  5. Extract the downloaded zip file to the "extensions" folder
  6. 7 |
  7. Restart Google Refine
  8. 8 |
9 | Visit the installation guide for more detailed instructions. For tutorials-like material see our showcases. For detailed and technical documentation see the documentation section. 10 |
11 | 12 |
13 |

News

14 |
15 |
0.5 released
16 |
This version ...
17 |
18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /website/content/installation.html: -------------------------------------------------------------------------------- 1 |
    2 |
  • 3 | Locate Google Refine workspace directory. You can locate it from Google Refine start page as seen in the figure below. 4 | 5 |
  • 6 |
  • 7 | If the workspace does not contain a folder named "extensions", create it. 8 |
  • 9 |
  • 10 | Download the extension. 11 |
  • 12 |
  • 13 | Unzip the downloaded file to the "extensions" folder you created in step 2. 14 |
  • 15 |
  • 16 | Restart Google Refine. You should see the "RDF" button at the upper right corner as in the figure below. 17 | 18 |
  • 19 |
-------------------------------------------------------------------------------- /website/content/publications.html: -------------------------------------------------------------------------------- 1 |

2 | Fadi Maali, Richard Cyganiak, Vassilios Peristeras
3 | Re-using Cool URIs: Entity Reconciliation Against LOD Hubs. (PDF)
4 | In Proceedings of the Linked Data on the Web Workshop 2011 (LDOW2011) 5 | Workshop at WWW2011, 2011 6 |

-------------------------------------------------------------------------------- /website/content/rdf-export-docs.html: -------------------------------------------------------------------------------- 1 |

2 | For detailed example and screenshots see RDF Export example 3 |

4 | 5 |

6 | With the export functionality, you can determine the intended structure of the RDF data by drawing a template graph. The exporter iterates through the project rows, evaluate expressions in the template graph and produce an equivalent RDF subgraph per row. The final result is the merge of all the subgraphs. 7 |

8 |

9 | The image below shows the main parts of a graph template. 10 |

11 |

12 | 13 |

14 |

15 | Any applied filters on the data affect the exported RDF (i.e. RDF data exported corresponds to the current visible rows). This allows getting RDF data for any custom subset of the data or using different schemas for different parts of the data. 16 |

17 |

18 | Notice that you can define multiple trees (i.e. multiple root nodes) as shown in the figure above. 19 |

20 |

21 | Terms from existing vocabularies can be imported. The exporter attempts to retrieve and index the terms so that they can be included in the autocompletion available for classes and properties addition. Additionally, by using a dump from -our lovely friend- prefix.cc URIs for popular prefixes are automatically suggested. 22 | 23 |

24 |

25 | Data can be exported in RDF/XML or Turtle using the "Export" menu. 26 |

-------------------------------------------------------------------------------- /website/content/rdf-export.html: -------------------------------------------------------------------------------- 1 | This is a simple example showing how RDF can be extracted from a sample CSV file (you can download the whole project and then directly import it in Google Refine) 2 | 3 |
    4 |
  • 5 | Create a Google Refine project based on the highest-earning senior civil servants in UK as published by the Cabinet Office on 1 June 2010. 6 | The first few lines of the sample CSV file is shown in the figure below. 7 |

    8 | 9 |

    10 |

    11 | The intended RDF we want to export should look like (for the first line): 12 |

    13 | 	  
    14 | <http://lab.linkeddata.deri.ie/person/0> 
    15 |         a foaf:Person ; 
    16 |         foaf:name "Stephan Wilcke" ; 
    17 |         foaf:title "Chief Executive Officer"@en .
    18 |         <http://lab.linkeddata.deri.ie/annualPayRate> "150,000 - 154,999" . 
    19 | 
    20 | <http://lab.linkeddata.deri.ie/organization/asset-protection-agency>  
    21 |         a foaf:Organization ; 
    22 |         foaf:name "Asset Protection Agency"@en . 
    23 |         foaf:member <http://lab.linkeddata.deri.ie/person/0>  ;
    24 | 	  
    25 | 	
    26 |

    27 |
  • 28 |
  • 29 | Using Edit RDF Skeleton... command available under the RDF menu, we design the following skeleton: 30 |

    31 | 32 |

    33 |
      34 |
    • we set the base URI at the top of the dialog to http://lab.linkeddata.deri.ie/test/
    • 35 |
    • Prefixs can be managed by the Add Prefix and Manage vocabularies
    • 36 |
    • We created the skeleton by repeatedly using add rdf:type and add property
    • 37 |
    • We created a new property annualPayRate which will be defined within the default namespace specified by the base URI
    • 38 |
    39 |

    40 | The figure below shows an example of a node dialog (the organization URI node) 41 |

    42 | Node configuration Example 43 |
    44 |

    45 |
    46 | Notice the custom expression used to define the URI. The preview/edit shows sample values of the first 10 rows as shown below 47 |

    48 | Node configuration Example 49 |

    50 |
    51 |
  • 52 |
  • 53 | Saving the skeleton by clicking OK. Notice that a "Save RDF schema skeleton" operation is added to the history panel of Google Refine. As other operation, this can be undone/redone and exported/re-applied. 54 |

    55 | 56 |

    57 |
  • 58 |
  • 59 | Export RDF data as RDF/XML or Turtle from the Export menu. 60 |

    61 | Export 62 |

    63 |
  • 64 |
-------------------------------------------------------------------------------- /website/content/reconciliation-docs.html: -------------------------------------------------------------------------------- 1 |

2 | Reconciliation is identifying multiple representations of the same real-world object. In the Semantic Web field, it is usually known as instance matching and refers to identifying equivalent resources in two RDF datasets. 3 |

4 |

Reconciliation in Google Refine

5 |

6 | Google Refine can reconcile values in a specific column to entities in Freebase. Reconciliation to Freebase is a very useful operation as it helps mapping ambiguous textual values to precisely identified Freebase entities. 7 |

8 | Upon reconciliation request, Google Refine starts by invoking the Freebase reconciliation service with a sample set of data values. It uses the result to guess a type for the values in the corresponding column. 9 |

10 |

11 | The list of guessed types are presented to the user who can select a specific type or continue without choosing any. The user can also choose to include additional properties in the request to help enhancing the precision of the reconciliation process. Additional properties need to be clearly identified to the reconciliation service i.e. via IDs understandable by the service. To help the user in that a reconciliation service can support autocomplete for properties search. 12 |

13 |

14 | Figure below shows a screenshot of the reconciliation interface resulting from reconciling a set of city names against Freebase. 15 |

16 | 17 |
18 |

19 | In the Figure we see that a set of types are suggested with City/Town/Village (with ID /location/citytown) at the top of the list. The right part of the figure shows property autocompletion in action. Proceeding with reconciliation as shown in the figure means that the set of values will be reconciled against Freebase 20 | for entities of type /location/citytown taken into account that the city is contained by a location matching the corresponding content of the state column in the data. 21 |

22 |

23 | After receiving the response, the top three matching candidates for each value are presented to the user. the user can then choose to accept one of them or refuse them all. To better inform the user decision, a resource preview is available per candidate where basic information about the candidate is provided. Additionally, a numeric facet is built based on the scores of results provided by the service, helping the 24 | user to find an acceptable threshold for the score and mass accept or reject certain results. 25 |

26 |

27 | Figure below shows a screenshot where a preview for the candidate labeled "Cambridge" is presented. Results marked as an "exact match" will be automatically accepted by Google Refine without the need of 28 | user intervention. 29 |

30 | 31 |

-------------------------------------------------------------------------------- /website/content/requirements.html: -------------------------------------------------------------------------------- 1 |

As Neologism is a Drupal’s based module and it is provided for download as a Drupal site with a personalized installation profile you can read the current System requirements documentation at Drupal’s documentation as an extension of the requirement for Neologism.

2 | 3 |

Resources

4 |

A server hosting a full installation of a Neologism site requires at least 80MB of disk space assuming that you will install Extjs-3.0.0 completely.

5 | 6 |

Webservers

7 |
    8 |
  • Web server that can run PHP 5.2 or higher and supports Drupal Clean URLs (Apache with mod_rewrite recommended)
  • 9 |
  • Microsoft IIS
    Drupal core will work using IIS 5, IIS 6, or IIS 7 if PHP is configured correctly. To achieve clean URLs you may need to use a third party product. For IIS7 you can use the Microsoft URL Rewrite Module or a third party solution.
  • 10 |
11 | 12 |

Database server

13 |

Recommended: MySQL

14 |
    15 |
  • Neologism supports MySQL 4.1 or higher.
  • 16 |
17 | 18 |

PostgreSQL

19 |
    20 |
  • Neologism supports PostgreSQL 7.1 or higher.
  • 21 |
  • PHP 5.2.6 for Windows has a bug in its pgsql extension. You will need to replace it with the php_pgsql.dll from version 5.2.5.
  • 22 |
23 | 24 |

PHP

25 |

PHP 5.2 or higher (PHP 5.2 recommended).

-------------------------------------------------------------------------------- /website/content/search-recon-doc.html: -------------------------------------------------------------------------------- 1 |

For detailed example and screenshots see Reconciling the top universities against the New York Time RDF data

SPARQL fulltext search extensions are provided by a number of vendors (e.g. LARQ and Virtuoso). Giving the absence of standardisation, each vendor uses its own proprietary syntax to express full-text search queries. Currently, we support LARQ, Virtuoso and BigOWLIM.

The example below shows a sample SPARQL query

LARQ query with labeling property is: rdfs:label
Input: label="Galway"

	PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> 
	PREFIX pf:<http://jena.hpl.hp.com/ARQ/property#> 
	SELECT ?entity ?label (MAX(?score) AS ?score1) 
	WHERE{
		?entity <http://www.w3.org/2000/01/rdf-schema#label> ?label.
		(?label ?score) pf:textMatch 'Galway'.
	}GROUP BY ?entity ?label
	ORDER BY DESC(?score1) LIMIT 3
		
Virtuoso query with labeling property is: rdfs:label and skos:prefLabel
Input: label="Galway", type= {"<http://dbpedia.org/ontology/PopulatedPlace>","<http://dbpedia.org/class/yago/Locations>"}

	SELECT DISTINCT ?entity ?label ?score1
	WHERE{
		?entity ?p ?label.
		?label <bif:contains> "'Galway'" OPTION(score ?score1). 
		FILTER (?p=<http://www.w3.org/2000/01/rdf-schema#label> || 
		        ?p=<http://www.w3.org/2004/02/skos/core#prefLabel>). 
		?entity a ?type.
		FILTER (?type IN (<http://dbpedia.org/ontology/PopulatedPlace>, 
		                   <http://dbpedia.org/class/yago/Locations>)).
		FILTER isIRI(?entity). 
	} ORDER BY desc(?score1) LIMIT 6
		
Property autocompletion using LARQ
Input: "nam"

	PREFIX pf: 
	SELECT DISTINCT ?p ?label1 ?score1 ?label2 ?score2 
	WHERE{
		[] ?p ?v.
		{
			OPTIONAL {
				?p  ?label1.
				(?label1 ?score1) pf:textMatch 'nam*'. 
			}
			OPTIONAL {
				?p  ?label2. 
			(?label2 ?score2) pf:textMatch 'nam*'. 
			}
			FILTER (bound(?label1) || bound(?label2))
		}
	} ORDER BY desc(?score1) LIMIT 10
		
-------------------------------------------------------------------------------- /website/content/showcases.html: -------------------------------------------------------------------------------- 1 |

Select example from the left menu

-------------------------------------------------------------------------------- /website/content/sindice-docs.html: -------------------------------------------------------------------------------- 1 |

2 | For detailed example and screenshots see Reconciling DERI researchers using Sindice 3 |

4 |

5 | Sindice is used for two purposes: 6 |

    7 |
  1. 8 |

    Identify related RDF datasets

    9 |
    10 | Using Sindice Search API and Cache API, RDF Extension can suggest RDF datasets that contain related data to a column in a Google Refine project. The suggestion is based on examining the results returned by searching a sample set of the data via Sindice. 11 |
    12 |
  2. 13 |
  3. 14 |

    Reconcile datasets

    15 |
    16 | You can define Sindice as a target for reconciliation. Most of the times, you will use a domain-restricted reconciliation service (i.e. restrict Sindice search to a particular domain) but you have the option to search the whole Sindice index. Sindice reconciliation service is defined by default once you install the extension (you can find it in the standard Google Refine list of defined reconciliation services labeled Sindice). Further domain-restricted Sindice reconciliation services can be defined through the RDF menu. 17 |
    18 |
  4. 19 |
20 |

-------------------------------------------------------------------------------- /website/content/sindice-recon.html: -------------------------------------------------------------------------------- 1 |

2 | In this example, I will reconcile a list of people working at the Digital Enterprise Research Institute DERI with the help of Sindice. The CSV file can be downloaded. 3 |

4 |
    5 |
  • 6 | Create a Google Refine project from the CSV file. A snippet is shown in the figure below. 7 |

    8 | 9 |

    10 |
  • 11 |
  • 12 | From the "name" column drop down menu, select Discover related RDF datasets as shown in the figure below. This will query Sindice for datasets containing RDF data about the first ten rows. 13 |

    14 | 15 |

    16 |
  • 17 |
  • 18 | Querying Sindice might take some time (up to 5 minutes). The result is a list of domains containing related data as shown below. Select www.deri.ie and then hit the Add domain-specific Sindice service button. This will define a reconciliation service that search Sindice for RDF data defined under www.deri.ie. 19 |

    20 | 21 |

    22 |
  • 23 |
  • 24 | Choose start reconciling... from the column drop down menu of the "name" column. Select the Sindice (www.deri.ie) added to the list of defined reconciliation services. As shown below, type guessing will suggest a list of types with foaf:Person at the top. 25 |

    26 | 27 |

    28 |
  • 29 |
  • 30 | Go ahead with the start reconciling button. After a while, google Refine presents reconciliation results with factes about reconciliation decision and top candidate score (see figure below). 31 |

    32 | 33 |

    34 |
  • 35 |
      36 |

      37 | Unfortunately, RDFa data on deri.ie is not perfect (yet!). Thus, many of the URIs are broken. I already pinged our lovely web master and hope by the time you try, it will be fixed and you will get awesome results! 38 |

      39 |

      40 | Alternatively, Sindice domain-specific services can be directly added through the RDF menu as shown below. This will directly add the service to the list of defined reconciliation services without going through the step of discovering related RDF datasets. 41 |

      42 |

      43 | 44 |

      45 |

      46 | 47 |

      48 | 49 |

      50 | For more details and technical documentation see Reconciliation using Sindice 51 |

      -------------------------------------------------------------------------------- /website/content/support-dev.html: -------------------------------------------------------------------------------- 1 |

      support will be here

      -------------------------------------------------------------------------------- /website/content/team.html: -------------------------------------------------------------------------------- 1 |

      Fadi Maali

      2 |

      Richard Cyganiak

      -------------------------------------------------------------------------------- /website/files/dump/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/dump/Thumbs.db -------------------------------------------------------------------------------- /website/files/dump/screenshots/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/dump/screenshots/Thumbs.db -------------------------------------------------------------------------------- /website/files/dump/screenshots/add-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/dump/screenshots/add-service.png -------------------------------------------------------------------------------- /website/files/dump/screenshots/details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/dump/screenshots/details.png -------------------------------------------------------------------------------- /website/files/dump/screenshots/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/dump/screenshots/preview.png -------------------------------------------------------------------------------- /website/files/dump/screenshots/reconciliation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/dump/screenshots/reconciliation.png -------------------------------------------------------------------------------- /website/files/dump/screenshots/results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/dump/screenshots/results.png -------------------------------------------------------------------------------- /website/files/dump/screenshots/universities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/dump/screenshots/universities.png -------------------------------------------------------------------------------- /website/files/export/screenshots/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/export/screenshots/Thumbs.db -------------------------------------------------------------------------------- /website/files/export/screenshots/earners.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/export/screenshots/earners.png -------------------------------------------------------------------------------- /website/files/export/screenshots/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/export/screenshots/export.png -------------------------------------------------------------------------------- /website/files/export/screenshots/node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/export/screenshots/node.png -------------------------------------------------------------------------------- /website/files/export/screenshots/operation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/export/screenshots/operation.png -------------------------------------------------------------------------------- /website/files/export/screenshots/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/export/screenshots/preview.png -------------------------------------------------------------------------------- /website/files/export/screenshots/schema.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/export/screenshots/schema.png -------------------------------------------------------------------------------- /website/files/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/images/Thumbs.db -------------------------------------------------------------------------------- /website/files/images/preview-fb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/images/preview-fb.png -------------------------------------------------------------------------------- /website/files/images/reconcile-fb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/images/reconcile-fb.png -------------------------------------------------------------------------------- /website/files/installation/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/installation/Thumbs.db -------------------------------------------------------------------------------- /website/files/installation/verify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/installation/verify.png -------------------------------------------------------------------------------- /website/files/installation/workspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/installation/workspace.png -------------------------------------------------------------------------------- /website/files/sindice/screenshots/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sindice/screenshots/Thumbs.db -------------------------------------------------------------------------------- /website/files/sindice/screenshots/add-service-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sindice/screenshots/add-service-2.png -------------------------------------------------------------------------------- /website/files/sindice/screenshots/add-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sindice/screenshots/add-service.png -------------------------------------------------------------------------------- /website/files/sindice/screenshots/datasets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sindice/screenshots/datasets.png -------------------------------------------------------------------------------- /website/files/sindice/screenshots/derians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sindice/screenshots/derians.png -------------------------------------------------------------------------------- /website/files/sindice/screenshots/discover_datasets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sindice/screenshots/discover_datasets.png -------------------------------------------------------------------------------- /website/files/sindice/screenshots/reconciliation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sindice/screenshots/reconciliation.png -------------------------------------------------------------------------------- /website/files/sindice/screenshots/results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sindice/screenshots/results.png -------------------------------------------------------------------------------- /website/files/sparql/screenshots/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sparql/screenshots/Thumbs.db -------------------------------------------------------------------------------- /website/files/sparql/screenshots/add-service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sparql/screenshots/add-service.png -------------------------------------------------------------------------------- /website/files/sparql/screenshots/autocomplete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sparql/screenshots/autocomplete.png -------------------------------------------------------------------------------- /website/files/sparql/screenshots/details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sparql/screenshots/details.png -------------------------------------------------------------------------------- /website/files/sparql/screenshots/gdps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sparql/screenshots/gdps.png -------------------------------------------------------------------------------- /website/files/sparql/screenshots/popup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sparql/screenshots/popup.png -------------------------------------------------------------------------------- /website/files/sparql/screenshots/reconciliation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sparql/screenshots/reconciliation.png -------------------------------------------------------------------------------- /website/files/sparql/screenshots/results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/files/sparql/screenshots/results.png -------------------------------------------------------------------------------- /website/grefine-stuff.css: -------------------------------------------------------------------------------- 1 | div.code{ 2 | border:solid 1px #C5A584; 3 | background-color:#F8EFE0; 4 | margin-bottom:0.5em; 5 | } 6 | 7 | div.code pre, div.code div.input{ 8 | border:dashed 1px #CCCCCC; 9 | background-color:#FFFFFF; 10 | margin:0.5em; 11 | } 12 | 13 | div.code div.code-header{ 14 | font-family:Georgia,Times,"Times New Roman",serif; 15 | font-size:1.4em; 16 | color:#3C3020; 17 | } 18 | 19 | ul.steps li{ 20 | background-repeat:no-repeat; 21 | list-style:none outside none; 22 | margin:0 0 0.8em -2px; 23 | padding:1px 0 0 40px; 24 | } 25 | 26 | .step1{ 27 | background-image: url("images/number1.png"); 28 | } 29 | 30 | .step2{ 31 | background-image: url("images/number2.png"); 32 | } 33 | 34 | .step3{ 35 | background-image: url("images/number3.png"); 36 | } 37 | 38 | .step4{ 39 | background-image: url("images/number4.png"); 40 | } 41 | 42 | .step5{ 43 | background-image: url("images/number5.png"); 44 | } 45 | 46 | .step6{ 47 | background-image: url("images/number6.png"); 48 | } 49 | 50 | .note{ 51 | background-image: url("images/info.png"); 52 | background-repeat:no-repeat; 53 | margin:0 0 0.8em -2px; 54 | padding:1px 0 0 40px; 55 | } 56 | 57 | .attention{ 58 | background-image: url("images/icon_attention.png"); 59 | background-repeat:no-repeat; 60 | margin:0 0 0.8em -2px; 61 | padding:1px 0 0 40px; 62 | } 63 | 64 | span.instruction{ 65 | font-size:120%; 66 | font-family:monospace; 67 | font-weight:bold; 68 | } 69 | ul.features{ 70 | margin-top:0px; 71 | margin-left: 460px; 72 | padding-left: 3.2em; 73 | list-style:none; 74 | } 75 | .subheader{ 76 | margin-bottom:6px; 77 | margin-left: 460px; 78 | padding-left: 3.2em; 79 | font-family: Georgia, Times, "Times New Roman", serif; 80 | 81 | 82 | } 83 | #features_title{ 84 | margin-bottom:0; 85 | } -------------------------------------------------------------------------------- /website/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/Thumbs.db -------------------------------------------------------------------------------- /website/images/button-dark-whitebg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/button-dark-whitebg.png -------------------------------------------------------------------------------- /website/images/button-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/button-dark.png -------------------------------------------------------------------------------- /website/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/favicon.png -------------------------------------------------------------------------------- /website/images/icon_attention.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/icon_attention.png -------------------------------------------------------------------------------- /website/images/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/info.png -------------------------------------------------------------------------------- /website/images/lidrc-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/lidrc-logo.png -------------------------------------------------------------------------------- /website/images/nuig-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/nuig-logo.png -------------------------------------------------------------------------------- /website/images/number1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/number1.png -------------------------------------------------------------------------------- /website/images/number2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/number2.png -------------------------------------------------------------------------------- /website/images/number3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/number3.png -------------------------------------------------------------------------------- /website/images/number4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/number4.png -------------------------------------------------------------------------------- /website/images/number5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/number5.png -------------------------------------------------------------------------------- /website/images/number6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/number6.png -------------------------------------------------------------------------------- /website/images/screenshots/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/screenshots/Thumbs.db -------------------------------------------------------------------------------- /website/images/screenshots/schema.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/screenshots/schema.png -------------------------------------------------------------------------------- /website/images/screenshots/schema3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/screenshots/schema3.png -------------------------------------------------------------------------------- /website/images/sfi-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/sfi-logo.png -------------------------------------------------------------------------------- /website/images/skeleton_example_annotated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/skeleton_example_annotated.png -------------------------------------------------------------------------------- /website/images/tabs-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/tabs-dark.png -------------------------------------------------------------------------------- /website/images/tabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/tabs.png -------------------------------------------------------------------------------- /website/images/uri_expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stkenny/grefine-rdf-extension/b3580d11b62b124be3942931313da00b13b93b6a/website/images/uri_expression.png --------------------------------------------------------------------------------