Thank you! Huge help!
2013/11/11 Andy Seaborne <[email protected]> > On 11/11/13 12:24, Luciane Monteiro wrote: > >> I tested this code, it works! But I have 2 questions: >> >> 1- How can I get the comment in a specific language ? >> > > See the Jena API operations on Literals. > > > >> 2- You answered me 2 ways of doing that, is there any specific reason to >> choose one or the other? >> > > No - they amount to the same thing, just two routes to much the same code. > > >> Thank you very much! >> > > Andy > > > >> >> 2013/11/10 Joshua TAYLOR <[email protected]> >> >> >>> On Sun, Nov 10, 2013 at 9:28 AM, Luciane Monteiro <[email protected] >>> > >>> wrote: >>> >>>> Yes, I did this: ( Here response is a List<DBpediaResource> ) >>>> >>>> Model model = ModelFactory.createDefaultModel(); >>>> List<String> uriList = new ArrayList<String>(); >>>> >>>> >>>> for( DBpediaResource dbResource : response ) { >>>> >>>> String uri = dbResource.getFullUri(); >>>> uriList.add(uri); >>>> } >>>> >>>> for( String uri : uriList ) { >>>> >>>> Resource resource = model.createResource(uri); >>>> StmtIterator stmts = resource.listProperties(RDFS. >>>> comment); >>>> >>>> while( stmts.hasNext() ) { >>>> >>>> Statement stmt = stmts.next(); >>>> RDFNode comment = stmt.getObject(); >>>> >>>> System.out.println("Comment: " + comment.toString()); >>>> } >>>> } >>>> >>>> But when I try to print the Comment it returns me nothing. Is there >>>> >>> anything >>> >>>> wrong? >>>> >>> >>> When you say it "returns you nothing", do you mean that you don't get any >>> output at all, or that you're getting "Comment: null" (i.e., that >>> comment.toString() is returning null for some values)? At any rate, it >>> looks like you're doing a lot more work than you need to. When you read >>> the remote content (e.g., with model.read(...) or RDFDataMgr.read(model, >>> uri) as Andy mentioned) you get a model back. Then you can either ask >>> the >>> model for statements directly, or you can get a resource for >>> http://dbpedia.org/resource/Google directly and then ask for properties >>> from it. E.g.: >>> >>> >>> import com.hp.hpl.jena.rdf.model.Model; >>> import com.hp.hpl.jena.rdf.model.ModelFactory; >>> import com.hp.hpl.jena.rdf.model.RDFNode; >>> import com.hp.hpl.jena.rdf.model.Resource; >>> import com.hp.hpl.jena.rdf.model.ResourceFactory; >>> import com.hp.hpl.jena.rdf.model.StmtIterator; >>> import com.hp.hpl.jena.vocabulary.RDFS; >>> >>> public class DBpediaExample { >>> final static String DBPEDIA_GOOGLE = "http://dbpedia.org/resource/ >>> Google >>> "; >>> public static void main(String[] args) { >>> // Create a model and read the DBpedia content into it. >>> final Model model = ModelFactory.createDefaultModel().read( >>> DBPEDIA_GOOGLE >>> ); >>> // Create a resource not associate with any model, and ask the model >>> // for statements with it as a subject and rdfs:comment as the property. >>> // null (for the object) is a wildcard. You could also use a resource >>> // that is associated with a model (e.g., model.createResource( >>> dbpediaGoogle )). >>> final Resource google1 = ResourceFactory.createResource( >>> DBPEDIA_GOOGLE >>> ); >>> StmtIterator stmts1 = model.listStatements( google1, RDFS.comment, >>> (RDFNode) null ); >>> showObjects( stmts1 ); >>> // Create a resource based on the model. This one is based on the >>> model, >>> // so when you ask for its properties, you're asking about statements >>> in >>> // the same model. >>> final Resource google2 = model.getResource( DBPEDIA_GOOGLE ); >>> showObjects( google2.listProperties( RDFS.comment )); >>> } >>> public static void showObjects( final StmtIterator it ) { >>> while ( it.hasNext() ) { >>> System.out.println( it.next().getObject() ); >>> } >>> } >>> } >>> >>> -- >>> Joshua Taylor, http://www.cs.rpi.edu/~tayloj/ >>> >>> >> >
