2015-12-05 1 views
0

J'ai le code suivant en python en utilisant RDFLib et je veux le traduire en JAVA en utilisant des bibliothèques de Sésame.RDFLib (Python) vers Sésame (JAVA)

python

restrictionNode= BNode() 
    g.add((nodeIndividualName,rdftype,restrictionNode)) 
    g.add((restrictionNode, rdftype, OWL.Restriction)) 
    g.add((restrictionNode, OWL.onProperty, rno.is_extent_of)) 

    listClassNode = BNode() 
    g.add((restrictionNode, OWL.allValuesFrom, listClassNode)) 
    g.add((listClassNode, rdftype, OWL.Class)) 

    arcListNode = BNode() 
    g.add((listClassNode, OWL.oneOf,arcListNode)) 
    Collection(g, arcListNode,arcIndividualList) 

Dans le code ci-dessus, G est un graphe.

le code ci-dessus crée l'affirmation suivante:

is_extent_of only ({arc_1,arc_2,arc_4}) 

j'ai pu créer le même code mais la dernière ligne. Est-ce que quelqu'un sait s'il y a la même notion que Collection in Sesame APIs ou je devrais créer manuellement la liste en utilisant d'abord et de repos?

Répondre

1

La bibliothèque de base de Sesame n'a actuellement aucune fonction de commodité pour les collections - ceci est corrigé cependant; il est prévu d'ajouter des utilitaires de gestion de collection de base aux bibliothèques principales dans la prochaine version.

Il existe plusieurs bibliothèques d'extension Sésame tierces qui offrent ce genre de chose cependant (par exemple, la bibliothèque SesameTools a la classe RdfListUtil à cette fin). Et bien sûr, vous pouvez construire une liste RDF à la main. La procédure de base est assez simple, quelque chose comme ça devrait faire l'affaire:

// use a Model to collect the triples making up the RDF list 
    Model m = new TreeModel(); 
    final ValueFactory vf = SimpleValueFactory.getInstance(); 

    Resource current = vf.createBNode(); // start node of your list 
    m.add(current, RDF.TYPE, RDF.LIST); 

    // iterate over the collection you want to convert to an RDF List 
    Iterator<? extends Value> iter = collection.iterator(); 
    while (iter.hasNext()) { 
     Value v = iter.next(); 
     m.add(current, RDF.FIRST, v); 
     if (iter.hasNext()) { 
      Resource next = vf.createBNode(); 
      m.add(current, RDF.REST, next); 
      current = next; 
     } 
     else { 
      m.add(current, RDF.REST, RDF.NIL); 
     } 
    }