Thank you for ur answering, but andy, even I did not use model.add(); it
was added into the model.
Anyway, the key point is that I can not get reification that I
created/added it before, I will paste the whole test code:
----------------------------------------
public static void main(String[] args) {
// TODO Auto-generated method stub
Model model = ModelFactory.createDefaultModel();
Resource sub = model.createResource(ns+"A");
Resource obj = model.createResource(ns+"B");
Property relate = model.createProperty(ns, "relatedTo");
sub.addProperty(relate, obj);
Statement stmt = model.createStatement(sub, relate, obj);
model.add(stmt);
ReifiedStatement reiStmt = stmt.createReifiedStatement();
reiStmt.addLiteral(RDFS.label, "customized reification");
ReifiedStatement reiStmt2 = model.createStatement(sub, relate,
obj).createReifiedStatement();
StmtIterator stmtItor = reiStmt2.listProperties();
while(stmtItor.hasNext()){
System.out.println("property: "+stmtItor.next());
}
System.out.println("------- graph ---------");
model.write(System.out, "TTL");
}
---------------------------------------------------------------
Output of this method,
----------------------------------------------------------------------
property: [26045f75:1439dd6f41c:-7ffe,
http://www.w3.org/1999/02/22-rdf-syntax-ns#subject, http://test/A]
property: [26045f75:1439dd6f41c:-7ffe,
http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate, http://test/relatedTo]
property: [26045f75:1439dd6f41c:-7ffe,
http://www.w3.org/1999/02/22-rdf-syntax-ns#object, http://test/B]
property: [26045f75:1439dd6f41c:-7ffe,
http://www.w3.org/1999/02/22-rdf-syntax-ns#type,
http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement]
------- graph ---------
[] a <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> ;
<http://www.w3.org/1999/02/22-rdf-syntax-ns#object>
<http://test/B> ;
<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate>
<http://test/relatedTo> ;
<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject>
<http://test/A> ;
<http://www.w3.org/2000/01/rdf-schema#label>
"customized reification"^^<
http://www.w3.org/2001/XMLSchema#string> .
[] a <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> ;
<http://www.w3.org/1999/02/22-rdf-syntax-ns#object>
<http://test/B> ;
<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate>
<http://test/relatedTo> ;
<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject>
<http://test/A> .
<http://test/A>
<http://test/relatedTo>
<http://test/B> .
----------------------------------------------------------
As a result:
1) I can not get reiStmt using the newly created reiStmt2; (printed
property do not include the added label message)
2) In the graph, there are two reification that refer to the same s,p,o;
On Wed, Jan 15, 2014 at 5:26 PM, Andy Seaborne <[email protected]> wrote:
> On 14/01/14 09:43, Wang Dongsheng wrote:
>
>> In terms of a triple, such as "S P O". I created a Reification, and want
>> to create another triple for it;
>>
>> The example is to record the appearance time of the triple:
>>
>> ------------------------------
>>
>
> It's a lot easier if you provide a complete, minimal example.
>
>
> Property apearAmount = model.CreateProperty(NS+"apearTimes");
>>
>> ReifiedStatement reiStmt = model.createStatement(sub, pro,
>> obj).createReifiedStatement();
>> reiStmt.addProperty(appearAmount, "23");
>> -----------------------------
>>
>> Next time, when I create the same reiStmt, I can not get the corresponding
>> property.
>>
>> Can anyone help me? Thanks in advance~
>>
>>
> That code does not add the statement to the model - it simply creates it:
>
> Statement stmt = model.createStatement(sub, pro, obj) ;
> model.add(stmt) ;
> ReifiedStatement reiStmt = stmt.createReifiedStatement();
>
>
> Andy
>
>
> public class DevMain {
> public static void main(String... argv) throws Exception {
>
> String NS = "http://example/" ;
> Model model = ModelFactory.createDefaultModel() ;
> model.setNsPrefix("rdf", "http://www.w3.org/1999/02/22-
> rdf-syntax-ns#") ;
> model.setNsPrefix("", NS) ;
>
> Resource sub = model.createResource(NS+"s") ;
> Property pro = model.createProperty(NS+"p") ;
> Literal obj = model.createLiteral("X") ;
>
> Property appearAmount = model.createProperty(NS+"apearTimes");
>
> Statement stmt = model.createStatement(sub, pro, obj) ;
> model.add(stmt) ;
> ReifiedStatement reiStmt = stmt.createReifiedStatement();
> reiStmt.addProperty(appearAmount, "23");
>
> RDFDataMgr.write(System.out, model, Lang.TTL) ;
>
> System.exit(0);
>
> }
> }
>
> ------------------
> @prefix : <http://example/> .
> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
>
> [ a rdf:Statement ;
> rdf:object "X" ;
> rdf:predicate :p ;
> rdf:subject :s ;
> :apearTimes "23"
> ] .
>
> :s :p "X" .
>
>