Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
Mesbah Khan
@khanm_gitlab
tried running this as is and got tonnes of errors.
[ERROR] Undefined template used in http://example.org/template/WholePart. The template depends on an undefined signature or template http://standards.iso.org/iso/15926/part14/arrangedPartOf

[ERROR] Type error in template http://example.org/template/TopologyInterface: incompatible argument and parameter type. The template contains a value ?side1 : rdfs:Resource which has the type rdfs:Resource and which is used as argument to a parameter with the incompatible type owl:NamedIndividual in instance http://example.org/template/Connection(?side1 : rdfs:Resource, ?side2 : rdfs:Resource) (arg no. 1).

[ERROR] Type error in template http://example.org/template/TopologyInterface: incompatible argument and parameter type. The template contains a value ?side2 : rdfs:Resource which has the type rdfs:Resource and which is used as argument to a parameter with the incompatible type owl:Class in instance http://example.org/template/Connection(?side1 : rdfs:Resource, ?side2 : rdfs:Resource) (arg no. 2).

[ERROR] Error running query
    SELECT CONCAT('pnid:',REGEXP_REPLACE(parts,'\W', '_')), CONCAT('pnid:',REGEXP_REPLACE(wholes,'\W', '_'))
 FROM CSVREAD('./data/wholes-parts.csv');
 over database jdbc:h2:C:\Users\khanm\AppData\Local\Temp\1600504684492-0/H2Source: Column "WHOLES" not found; SQL statement:

    SELECT CONCAT('pnid:',REGEXP_REPLACE(parts,'\W', '_')), CONCAT('pnid:',REGEXP_REPLACE(wholes,'\W', '_'))
 FROM CSVREAD('./data/wholes-parts.csv');
 [42122-200] Query:
    SELECT CONCAT('pnid:',REGEXP_REPLACE(parts,'\W', '_')), CONCAT('pnid:',REGEXP_REPLACE(wholes,'\W', '_'))
 FROM CSVREAD('./data/wholes-parts.csv');
 Parameters: []

[ERROR] Error running query
    SELECT CONCAT('pnid:',REGEXP_REPLACE(instances,'\W', '_')), CONCAT('pnid:',REGEXP_REPLACE(types,'\W', '_'))
 FROM CSVREAD('./data/type-instances.csv');
 over database jdbc:h2:C:\Users\khanm\AppData\Local\Temp\1600504684873-0/H2Source: Column "INSTANCES" not found; SQL statement:

    SELECT CONCAT('pnid:',REGEXP_REPLACE(instances,'\W', '_')), CONCAT('pnid:',REGEXP_REPLACE(types,'\W', '_'))
 FROM CSVREAD('./data/type-instances.csv');
 [42122-200] Query:
    SELECT CONCAT('pnid:',REGEXP_REPLACE(instances,'\W', '_')), CONCAT('pnid:',REGEXP_REPLACE(types,'\W', '_'))
 FROM CSVREAD('./data/type-instances.csv');
 Parameters: []
