Might weigh in here to separate some concerns:

1) When using a ContentTagSet ( linking a DataGraph to a Taxonomy - via 
corpus:topic ) there are two apparent problems that may be the same in fact:
 a ) adding "topic" to the search result columns doesnt show values for 
topics - even though individual items show topics in both the form view and 
the tagging panel, and GraphQL queries return topic values OK.
b) Cannot find a means to filter on topic in the GraphQL

2) We cannot find a natural way in the (new) editor to simply find all 
things with a given tag, or browse tags that are actually present - 
manually adding the topic column every time you view the asset column is a 
sub-optimal option anyway - are we missing something here?

3) If the topic column approach does make sense and can be made to work - 
how can we persist it (and automatically configure it when generating a 
TagSet programatically)

4) Simon is playing with treating the ContentTagSet as a DataGraph in order 
to see if it behaves differently - but its another sub-optimal workaround 
for searching and browsing applied tags.  (I dont think inferencing is 
required the content is the same as in the tagset)

5) when adding another column its display widget choice might need to be 
set - if we have a multivalued object property whose values are blank nodes 
it gives ugly node identiers - even though   dash:viewer =  
dash:DetailsViewer  and this content works fine on a form - maybe there is 
some other property/viewer thing that controls this we can use?


On Wednesday, July 15, 2020 at 9:51:24 AM UTC+10 Irene Polikoff wrote:

