Как сопоставить файл Json с созданной онтологией? Как получить значения из файла rdf- xml? - PullRequest
0 голосов
/ 13 апреля 2020

1- I Создан класс OpenOntology для импорта онтологий, созданных с использованием платформы Protege. (API Jena использовался для импорта онтологий в Eclipse)

2- I Создан класс JsonReader для импорта Json Файл "ExampleOfDataFromIGLUCO" в Eclipse. Это пример данных для Igluco

3 - создан класс "OpenOntology" и распечатывается онтология, импортированная в формате RDF / XML

. Я хочу отобразить данные из файла json (пример данных ) в онтологию (формат xml / rdf)


import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;

import org.apache.jena.*;
import org.apache.jena.ontology.DatatypeProperty;
import org.apache.jena.ontology.ObjectProperty;
import org.apache.jena.ontology.OntClass;
import org.apache.jena.ontology.OntModel;
import org.apache.jena.ontology.OntProperty;
import org.apache.jena.rdf.model.InfModel;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.NodeIterator;
import org.apache.jena.rdf.model.RDFReader;
import org.apache.jena.rdf.model.RDFWriter;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.StmtIterator;
import org.apache.jena.reasoner.ValidityReport;
import org.apache.jena.riot.RDFFormat;
import org.apache.jena.riot.RDFLanguages;
import org.apache.jena.riot.RDFParser;
import org.apache.jena.riot.system.ErrorHandlerFactory;
import org.apache.jena.riot.system.StreamRDF;
import org.apache.jena.util.FileManager;
import org.apache.jena.util.iterator.ExtendedIterator;
import org.apache.jena.vocabulary.RDF;

import jena.riot;

public class OpenOntology {


    public Model loadschema() {
        Model schema=null;
        schema=ModelFactory.createOntologyModel();              
        java.io.InputStream inschema= FileManager.get().open("C:/Users/itm/Desktop/Master/Memoire 3/OMDPontology.owl");
    schema.read(inschema,null);
     schema.write(System.out, "RDF/XML");
    //  NodeIterator iter = schema.listObjects(  );
    //  while (iter.hasNext(  )) {
    //       System.out.println("  " + iter.next(  ).toString(  ));
    //   }

    return schema;
    }

    }```
    ```package src;

    import java.io.FileReader;
    import java.util.Iterator;

    import org.apache.jena.atlas.json.JsonObject;
    import org.json.simple.JSONArray;
    import org.json.simple.JSONObject;
    import org.json.simple.parser.JSONParser;

    public class JsonReader {

        public String JsonReaderFile (){

            String finalData=null;
        try {


            JSONParser parser = new JSONParser();
            try {

                Object obj = parser.parse(new FileReader("C:\\Users\\itm\\Desktop\\Master\\Memoire 3\\ExampleOfDataFromIGLUCOJSON.json"));





                JSONObject jsonObject = (JSONObject) obj;



                JSONArray data = (JSONArray) jsonObject.get("data");


                Iterator<JSONObject> iterator = data.iterator();
                while (iterator.hasNext()) {
                    finalData=iterator.next().toJSONString();
                    System.out.println(finalData);

                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        return finalData;
    }

    }```

    ```package src;

    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.util.ArrayList;
    import java.util.HashMap;

    import org.apache.commons.beanutils.PropertyUtils;
    import org.apache.jena.atlas.json.JsonObject;
    import org.apache.jena.rdf.model.Model;
    import org.json.simple.JSONObject;
    import org.json.simple.parser.JSONParser;
    import org.json.simple.parser.ParseException;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    import org.json.simple.JSONArray;
    import org.json.simple.JSONObject;
    import org.json.simple.parser.JSONParser;

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Iterator;

    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    public class mainExample {
    public static void main(String[] args) throws ParseException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, IOException, NoSuchFieldException, SecurityException, SAXException, ParserConfigurationException {
        OpenOntology openontology=new OpenOntology();
        System.out.println("Adding OMDP ontology");
        Model loadSchema=openontology.loadschema();



        System.out.println("End OMDP ontology");
        System.out.println("---------------------------------------------------------------------------------");
        System.out.println("Adding JSON Reader");
        JsonReader jsonreader=new JsonReader();
        String jsonString=jsonreader.JsonReaderFile();
        System.out.println(jsonString);
        System.out.println("End JSON Reader");
        System.out.println("---------------------------------------------------------------------------------");




        String sourceAttribute = "source.type.device";
        String targetAttribute =  "LabTest.BloodGlucoseTest.has_lab_test.has_value";


        System.out.println(targetAttribute);
        HashMap<String, String> sourceToTargetMapping = new HashMap<String, String>();
        sourceToTargetMapping.put(sourceAttribute, targetAttribute);

        JSONParser parser = new JSONParser();   

        JSONObject jsonObject = (JSONObject)parser.parse(jsonString); 
        System.out.println(jsonObject.toJSONString());

        String[] fieldlNames = sourceAttribute.split("\\.");
        System.out.println(fieldlNames[0]+" "+fieldlNames[1] );

        Object obj = jsonObject;

        for (int i = 0; i < fieldlNames.length; i++) {

            if(obj instanceof JSONObject) { 
                System.out.println("obj 1: "+obj);
                System.out.println("fieldlNames[i] "+fieldlNames[i]);


                obj = ((JSONObject)obj).get(fieldlNames[i]);
                System.out.println(obj);


            }
        }







    PropertyUtils.setNestedProperty(loadSchema, targetAttribute, obj);



    //  System.out.println("Target set to: " + targetBean.getInnerBeanLevel1().getInnerBeanLevel2().getS());




    }
    }```


...