A Jena, Resource
oggetti di per sé non sono nel modello. Il modello contiene solo triple - Statement
oggetti contenenti un oggetto, un predicato e un oggetto (in genere SPO abbreviato). Qualunque S, P o O può essere una risorsa (osservando che uno Property
è un sottotipo di Resource
in Jena e nello standard RDF). Quindi è necessario perfezionare la domanda da "fa questo modello contiene questa risorsa" a uno:
Il modello fa il M contengono risorse R come soggetto?
il modello M contiene la risorsa R come soggetto, predicato o oggetto?
Ciò può essere ottenuto come:
Resource r = ... ;
Model m = ... ;
// does m contain r as a subject?
if (m.contains(r, null, (RDFNode) null)) {
..
}
// does m contain r as s, p or o?
if (m.containsResource(r)) {
..
}
Per inciso, nel codice di esempio si dispone di
model.getResource("example")
Questo restituisce un oggetto Resource
corrispondente al URI, ma non lo fa lato -effetti i tripli nel modello. Questo è il motivo per cui Model
ha sia getResource
che createResource
- l'ottenimento è potenzialmente leggermente più efficiente dal momento che riutilizza gli oggetti risorsa, ma la semantica è essenzialmente identica. Tuttavia, l'argomento che si passa a getResource
o createResource
deve essere un URI. Stai prendendo in prestito problemi dal futuro se inizi a utilizzare token come "example"
al posto di URI completi, quindi ti consiglio di interrompere questa cattiva abitudine prima di metterti comodo!
fonte
2013-03-14 10:12:24
forse questo collegamento [Modello di interfaccia] (http://jena.apache.org/documentation/javadoc/jena/com/hp/hpl/jena/rdf/model/Model.html) è utile. –
Dopo aver studiato un po 'ho trovato il modo successivo. Non so se questo è davvero il modo migliore per ottenerlo, ma funziona: Resource toSearch = ResourceFactory.createResource ("example"); if (! Model.containsResource (toSearch)) ...; – jevora
Se è risolto, inserisci una risposta e accettala, quindi la persona successiva con lo stesso problema troverà la risposta, riceverai anche un badge! :) – Boaz