Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add an rule but no new tripples #11

Closed
crapthings opened this issue Aug 10, 2018 · 5 comments
Closed

add an rule but no new tripples #11

crapthings opened this issue Aug 10, 2018 · 5 comments

Comments

@crapthings
Copy link

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() {
  const kg = await h.load(file, 'text/turtle')
  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 test = await squery(`select * where { ?s ?p ?o . }`)
  console.log(test)
}

test()

async function squery(q) {
  return await h.query(`
    PREFIX : <http://un.jong.kim/onto#>
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    ${q}
  `)
}
@mterdjimi
Copy link
Member

Hello,
Could you please send me the file kg.ttl you are using to populate the store ?

Thanks !

@crapthings
Copy link
Author

crapthings commented Aug 10, 2018

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

@mterdjimi
Copy link
Member

mterdjimi commented Aug 10, 2018

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 !

@crapthings
Copy link
Author

and it looks like h.parseAndAddRule should put before h.load

@mterdjimi
Copy link
Member

mterdjimi commented Aug 10, 2018

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants