在shell中使用简单的命令行将OWL/XML转换为RDF/XML



我请求您帮助创建一个将OWL/XML转换为RDF/XML的转换器。我的目的是通过一个带有bash的简单shell命令来使用OWLapi 2。我的文件是OWL/XML格式的,但我必须将它们转换为RDF/XML才能在我的fuseki数据库中发送它们。我可以转换每个文件,这要感谢protesamug或在线转换器,但我有一千多个文件要转换。

查看我当前的java文件(但我不知道如何使用它):

package owl2rdf;
import java.io.File;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.io.RDFXMLOntologyFormat;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyManager;
@SuppressWarnings("deprecation")
public class owl2rdf {
public static void main(String[] args) throws Exception {
    // Get hold of an ontology manager
    OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
    // Load the ontology from a local files
    File file = new File(args[0]);
    System.out.println("Loaded ontology: " + file);
    OWLOntology ontology = manager.loadOntologyFromOntologyDocument(file);
    // Get the ontology format ; in our case it's normally OWL/XML
    OWLOntologyFormat format = manager.OWLOntologyFormat(file);
    System.out.println("    format: " + format);
    // save the file into RDF/XML format
    RDFXMLOntologyFormat rdfxmlFormat = new RDFXMLOntologyFormat();
    manager.saveOntology(ontology, rdfxmlFormat, IRI.create(file));
    }
}

当我执行这段代码时,我有很多与异常相关的错误,我完全不理解,但我看到这是一个常见的错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
Caused by: java.lang.NoClassDefFoundError: com/google/inject/Provider
Caused by: java.lang.ClassNotFoundException: com.google.inject.Provider

将OWL/XML文件的整个存储库更改为RDF/XML文件:

1-创建owl2rdf.java包

package owl2rdf;
//import all necessary classes
import java.io.File;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.io.RDFXMLOntologyFormat;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyManager;
@SuppressWarnings("deprecation")
public class owl2rdf {
#create a main() function to take an argument; here in the example one argument only
    public static void main(String[] args) throws Exception {
        // Get hold of an ontology manager
        OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
        // Load the ontology from a local files
        File file = new File(args[0]);
        System.out.println("Loaded ontology: " + file);
        OWLOntology ontology = manager.loadOntologyFromOntologyDocument(file);
        // save the file into RDF/XML format
        //in this case, my ontology file and format already manage prefix
        RDFXMLOntologyFormat rdfxmlFormat = new RDFXMLOntologyFormat();
        manager.saveOntology(ontology, rdfxmlFormat, IRI.create(file));
    }
}

2-感谢Java-IDE,如Eclipse或其他东西,管理所有依赖(repo Maven,下载jar, classplath等)

创建bash脚本my- script .sh;这里绝对没有优化

#!/bin/bash
cd your-dir
for i in *
do
#get the absolute path; be careful, realpath comes with the latest coreutils package
    r=$(realpath "$i")
    #to be not disturb by relative path with java -jar, I put the .jar in the parent directory
    cd ..
    java -jar owl2rdf.jar "$r"
    cd your-dir
done
echo "Conversion finished, see below if there are errors."

4-执行脚本$ chmod +x my-script.sh;./my-script

5-哈哈:你所有的OWL/XML都转换成RDF/XML。例如,您可以将它们导入fuseki或sesame数据库。

最新更新