Closed crapthings closed 6 years ago
Hello, Could you please send me the file kg.ttl you are using to populate the store ?
Thanks !
const fs = require('fs')
const Hylar = require('hylar')
const h = new Hylar()
const file = fs.readFileSync('./kg.ttl', { encoding: 'utf-8' })
const PREFIX = IRI => `http://un.jong.kim/onto#${IRI}`
async function test() {
h.parseAndAddRule(`(?x http://un.jong.kim#hasChild ?y) ^ (?y http://un.jong.kim/onto#hasChild ?z) -> (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://un.jong.kim/onto#GrandFather)`, 'R1')
const kg = await h.load(file, 'text/turtle')
const test = await squery(`select * where { ?s ?p :GrandFather . }`)
console.log(test)
}
test()
async function squery(q) {
return await h.query(`
PREFIX : <http://un.jong.kim/onto#>
${q}
`)
}
@prefix : <http://un.jong.kim/onto#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://un.jong.kim/onto> .
<http://un.jong.kim/onto> rdf:type owl:Ontology .
#################################################################
# Object Properties
#################################################################
### http://un.jong.kim/onto#hasChild
:hasChild rdf:type owl:ObjectProperty .
#################################################################
# Classes
#################################################################
### http://un.jong.kim/onto#GrandFather
:GrandFather rdf:type owl:Class .
#################################################################
# Individuals
#################################################################
### http://un.jong.kim/onto#A
:A rdf:type owl:NamedIndividual ;
:hasChild :B .
### http://un.jong.kim/onto#B
:B rdf:type owl:NamedIndividual ;
:hasChild :C .
### http://un.jong.kim/onto#C
:C rdf:type owl:NamedIndividual .
### Generated by the OWL API (version 4.2.8.20170104-2310) https://github.com/owlcs/owlapi
Looking at your data, it seems that you wrote http://un.jong.kim#hasChild
instead of http://un.jong.kim/onto#hasChild
in your first rule pattern. Hence, the rule cannot be fired.
Could you try with
h.parseAndAddRule(`(?x http://un.jong.kim/onto#hasChild ?y) ^ (?y http://un.jong.kim/onto#hasChild ?z) -> (?x http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://un.jong.kim/onto#GrandFather)`, 'R1')
please ? Thanks !
and it looks like h.parseAndAddRule should put before h.load
This is right; currently, adding a rule does not reconsider the inferences. This should be fixed in the next version of HyLAR.
Ps: you can also simply state in your schema that hasFather is an owl:transitiveProperty, as HyLAR supports transitivity without adding any specific rule.