Mesbah Khan
@khanm_gitlab
In excel you can save as UTF 8 CSV, CSV, MS-DOS CSV and Mac CSV.. I had saved as UTF8 CSV, changed it to just CSV and it worked
Ghost
@ghost~5f107a59d73408ce4fe9c26d
Hi everybody. I'm writing a web application to visualize Knowledge Graph based on Ontology Design Patterns. Simply we want to visualize pattern contained in KG to provide a richer visualization in respect to network arc-node ones that can't lift over resource granularity.
Actually i'm stuck on this probelm: i have a knowledge graph based and developed with Ontology Design Patterns but i cannot extract the list of patterns it is based on and neither the occurences for each pattern
i suppose you clearly know the reason as are well described in the papers describing ottr :)
I grasp that this language and tools can help me on resolve this problem, and i would like to ask how can i move on
Ghost
@ghost~5f107a59d73408ce4fe9c26d
Do i need to define a template for every pattern in the dataset (where can i start, is there a tool)? Once did this i would be able to get pattern list and count pattern occurencies? Or i need to pass the raw tabular data through the template that will generate the instances of pattern as RDF? Thank you if you may point me in the right direction!
Ghost
@ghost~5f107a59d73408ce4fe9c26d
Hi, once I defined and instantiated a template. How can i retrieve all the instances for that template ?
Ghost
@ghost~5f107a59d73408ce4fe9c26d
Okei, i tried the lutra API. I instantiated the simple template from the example, ex:Person[ ?firstName, ?lastName, ?email ] :: { ottr:Triple(_:person, rdf:type, foaf:Person ), ottr:Triple(_:person, foaf:firstName, ?firstName ), ottr:Triple(_:person, foaf:lastName, ?lastName ), ottr:Triple(_:person, foaf:mbox, ?email ) } .
Instantiation ->
ex:Person("Ann", "Strong", <mailto:ann.strong@email.com>) .
command ->
Ghost
@ghost~5f107a59d73408ce4fe9c26d
lutra --mode expand --inputFormat stottr --fetchMissing --library Person.stottr --libraryFormat stottr --outputFormat wottr instance.stottr
This is the output i receive:
[ a               foaf:Person ;
  foaf:firstName  "Ann" ;
  foaf:lastName   "Strong" ;
  foaf:mbox       <mailto:ann.strong@email.com>
] .
Ghost
@ghost~5f107a59d73408ce4fe9c26d
From this i cannot formulate SPARQL query that gives me back all the instances of the given template from the RDF graph
Is there any standard way to this or is this been considered ?
Ghost
@ghost~5f107a59d73408ce4fe9c26d
Is there any standard way to this or is this been considered ?
i'm missing that
Johan Wilhelm Klüwer
@johanw_gitlab
Hi Christian, I think what you are looking for is a way to use templates as queries. This has certainly been considered, but as far as I know (I'm not in the core team) not implemented in Lutra at the moment.
The idea would be, take a template and make a sparql query from the template definition. This was actually a feature in an earlier version of Lutra, so there's hope.
Ghost
@ghost~5f107a59d73408ce4fe9c26d
Thank you @johanw_gitlab, i was actually resolving this assigning a triple to the template I'm interested to extract. I defined a pattern :PatternInstance(?iri, ?pattern) :: { ottr:Triple( ?iri, :isInstanceOf , ?pattern ) }. And i reuse it inside the templates i'm interested to extract. Then i can simply query with: SELECT ?instance WHERE { ?instance :isInstanceOf <my_pattern> }
Ghost
@ghost~5f107a59d73408ce4fe9c26d
Does someone know the correct procedure to publish templates online? Such that i can fetch them remotely with lutra argument --fetchMissing ? Do i need to expand them and store them as pure RDF? It's okei to declare all the templates in a file and resolve them via hash dereferentiation? I tried like this but didn't work ottr/lutra/lutra#259
Daniel
@dalupp_gitlab
Hi Christian! As Johan mentioned, we don’t have a way of querying for patterns yet. Your approach works well with ontologies generated with templates, but how to query ontologies not built with templates (where the template instances are not explicitly listed) is future work, and quite high up on our priority list. Regarding the —fetchMissing, your templates need to be hosted at the address as specified in the template’s IRI.
Ghost
@ghost~5f107a59d73408ce4fe9c26d
Thank you @dalupp_gitlab ! Yes, it would be really nice to have that query. At the moment i'm rescaling the data using the wonderful argumentMap feature. That is i query against my dataset and shape the data according to a specified template.
here's where i'm hosting the template http://arco.istc.cnr.it/tpl/odp#Collection. But whe i try to fetch that i get:
[ERROR] Unknown template http://arco.istc.cnr.it/tpl/odp#Collection.

[FATAL] Fetch missing template: http://arco.istc.cnr.it/tpl/odp#Collection
[FATAL] Attempts of parsing library on all available formats {wottr=xyz.ottr.lutra.wottr.WottrFormat@381d7219, stottr=xyz.ottr.lutra.stottr.StottrFormat@49fe3142, tabottr=xyz.ottr.lutra.tabottr.TabottrFormat@13fed1ec, bottr=xyz.ottr.lutra.bottr.BottrFormat@61c42416} failed with following errors:

[ERROR] Attempt of parsing templates as xyz.ottr.lutra.stottr.parser.STemplateParser@615e3f51 format failed:
[ERROR] Error reading stOTTR file: 'http://arco.istc.cnr.it/tpl/odp#Collection': http:/arco.istc.cnr.it/tpl/odp#Collection

[FATAL] Attempt of parsing templates as xyz.ottr.lutra.wottr.parser.WTemplateParser@f72203 format failed:
[ERROR] Error getting property value for ottr:parameters for subject 'odp-tpl:Collection'. Expected exactly 1 object, but got 0.
[ERROR] Error parsing RDF sourceString http://arco.istc.cnr.it/tpl/odp#Collection. null
[FATAL] [line: 8, col: 22] Undefined prefix: rdf
am i doing something wrong ?
Daniel
@dalupp_gitlab
try adding -F wottr to the command. The error occurs because it is reading your template as a stOTTR file, not a wOTTR file. Also, I noticed you use the odp-col prefix without defining it.
7 replies
generally youre missing multiple prefixes rdf:, ottr:and odp-col: as far as I can see
Ghost
@ghost~5f107a59d73408ce4fe9c26d
Hello everybody i was wondering:
1) is it possible to conditionally avoid a triple instantiation inside a template?
suppossed i have a template like
:Template[ ?param1, ?param2 ] :: {
    :Triple(?param1, a, :something),
    :Triple(?param2, a, :something)
}
and i won't :Triple(?param2, a, :something) not created
2 replies
Ghost
@ghost~5f107a59d73408ce4fe9c26d
2) can i merge two list or append element to list, is there a way o pattern to do this ?
4 replies
NestedTemplate[List<ottr:IRI> ?list] :: {
    cross
      |  ottr:Triple(++?list, rdf:type, rdf:Resource)
}

