Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • coscine/backend/libraries/semanticsearch
1 result
Select Git revision
Show changes
Commits on Source (3)
......@@ -5,7 +5,7 @@
<TargetFramework>net6.0</TargetFramework>
<AssemblyName>Coscine.SemanticSearch.Cmd</AssemblyName>
<RootNamespace>Coscine.SemanticSearch.Cmd</RootNamespace>
<Version>1.5.3</Version></PropertyGroup>
<Version>1.5.4</Version></PropertyGroup>
<ItemGroup>
<PackageReference Include="CommandLineParser" Version="2.9.1" />
......
......@@ -3,7 +3,7 @@
<TargetFramework>net6.0</TargetFramework>
<OutputType>Library</OutputType>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Version>1.5.3</Version></PropertyGroup>
<Version>1.5.4</Version></PropertyGroup>
<PropertyGroup>
<StartupObject />
<AssemblyName>Coscine.SemanticSearch.Tests</AssemblyName>
......
......@@ -175,14 +175,15 @@ namespace Coscine.SemanticSearch
var publicResources = new List<string>();
var resourceToProject = new Dictionary<string, string>();
var projectSlugs = new Dictionary<string, string>();
var structuredItems = new List<(IEnumerable<string>, DefaultTripleCreator)>();
structuredItems.AddRange(_rdfClient.GetAllProjects()
.Select((entry) => (entry, (DefaultTripleCreator) new ProjectTripleCreator())));
.Select((entry) => (entry, (DefaultTripleCreator) new ProjectTripleCreator(projectSlugs))));
structuredItems.AddRange(_rdfClient.GetAllResources()
.Select((entry) => (entry, (DefaultTripleCreator) new ResourceTripleCreator(publicResources, resourceToProject))));
structuredItems.AddRange(_rdfClient.GetAllMetadataIds()
.Select((entry) => (entry, (DefaultTripleCreator) new MetadataTripleCreator(publicResources, resourceToProject))));
.Select((entry) => (entry, (DefaultTripleCreator) new MetadataTripleCreator(publicResources, resourceToProject, projectSlugs))));
var totalCount = structuredItems.Sum((list) => list.Item1.Count());
......
......@@ -5,7 +5,7 @@
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<AssemblyName>Coscine.SemanticSearch</AssemblyName>
<RootNamespace>Coscine.SemanticSearch</RootNamespace>
<Version>1.5.3</Version>
<Version>1.5.4</Version>
<Nullable>enable</Nullable>
</PropertyGroup>
<PropertyGroup>
......
......@@ -12,13 +12,15 @@ namespace Coscine.SemanticSearch.TripleCreator
private static readonly Regex guidRegexPattern = new Regex(@"([0-9A-Fa-f]{8}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{12})");
private readonly IEnumerable<string> _publicResources;
private readonly IDictionary<string, string> _resourceToProject;
private readonly IDictionary<string, string> _projectSlugs;
private const string _resourcesPrefix = "https://purl.org/coscine/resources/";
public MetadataTripleCreator(IEnumerable<string> publicResources, IDictionary<string, string> resourceToProject)
public MetadataTripleCreator(IEnumerable<string> publicResources, IDictionary<string, string> resourceToProject, IDictionary<string, string> projectSlugs)
{
_publicResources = publicResources;
_resourceToProject = resourceToProject;
_projectSlugs = projectSlugs;
}
public override Document CreateFields(IGraph graph, ElasticsearchIndexMapper indexMapper)
......@@ -29,6 +31,7 @@ namespace Coscine.SemanticSearch.TripleCreator
Uris.COSCINE_SEARCH_ABSOLUTEFILENAME,
Uris.COSCINE_SEARCH_FILENAME,
Uris.COSCINE_SEARCH_GRAPHNAME,
Uris.COSCINE_SEARCH_HOMEPAGE,
Uris.COSCINE_SEARCH_VERSION,
Uris.COSCINE_SEARCH_STRUCTURE_TYPE,
Uris.COSCINE_PROJECTSTRUCTURE_IS_PUBLIC_LONG
......@@ -67,6 +70,16 @@ namespace Coscine.SemanticSearch.TripleCreator
case Uris.COSCINE_SEARCH_GRAPHNAME:
result.Add(label, ReceiveGraphName(graph));
break;
case Uris.COSCINE_SEARCH_HOMEPAGE:
if (_resourceToProject.ContainsKey(resourceId) && _projectSlugs.ContainsKey(_resourceToProject[resourceId]))
{
result.Add(label, $"https://coscine.rwth-aachen.de/p/{_projectSlugs[_resourceToProject[resourceId]]}/r/{resourceId}/#/{ReceivePath(graph, true)}");
}
else
{
result.Add(label, ReceiveGraphName(graph));
}
break;
case Uris.COSCINE_SEARCH_VERSION:
if (graph.BaseUri.ToString().Contains("version="))
{
......
......@@ -10,6 +10,12 @@ namespace Coscine.SemanticSearch.TripleCreator
public class ProjectTripleCreator : DefaultTripleCreator
{
private static readonly Regex guidRegexPattern = new Regex(@"([0-9A-Fa-f]{8}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{4}[-][0-9A-Fa-f]{12})");
private readonly IDictionary<string, string> _projectSlugs;
public ProjectTripleCreator(IDictionary<string, string> projectSlugs)
{
_projectSlugs = projectSlugs;
}
public override Document CreateFields(IGraph graph, ElasticsearchIndexMapper indexMapper)
{
......@@ -23,6 +29,11 @@ namespace Coscine.SemanticSearch.TripleCreator
var result = new Document();
var projectId = Guid.Parse(guidRegexPattern.Match(graph.BaseUri.ToString()).Value); // Handle null.Value case?
var slugTriple = graph.GetTriplesWithPredicate(new Uri("https://purl.org/coscine/terms/project#slug")).FirstOrDefault();
if (slugTriple != null && slugTriple.Object is ILiteralNode && !_projectSlugs.ContainsKey(projectId.ToString()))
{
_projectSlugs.Add(projectId.ToString(), (slugTriple.Object as ILiteralNode).Value);
}
foreach (var property in coscineFields)
{
......
......@@ -88,6 +88,7 @@ namespace Coscine.SemanticSearch.Util
public const string COSCINE_SEARCH_ABSOLUTEFILENAME = "https://purl.org/coscine/terms/search#absoluteFileName";
public const string COSCINE_SEARCH_FILENAME = "https://purl.org/coscine/terms/search#fileName";
public const string COSCINE_SEARCH_GRAPHNAME = "https://purl.org/coscine/terms/search#graphName";
public const string COSCINE_SEARCH_HOMEPAGE = "https://purl.org/coscine/terms/search#homepage";
public const string COSCINE_SEARCH_VERSION = "https://purl.org/coscine/terms/search#version";
public const string COSCINE_SEARCH_BELONGS_TO_PROJECT = "https://purl.org/coscine/terms/search#belongsToProject";
public const string COSCINE_SEARCH_STRUCTURE_TYPE = "https://purl.org/coscine/terms/search#structureType";
......