0

私のコードで見つかったこの開始は、JSON ファイルからのものです。私のJSONファイルには、同じ名前の「開始」がたくさんあります。たとえば、この JSON ファイルでは、最初に重複があります (両方のコンテンツが「audi」になっています)。

{"rel": "AtLocation", "weight": 0.5, "dataset": "/d/dbpedia/en", "sources": ["/s/dbpedia/3.7"], "id": "0209765bf7185615ef242513f61ca0f61efe2a04", "features": ["audi AtLocation -", "audi - curitiba", "- AtLocation curitiba"], "end": "curitiba", "license": "/l/CC/By-SA", "uri": "/a/[AtLocation/,audi/,curitiba/]", "start": "audi", "context": "/ctx/all", "surfaceText": null}

{"rel": "AtLocation", "weight": 0.5, "dataset": "/d/dbpedia/en", "sources": ["/s/dbpedia/3.7"], "id": "5158d1cfce728efb3e42840d166ec06153a3d77d", "features": ["audi AtLocation -", "audi - ingolstadt", "- AtLocation ingolstadt"], "end": "unite_state", "license": "/l/CC/By-SA", "uri": "/a/[AtLocation/,audi/,ingolstadt/]", "start": "audi", "context": "/ctx/all", "surfaceText": null}

これは私のJavaコードです:

String start = (String) jsonObject.get("start");  
StartVertex startV = new StartVertex(start);  
helloGraphDB.addVertex(startV);    

同じ "audi" の addVertex を 2 回実行したくありません。

ありがとうございました。

4

3 に答える 3

1

`arraylist を使用して、値が既にaddVertexに挿入されているかどうかを確認できます

お気に入り :

ArrayList addedVertex_Val = new ArrayList();

    String start = (String) jsonObject.get("start");
    boolean shouldInsert = true;

    for (int al_length = 0; al_length < addedVertex_val.size(); al_length++) {
        String val = addedVertex_val.get(al_length).toString();
        if (val.equals(start)) {
            shouldInsert = false;
            break;
        }
    }

    if (shouldInsert) {
        StartVertex startV = new StartVertex(start);
        helloGraphDB.addVertex(startV);
        addedVertex_Val.add(startV);
    }

`

于 2012-09-26T10:23:23.323 に答える
1

配列リストの代わりに HashMap を使用することもできます。

ArrayList を直線的にチェックするよりも効率的です。

HashMap に開始点 (「アウディ」など) があるかどうかを確認する必要があります。そうでない場合は、グラフと HashMap に追加できます。HashMap に既に存在する場合は、両方の追加をスキップできます。

String a = "{\"rel\": \"AtLocation\", \"weight\": 0.5, \"dataset\": \"/d/dbpedia/en\", \"sources\": [\"/s/dbpedia/3.7\"], \"id\": \"0209765bf7185615ef242513f61ca0f61efe2a04\", \"features\": [\"audi AtLocation -\", \"audi - curitiba\", \"- AtLocation curitiba\"], \"end\": \"curitiba\", \"license\": \"/l/CC/By-SA\", \"uri\": \"/a/[AtLocation/,audi/,curitiba/]\", \"start\": \"audi\", \"context\": \"/ctx/all\", \"surfaceText\": null}";
        String b = "{\"rel\": \"AtLocation\", \"weight\": 0.5, \"dataset\": \"/d/dbpedia/en\", \"sources\": [\"/s/dbpedia/3.7\"], \"id\": \"5158d1cfce728efb3e42840d166ec06153a3d77d\", \"features\": [\"audi AtLocation -\", \"audi - ingolstadt\", \"- AtLocation ingolstadt\"], \"end\": \"unite_state\", \"license\": \"/l/CC/By-SA\", \"uri\": \"/a/[AtLocation/,audi/,ingolstadt/]\", \"start\": \"audi\", \"context\": \"/ctx/all\", \"surfaceText\": null}";
        JSONParser p = new JSONParser();
        JSONObject jsonA = (JSONObject) p.parse( a );
        JSONObject jsonB = (JSONObject) p.parse( b );
        HashMap<String, Integer> map = new HashMap<String, Integer>();

        String start = (String) jsonA.get( "start" );
        System.out.println( "Does map contains 'audi' for start:" + map.containsKey( start ) );
        if( !map.containsKey( start ) )
        {
            map.put( start, 1 );
            System.out.println( "Adding to graph" );
        }
        System.out.println( "Does map contains 'audi' for start:" + map.containsKey( start ) );

        start = (String) jsonB.get( "start" );
        if( !map.containsKey( start ) )
        {
            map.put( start, 2 );
            System.out.println( "Adding to graph" );
        }

        System.out.println( "Does map contains 'audi' for start:" + map.containsKey( start ) );

私が得た出力:

Does map contains 'audi' for start:false
Adding to graph
Does map contains 'audi' for start:true
Does map contains 'audi' for start:true
于 2012-09-26T13:13:32.947 に答える
0
package com.infinitegraph.samples.hellograph;