Template[List<ottr:IRI> ?list, ottr:IRI ?extraElement] :: {
    NestedTemplate((?list, ?extraElement)) ???
}
or i need to handle sperately the two?
Daniel
@dalupp_gitlab
A general comment concerning these features: OTTR is a restricted language on purpose. With greater expressivity comes greater complexity, and thus a higher point of entry. We wanted the formalism to adhere to notions of ontology patterns and provide a solid macro mechanism for this, with guaranteed termination of expansion etc. Other formalisms exist that are closer to programming languages, though, that support features such as conditionals (TawnyOWL being one of those).
Daniel
@dalupp_gitlab
By the way, we are holding a tutorial tomorrow, if you would like to join. More info here: https://ottr.xyz/event/2020-11-023-iswc/
Ghost
@ghost~5f107a59d73408ce4fe9c26d
Thank you @dalupp_gitlab . All these doubts emerged because i'm extracting unstructured (i mean structure as pattern) RDF data from a KG via SPARQL queries. There are cases in which the Template (based on Ontology Design Pattern) needs some arguments but they are not in the KG for some reasons (ex. the data is not there or we have a specialization of the pattern)
I will join the tutorial then
Ghost
@ghost~5f107a59d73408ce4fe9c26d
You're explanation for the expressivity of the language starts to make me clear what i can and what i cannot do
Nico Matentzoglu
@matentzn
Hey all, is there a recording of the full ISWC ottr tutorial?
Martin G. Skjæveland
@m.g.skjaeveland_gitlab
Hi @matentzn. Sorry, the tutorial was not recorded, but there are already videos that cover parts of the tutorial material here: https://ottr.xyz/#Screencasts. We plan to cover the missing parts soon. Meanwhile, large parts of the missing contents are found in form of a primer: http://primer.ottr.xyz.
Nico Matentzoglu
@matentzn

Thanks Martin.. Your docs are great; I just wanted a “quick” injection beyond your three videos on vimeo to help me sorting my understanding on a few things I dont understand quite yet (lists of complex expressions, like (R some (A1 and A2), R some (B1 and B2) etc, just want to know whether these are in theory possible). And beyond all the cool stuff you have, i need to know more about instance matching (from ontology and teemplate, extract all instances from an ontology). Lastly, I was trying to find out how far your string templating goes (generating labels, synonyms using filler terms similar to https://github.com/obophenotype/upheno/blob/68378084c5c0f0a069342a49fbb6f94071be7a8d/src/patterns/dosdp-patterns/abnormalLevelOfChemicalEntityInLocation.yaml#L32

No need to answer now, i will keep looking :)

Martin G. Skjæveland
@m.g.skjaeveland_gitlab

instance matching (from ontology and teemplate, extract all instances from an ontology)

This is not supported yet, but high on the list. The plan is to support converting an OTTR template into a SPARQL query whose results are the instances in the queried source. In the simple case, with no optionals and list expanders, this should be trivial, and was indeed implemented in ca. 0.2 version of Lutra.

string templating

We do not support this yet either, but intend to implement this as a separate functional language for manipulating terms. The idea is to separate term manipulations from "fact stating", which templates can be seen as. There will be libraries of functions like there are libraries of templates. Plan is to support xpath functions and then combinations of these.

(lists of complex expressions, like (R some (A1 and A2), R some (B1 and B2)

There are several ways to answer this. Could you say more what the end goal for this is?

Nico Matentzoglu
@matentzn

Thank you for the prompt answers! Sounds good! So it seems you have really funding to support Ottr? Are there long-term plans to develop support and maintain it?

Re the complex expression thing: its not actually that wild, because 90% of the cases are covered by R some A (a being atomic), akin to your Pizza and has-topping examples. However, there are some cases where you say want to define a disease in terms of genes causing it, with those genes being expressed in a specific location (like a cell type); note this example is for illustration only; dont know whether you would define it in such a way. So you would get things like C = Disease and (has cause some (Gene1 and expressed in Location1)) and (has cause some (Gene2 and expressed in Location2)) etc etc. Its not that important.. I am just charged with looking a bit around at existing templating systems. Thanks for you help!

Martin G. Skjæveland
@m.g.skjaeveland_gitlab

So it seems you have really funding to support Ottr? Are there long-term plans to develop support and maintain it?

Yes, we do. OTTR is developed within the SIRIUS centre: https://sirius-labs.no/ with several interested industry partners.