You can use Jena's command line tool 'riot' to convert: https://jena.apache.org/documentation/io/#command-line-tools
--- A. Soroka The University of Virginia Library > On Aug 22, 2016, at 4:54 AM, lookman sanni <[email protected]> wrote: > > Awesome ! > > The reason why I am using XML/RDF is that I have an input of > thousands/millions of lines in either CSV or XML. I chose XML, and > converted the XML to RDF/XML through XSLT. I can after that read the > RDF/XML either in memory or via TDB. Any chance I could be using TTL ? If > yes, I would be interested in learning how. > > Thank you. > > > > On Mon, Aug 22, 2016 at 10:20 AM, Dave Reynolds <[email protected]> > wrote: > >> Hi, >> >> The problem is with your RDF file. You have given the values of the >> aa:processedIn properties as strings instead of resources. To see this >> serialize as ttl. Better still, only use ttl and ignore rdf/xml! >> >> Using a corrected RDF file: >> >> <?xml version="1.0" encoding="UTF-8"?> >> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >> xmlns:aa="http://www.abcd.org/ofdf#" xmlns:owl="http://www.w3.org/2 >> 002/07/owl#" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:rdfs=" >> http://www.w3.org/2000/01/rdf-schema#"> >> <owl:Class rdf:about="http://www.abcd.org/ofdf#folder"> >> </owl:Class> >> <owl:Class rdf:about="http://www.abcd.org/ofdf#file"> >> </owl:Class> >> <rdf:Description rdf:about="http://www.abcd.org/ofdf#folder/001"> >> <aa:createdBy>MisterX</aa:createdBy> >> <rdf:type rdf:resource="http://www.abcd.org/ofdf#folder"/> >> </rdf:Description> >> <rdf:Description rdf:about="http://www.abcd.org/ofdf#file/AAA"> >> <aa:processedIn rdf:resource="http://www.abcd.org/ofdf#folder/001" /> >> <rdf:type rdf:resource="http://www.abcd.org/ofdf#file"/> >> </rdf:Description> >> <rdf:Description rdf:about="http://www.abcd.org/ofdf#folder/002"> >> <aa:createdBy>MisterY</aa:createdBy> >> <rdf:type rdf:resource="http://www.abcd.org/ofdf#folder"/> >> </rdf:Description> >> <rdf:Description rdf:about="http://www.abcd.org/ofdf#file/AAA"> >> <aa:processedIn rdf:resource="http://www.abcd.org/ofdf#folder/002" /> >> <rdf:type rdf:resource="http://www.abcd.org/ofdf#file"/> >> </rdf:Description> >> <rdf:Description rdf:about="http://www.abcd.org/ofdf#file/BBB"> >> <aa:processedIn>http://www.abcd.org/ofdf#folder/002</aa:processedIn> >> <rdf:type rdf:resource="http://www.abcd.org/ofdf#file"/> >> </rdf:Description> >> </rdf:RDF> >> >> and using your rule definitions then the ruleX fires fine and the >> resulting InfModel is: >> >> @prefix aa: <http://www.abcd.org/ofdf#> . >> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . >> @prefix owl: <http://www.w3.org/2002/07/owl#> . >> @prefix html: <http://www.w3.org/1999/xhtml> . >> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . >> >> <http://www.abcd.org/ofdf#file/AAA> >> a aa:fileRequiringConflictCheck , >> aa:fileInManyFolders , aa:file ; >> aa:processedIn <http://www.abcd.org/ofdf#folder/002> , < >> http://www.abcd.org/ofdf#folder/001> . >> >> aa:file a owl:Class . >> >> <http://www.abcd.org/ofdf#file/BBB> >> a aa:file ; >> aa:processedIn "http://www.abcd.org/ofdf#folder/002" . >> >> <http://www.abcd.org/ofdf#folder/002> >> a aa:folder ; >> aa:createdBy "MisterY" . >> >> aa:folder a owl:Class . >> >> <http://www.abcd.org/ofdf#folder/001> >> a aa:folder ; >> aa:createdBy "MisterX" . >> >> >> Dave >> >> >> On 21/08/16 19:34, lookman sanni wrote: >> >>> Ok Dave. Here is a minimal example: >>> >>> >>> *Java Code* >>> String rdfPath = "dataset/rdf/sample.rdf"; >>> String inRuleBase = "rules/sampleRule.txt"; >>> Model model = ModelFactory.createDefaultModel(); >>> FileInputStream fis = new FileInputStream(rdfPath); >>> model.read(fis,"ticket"); >>> Reasoner reasoner = new GenericRuleReasoner( >>> Rule.rulesFromURL(inRuleBase)); >>> InfModel infModel = ModelFactory.createInfModel( reasoner, model ); >>> StmtIterator si = infModel.listStatements(); >>> while ( si.hasNext() ) >>> { >>> Statement stmt = si.nextStatement(); >>> Resource subject = stmt.getSubject(); >>> Property predicate = stmt.getPredicate(); >>> RDFNode object = stmt.getObject(); >>> System.out.println(subject.toString() + " " + predicate.toString() + " " >>> + >>> object.toString()); >>> } >>> >>> *RDF File** (sample.rdf)* >>> >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >>> xmlns:aa=" >>> http://www.abcd.org/ofdf#" xmlns:owl="http://www.w3.org/2002/07/owl#" >>> xmlns:html="http://www.w3.org/1999/xhtml" xmlns:rdfs=" >>> http://www.w3.org/2000/01/rdf-schema#"> >>> <owl:Class rdf:about="http://www.abcd.org/ofdf#folder"> >>> </owl:Class> >>> <owl:Class rdf:about="http://www.abcd.org/ofdf#file"> >>> </owl:Class> >>> <rdf:Description rdf:about="http://www.abcd.org/ofdf#folder/001"> >>> <aa:createdBy>MisterX</aa:createdBy> >>> <rdf:type rdf:resource="http://www.abcd.org/ofdf#folder"/> >>> </rdf:Description> >>> <rdf:Description rdf:about="http://www.abcd.org/ofdf#file/AAA"> >>> <aa:processedIn>http://www.abcd.org/ofdf#folder/001</aa:processedIn> >>> <rdf:type rdf:resource="http://www.abcd.org/ofdf#file"/> >>> </rdf:Description> >>> <rdf:Description rdf:about="http://www.abcd.org/ofdf#folder/002"> >>> <aa:createdBy>MisterY</aa:createdBy> >>> <rdf:type rdf:resource="http://www.abcd.org/ofdf#folder"/> >>> </rdf:Description> >>> <rdf:Description rdf:about="http://www.abcd.org/ofdf#file/AAA"> >>> <aa:processedIn>http://www.abcd.org/ofdf#folder/002</aa:processedIn> >>> <rdf:type rdf:resource="http://www.abcd.org/ofdf#file"/> >>> </rdf:Description> >>> <rdf:Description rdf:about="http://www.abcd.org/ofdf#file/BBB"> >>> <aa:processedIn>http://www.abcd.org/ofdf#folder/002</aa:processedIn> >>> <rdf:type rdf:resource="http://www.abcd.org/ofdf#file"/> >>> </rdf:Description> >>> </rdf:RDF> >>> >>> >>> *Rule** (**sampleRule.txt)* >>> >>> @prefix aa: <http://www.abcd.org/ofdf#>. >>> >>> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. >>> >>> @prefix owl: <http://www.w3.org/2002/07/owl#>. >>> >>> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. >>> >>> @prefix owl: <http://www.w3.org/2002/07/owl#>. >>> >>> >>> [ruleX: >>> >>> (?file1 aa:processedIn ?fld1) >>> >>> (?file1 aa:processedIn ?fld2) >>> >>> notEqual(?fld1, ?fld2) >>> >>> (?fld1 aa:createdBy ?auth1) >>> >>> (?fld2 aa:createdBy ?auth2) >>> >>> notEqual(?auth1, ?auth2) >>> >>> -> >>> >>> (?file1 rdf:type aa:fileRequiringConflictCheck) >>> >>> ] >>> >>> [ruleY: >>> (?file1 aa:processedIn ?fld1) >>> (?file1 aa:processedIn ?fld2) >>> notEqual(?fld1, ?fld2) >>> -> >>> (?file1 rdf:type aa:fileInManyFolders) >>> ] >>> >>> >>> RuleY is properly recognized and I can see the following statement added >>> to >>> the Inference model: >>> *http://www.abcd.org/ofdf#file/AAA <http://www.abcd.org/ofdf#file/AAA> >>> http://www.w3.org/1999/02/22-rdf-syntax-ns#type >>> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> >>> http://www.abcd.org/ofdf#fileInManyFolders >>> <http://www.abcd.org/ofdf#fileInManyFolders>* >>> >>> >>> Nothing however for ruleX and this is what I struggle with. Thanks in >>> advance for the help. >>> >>> On Sun, Aug 21, 2016 at 3:44 PM, Dave Reynolds <[email protected] >>>> >>> wrote: >>> >>> On 21/08/16 12:37, lookman sanni wrote: >>>> >>>> Hi all, >>>>> >>>>> I am struggling with the definition of jena rules. I have an RDF file >>>>> where >>>>> I am defining: >>>>> >>>>> - a "folder" class with a property "createdBy" >>>>> - a "file" class with a property "processedIn" of type "folder" >>>>> >>>>> My RDF file contains resources from the two classes. I am trying to >>>>> define >>>>> a Jena rule for querying files appearing in more than a folder, having >>>>> different authors. >>>>> >>>>> To that end, I added to my RDF the specification of a class >>>>> "fileRequiringConflictCheck" a subclass of the class "file" and then >>>>> specified the following jena rule: >>>>> >>>>> [ruleX: >>>>> (?file1 aa:processedIn ?fld2) >>>>> (?file1 aa:processedIn ?fld1) >>>>> notEqual(?fld1, ?fld2) >>>>> (?fld1 aa:createdBy ?auth1) >>>>> (?fld2 aa:createdBy ?auth2) >>>>> notEqual(?auth1, ?auth2) >>>>> -> >>>>> (?file1 rdf:type aa:fileRequiringConflictCheck) >>>>> ] >>>>> >>>>> Outcome is that the rule is likely never met whenever expected as per my >>>>> sample dataset. Any idea what I might be missing ? >>>>> >>>>> >>>> Looks reasonable, check your namespaces are correct. If you can't get it >>>> working then post a minimal example of the data and someone might be able >>>> to spot the problem. >>>> >>>> Dave >>>> >>>> >>>> >>> >>> > > > -- > Best Regards > > Lookman SANNI