// Import all InfiniteGraph packages
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.infinitegraph.*;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
// Import SLF4J logging packages
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.infinitegraph.BaseVertex;
import java.util.HashMap;

public class HelloGraph
{

    public static void main(String[] args)
    {
                BufferedReader br = null;
                JSONParser parser = new JSONParser();

        // Set up logging for the HelloGraph class
        Logger logger = LoggerFactory.getLogger(HelloGraph.class);

        // Create null transaction, null graph database instance
        Transaction tx = null;
        GraphDatabase helloGraphDB = null;

        // Name for graph database and property file
        String graphDbName = "HelloGraph";
        String propertiesFileName = "HelloGraph.properties";    

        try
        {
            try
            {
                // Delete graph database if it already exists
                GraphFactory.delete(graphDbName, propertiesFileName);
            }
            catch (StorageException sE)
            {
                logger.info(sE.getMessage());
            }

            // HINT: Add code to create graph database and its contents
            // Create graph database
            logger.info("> Creating graph database ...");
            GraphFactory.create(graphDbName, propertiesFileName);

            // Open graph database
            logger.info("> Opening graph database ...");
            helloGraphDB = GraphFactory.open(graphDbName, propertiesFileName);

            // Begin transaction
            logger.info("> Starting a read/write transaction ...");
            tx = helloGraphDB.beginTransaction(AccessMode.READ_WRITE);

            //create head vertex
            HeaderVertex head = new HeaderVertex("JSON File");
            helloGraphDB.addVertex(head);

            try {
                String sCurrentLine;

                br = new BufferedReader(new FileReader("C:/Users/ji/Desktop/example3.json"));

                HashMap<String, Integer> map = new HashMap <String, Integer>();

                while ((sCurrentLine = br.readLine()) != null) {

                    Object obj;

                    try {
                        obj = parser.parse(sCurrentLine);
                        JSONObject jsonObject = (JSONObject) obj;

                        //code to create vertex
                        logger.info("> Creating Start vertices ...");     
                        String start = (String) jsonObject.get("start");
                        StartVertex startV = new StartVertex(start);
                        if (!map.containsKey(start))
                        {
                            map.put(start,1);
                            helloGraphDB.addVertex(startV); 
                        }

                        //System.out.println(end);
                        String end = (String) jsonObject.get("end");
                        EndVertex endV = new EndVertex(end);
                        helloGraphDB.addVertex(endV);

                        String rel = (String) jsonObject.get("rel");
                        //System.out.println(rel);
                        logger.info("> Creating Relationship edge ...");
                        Relationship relationship1 = new Relationship("");
                        Relationship relationship2 = new Relationship(rel);

                        // Connect edges
                        logger.info("> Connecting vertices ...");
                        startV.addEdge(relationship1, head, EdgeKind.BIDIRECTIONAL, (short) 0);
                        endV.addEdge(relationship2, startV, EdgeKind.BIDIRECTIONAL, (short) 0);

                    } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }

            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (br != null)br.close();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }

            // Specify a named root for traversal
            logger.info("> Naming a root vertex ...");
            helloGraphDB.nameVertex("JSON File", head);

            // Commit to save your changes to the graph database
            logger.info("> Committing changes ...");
            tx.commit();
        }

        catch (ConfigurationException cE)
        {
            logger.warn("> Configuration Exception was thrown ... ");
            logger.error(cE.getMessage());
        }

        finally
        {
            // If the transaction was not committed, complete
            // will roll it back
            if (tx != null)
                tx.complete();
            if (helloGraphDB != null)
            {
                helloGraphDB.close();
                logger.info("> On Exit: Closed graph database");
            }
        }
    }

}

// HINT: Add class definitions for Person and Meeting classes here.
class HeaderVertex extends BaseVertex
{
    private String header;

    public HeaderVertex (String header)
    {
        setStartName(header);
    }

    public void setStartName (String header)
    {
        markModified();
        this.header = header;
    }

    public String toString()
    {
        fetch();
        return this.header;
    }
}

class StartVertex extends BaseVertex
{
    private String start;

    public StartVertex (String start)
    {
        setStartName(start);
    }

    public void setStartName (String start)
    {
        markModified();
        this.start = start;
    }

    public String toString()
    {
        fetch();
        return this.start;
    }
}

class EndVertex extends BaseVertex
{
    private String end;

    public EndVertex (String end)
    {
        setEndVertex(end);
    }

    public void setEndVertex (String end)
    {
        markModified();
        this.end = end;
    }

    public String toString()
    {
        fetch();
        return this.end;
    }
}

class Relationship extends BaseEdge
{
    private String rel;

    public Relationship (String rel)
    {
        setRelationship(rel);
    }

    public void setRelationship (String rel)
    {
        markModified();
        this.rel = rel;
    }

    public String toString()
    {
        fetch();
        return this.rel;
    }
}
于 2012-10-01T07:46:47.470 に答える