> Hi Simon,
>
> Are you saying that:
>
>
>    - You have a data graph with some information about :Content1
>    - You included into it a content tagset that contains the following 
>    triples
>
>
> :Content1 corpus:topic conceptA
>>
>> :Content 1 corpus:topic conceptB
>>
>>
>
>    - When you click on :Content1 in your data graph, you are not seeing 
>    the above triples on a form
>
>
> If this is correct, what is the type of :Content1? 
>
> I am assuming that it has corpus:Document type (directly or transitively). 
> If it is the case, then you should see these properties on the form. If it 
> has multiple types, you would see a drop down on the form (upper right 
> corner), that will let you switch between different views. You will see the 
> tag values only if you pick the Document.
>
> Here is an example of something similar - for a data element which has two 
> types:
>
>
> As you switch between views, you may see different data.
>
> In 6.4, there is a new Setting option on the form that will present a 
> merged view.
>
>
> On Jul 14, 2020, at 7:38 PM, Simon Opper <simon...@surroundaustralia.com> 
> wrote:
>
> Hi Irene
>
> Yes, my mistake, it was too early before caffeine
>
> it should be
>
> For example, if I have a form in the datagraph that references the URL of 
> Content1. How can the above corpus:topic triples be used to generate an 
> inference in a form to list all existing tags for Content1 (e.g. Concept A 
> and B) ?
>
> e.g. something like
>
> Content1 a corpus:Document ;
> corpus:hasTopic Concept A ;
> corpus:hasTopic Concept B .
>
> Many thanks
>
> Simon
>
>
>
> On Wed, Jul 15, 2020 at 9:11 AM Irene Polikoff <ir...@topquadrant.com> 
> wrote:
>
>> I am confused. Do you have conceptA and Content A or is it a typo?
>>
>> If ContentA is a corpus:Document, you should see corpus:topic values on 
>> its form.
>>
>> On Jul 14, 2020, at 5:41 PM, Simon Opper <simon...@surroundaustralia.com> 
>> wrote:
>>
>> Hi Holger
>>
>> A simple use case of viewing corpus topics is if the tagset is imported 
>> into a datagraph. How are the values of the content and corresponding tag 
>> shown on a form.
>>
>> E.g.  
>> Content1 corpus:topic conceptA
>> Content 1 corpus:topic conceptB
>>
>>
>> For example, if I have a form in the datagraph that references the URL of 
>> Content1. How can the above corpus:topic triples be used to generate an 
>> inference in a form to list all existing tags for Concent1 (e.g. content A 
>> and B) ?
>>
>> The only way I've been able to do this is to construct new instances of a 
>> class with new properties
>>
>> e.g. something like
>>
>> Content1 a corpus:Document ;
>> corpus:hasTopic Content A ;
>> corpus:hasTopic Content B .
>>
>> But this just leads to a lot of information bloat.
>>
>> On the fly inferences are preferred.
>>
>> Cheers mate
>>
>> Simon
>>
>>
>>
>>
>>
>> On Tue, Jul 14, 2020 at 3:18 PM Rob Atkinson <
>> rob.at...@surroundaustralia.com> wrote:
>>
>>>
>>> Sorry didnt get back to this..
>>>
>>> the shape declaration looks like:
>>>
>>> ex:MyClass-pshape
>>>   a sh:PropertyShape ;
>>>   sh:path <http://topbraid.org/corpus#topic> ;
>>>   sh:class skos:Concept ;
>>>   sh:description "Concept used to tag objects in this document" ;
>>>   sh:nodeKind sh:IRI ;
>>> .
>>>
>>>
>>> the other thing that happens is that if you add topic to the search 
>>> results display as an extra column it is blank - and inspection of the 
>>> network traffic shows the underlying graphql query is returning topic:[] 
>>> incorrectly for everything.
>>>
>>>
>>>
>>> On Thursday, July 2, 2020 at 5:53:43 PM UTC+10 Holger Knublauch wrote:
>>>
>>>> Is topic an object property shape or a literal-valued one? (Can you 
>>>> show the shape declarations).
>>>>
>>>> Holger
>>>>
>>>>
>>>> On 2/07/2020 5:32 pm, Rob Atkinson wrote:
>>>>
>>>>  
>>>> {
>>>>   clauseSections(where: {
>>>>     topic: { 
>>>>       exists: {
>>>>         label: {pattern: "ID4"}
>>>>       }
>>>>     }
>>>>   }) {
>>>>     rdfs_label
>>>>     topic {
>>>>       label
>>>>     }
>>>>     uri
>>>>   }
>>>> }
>>>>
>>>> => 
>>>>
>>>> {
>>>>   "errors": [
>>>>     {
>>>>       "message": "Validation error of type WrongType: argument 
>>>> 'where.topic' with value 
>>>> 'ObjectValue{objectFields=[ObjectField{name='topic', 
>>>> value=ObjectValue{objectFields=[ObjectField{name='exists', 
>>>> value=ObjectValue{objectFields=[ObjectField{name='label', 
>>>> value=ObjectValue{objectFields=[ObjectField{name='pattern', 
>>>> value=StringValue{value='ID4'}}]}}]}}]}}]}' contains a field not in 
>>>> 'ClauseSection_where_topic': 'exists'",
>>>>       "locations": [
>>>>         {
>>>>           "line": 2,
>>>>           "column": 18
>>>>         }
>>>>       ]
>>>>     }
>>>>   ]
>>>> }
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Thursday, July 2, 2020 at 5:24:02 PM UTC+10 Holger Knublauch wrote:
>>>>
>>>>>
>>>>> On 2/07/2020 17:15, Rob Atkinson wrote:
>>>>>
>>>>>
>>>>> After some fiddling I can return data from a content tag set 
>>>>>
>>>>> with a query like this
>>>>>
>>>>> {
>>>>>   clauseSections(where: {rdfs_label: {pattern: "def"} 
>>>>>   } ) {
>>>>>     rdfs_label
>>>>>     topic {
>>>>>       label
>>>>>     }
>>>>>     uri
>>>>>   }
>>>>> }
>>>>>
>>>>> This successfully returns details from the linked topic.
>>>>>
>>>>> But I cant get a query to work the restricts the subjects by 
>>>>> properties of the topics. I cant find examples of syntax for:
>>>>>
>>>>> The fallback for any type of filter is SPARQL:
>>>>>
>>>>> https://www.topquadrant.com/graphql/graphql-queries.html#sparql
>>>>>
>>>>> Did you try that?
>>>>>
>>>>>
>>>>> 1) filtering main object on properties of nested objects
>>>>>
>>>>> Similar to this? 
>>>>> https://www.topquadrant.com/graphql/graphql-queries.html#where
>>>>>
>>>>> 2) filtering if a value is present ( _is_null) 
>>>>>
>>>>> To check for non-existence of a property, you can probably use 
>>>>> maxCount 0
>>>>>
>>>>> {
>>>>>   concepts(where: { 
>>>>>     hidden: {
>>>>>         maxCount: 0
>>>>>       }}) {
>>>>>     uri
>>>>>   }
>>>>> }
>>>>>
>>>>> 3) combining (AND and OR) filters 
>>>>>
>>>>> Use SPARQL for that. GraphQL isn't meant as a complete replacement 
>>>>> without "help" - its benefit is simplicity for the average web developer.
>>>>>
>>>>>
>>>>> Also, I created property shapes for the subject root class and tagging 
>>>>> property in order to make this work to retrieve details of , but perhaps 
>>>>> there is some way of making this happen (I created and ran SHACL rules to 
>>>>> enforce this.. so its repeatable - but have I duplicated something?)
>>>>>
>>>>> Sounds good. The GraphQL engine is based on the presence of SHACL 
>>>>> definitions, so if no such property shapes exist, the engine will not 
>>>>> offer 
>>>>> GraphQL fields.
>>>>>
>>>>> Holger
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "TopBraid Suite Users" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to topbraid-user...@googlegroups.com.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/topbraid-users/deda2c9b-08c1-4d51-8dfa-cde898e02c04n%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/topbraid-users/deda2c9b-08c1-4d51-8dfa-cde898e02c04n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "TopBraid Suite Users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to topbraid-user...@googlegroups.com.
>>>>
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/topbraid-users/23302d9c-5e26-4b11-8449-7491452b402bn%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/topbraid-users/23302d9c-5e26-4b11-8449-7491452b402bn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "TopBraid Suite Users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to topbraid-user...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/topbraid-users/e9612855-1c65-46ec-a443-0543995dee60n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/topbraid-users/e9612855-1c65-46ec-a443-0543995dee60n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "TopBraid Suite Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to topbraid-user...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/topbraid-users/CABfSiRPnHm%3D9Rtj90ooPVeU2ZM4VmfuCh%3DhODqBF4sKFSjw6-A%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/topbraid-users/CABfSiRPnHm%3D9Rtj90ooPVeU2ZM4VmfuCh%3DhODqBF4sKFSjw6-A%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>>
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "TopBraid Suite Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to topbraid-user...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/topbraid-users/35D6D3A1-B948-4917-9BEC-06FD15498558%40topquadrant.com
>>  
>> <https://groups.google.com/d/msgid/topbraid-users/35D6D3A1-B948-4917-9BEC-06FD15498558%40topquadrant.com?utm_medium=email&utm_source=footer>
>> .
>>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "TopBraid Suite Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to topbraid-user...@googlegroups.com.
>
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/topbraid-users/CABfSiROSUWbBvp0NgZ4fYKRLqAPwes7Y8vRf%3DpPcjugtwiYJAg%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/topbraid-users/CABfSiROSUWbBvp0NgZ4fYKRLqAPwes7Y8vRf%3DpPcjugtwiYJAg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to topbraid-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/topbraid-users/ec341be2-ee9c-4955-a0aa-32d3d86ae465n%40googlegroups.com.

Reply via email to